2017-12-21 4 views
-5

나는이 스크립트가에 대한 PHP-PDO를 사용하는 방법 :MySQL의 백업 대신 시스템()

<?php 
$dbhost = "012.345.678.9"; 
$dbuser = "my_user_name"; 
$dbpass = "my_password"; 

system("mysqldump --extended-insert=FALSE --complete-insert=TRUE -h$dbhost -u$dbuser -p$dbpass --databases my_first_db my_second_db > file.sql"); 
?> 

내가 012.345.678.9에 백업 내 MySQL 데이터베이스를 원격 서버에서이 스크립트를 실행 해요입니다. 잘 작동합니다.

하지만 지금, 내 hoster는 보안상의 이유로 php system() 기능을 사용하지 않으며 PHP-PDO를 사용하도록 제안했습니다. (shell_exec도 사용할 수없는 것 같습니다.)

그러나 PDO를 사용하는 방법을 모르겠습니다. 어떤 아이디어?

+0

Google을 사용해 보셨습니까? –

+0

물론 그랬습니다. 대신에'shell_exec()'를 사용하여 찾았습니다. 그러나 이것 역시 비활성화되어 있습니다. 그리고이 한 줄의 코드와 같은 (생각할 수없는) 매우 긴 스크립트를 발견했습니다. – David

+0

여기에서 예제를 얻을 수 있습니다 : http://php.net/manual/en/ref.pdo-mysql.connection.php – halojoy

답변

1

많은 호스트가 호스팅 계정의 일부로 자동화 된 백업/복원 솔루션을 제공합니다. 귀하의 호스트 제공 업체와 더 이야기하고 그들이 PDO 이외의 것을 제안 할 수 있는지 알아보십시오. PDO 제안이 당신을위한 좋은 해결책이 아니라고 말하십시오. 간단한 백업/복원 솔루션을 원한다고 말합니다.

  • 호스트 제공 업체가 도움을 줄 수없는 경우 호스트 제공 업체를 변경하는 것이 좋습니다 (Lawrence Cherone이 제안한대로).

  • 호스트 공급자를 변경할 수없고 호스트 공급자로부터 더 이상 도움을받을 수없는 경우 2 단계 백업/복원에 대해 생각해보십시오. 1st - 데이터베이스 및 테이블 구조를 복원 할 SQL 쿼리를 만듭니다. 두 번째 - DATA를 파일에 저장하는 SQL 쿼리를 만듭니다. 이것은 PDO를 사용하여 쉽습니다

자동 PDO 쿼리는 현재 가지고있는 것과 유사한 데이터를 저장합니다. 데이터베이스를 복원해야 할 경우 그것은 두 단계의 과정이 될 것입니다 :

    데이터베이스 및 테이블 구조
  1. 을 실행하여 데이터를 복원하여 매일 백업에서 SQL을 재 구축
  2. 실행 SQL
0

백업 도구는 믿을 수 없을만큼 복잡하며 올바르게 작동하는 데 매우 중요합니다. 백업 및 복원은 가상 안전 장비이므로 응급 상황에서 어떤 데이터도 손실되지 않도록하십시오. 백업 도구의 맞춤 구현을 얼마나 잘 테스트하고 있습니까?

이론적으로 mysqldump의 기능을 PHP 코드로 복제 할 수 있습니다. 그러나 나는 한번 시도해 보았고 PHP와 MySQL 모두 전문가 인 나 같은 사람이라 할지라도 많은 일이 있다고 결론 지었다. 내 PHP 스크립트를 표준 mysqldump처럼 실행하려고 했으므로 MySQL 프로젝트의 테스트 스위트의 이점을 얻는다.

나는 1000 줄 넘는 PHP 코드를 썼는데 아마 50 % 만 완성되었다는 것을 알았습니다.

당신은 내가이 완료되지 않는주의로 쓴 코드를 확인하실 수 있습니다

,이 테스트를 통과하지 않고, 내가 신뢰할 수있는 백업 솔루션으로의 보장도하지 않습니다 :

요즘 PHP 코드를 작성하지 않아서 절대로 끝내지 않고 MySQL 백업을 수행하는 데 더 나은 도구를 사용할 수있는 환경에서 작업합니다.

백업을보다 간단하게 시도하는 PHP 스크립트가 몇 개 있지만 단순하지만 작동하지 않습니다. 예를 들어, NULL 문자, 문자 세트, 구분 식별자, 뷰, 트리거, 프로 시저 등을 처리하지 못했습니다.

최악의 아마추어 백업 도구는 모두 데이터를 단일 PHP로 가져 왔습니다. 문자열을 백업 파일에 쓰기 전에, PHP 메모리 한계를 넘을 수 있습니다. PHP Database Dump Script - are there any issues?

  • Why is my database backup script not working in php?
    • 그래서 난 강력하게 당신이하지 않는 자유 시간의 몇 달이 구현하고있는 백업 도구를 테스트에 보내고, 당신은 당신의 데이터베이스를 백업하는 또 다른 방법을 찾아 추천 PHP.

      호스팅 제공 업체가 system() 기능을 사용 중지 한 이유를 알고 있습니다. 이것은 PHP 환경을위한 일반적인 보안 수정입니다. 그러나 데이터베이스 백업을위한 다른 솔루션을 제공하지 않는다면 다른 호스팅 제공 업체로 전환하는 것을 고려해보십시오.