За последние 24 часа нас посетили 16609 программистов и 1646 роботов. Сейчас ищут 977 программистов ...

помогите с backup'ом MySQL базы через php скрипт

Тема в разделе "PHP и базы данных", создана пользователем Denisk, 20 май 2008.

  1. Denisk

    Denisk Активный пользователь

    С нами с:
    20 май 2008
    Сообщения:
    1
    Симпатии:
    0
    Привет всем,
    Может ли кто нить помочь с такой проблемой?
    Пытаюсь сделать backup MySQL базы данных через php скрипт, используя mysqldump. Скрипт таков:

    <?php
    $host = "hostname";
    $database = "databasename";
    $user = "username";
    $pass = "password";

    $dbh = mysql_connect($host, $user, $pass) or die ("Can't connect to MySQL");
    mysql_select_db($database) or die ("Can't connect to db");

    $bckp_file = $database.date("Y-m-d-H-i-s").".sql";
    $command = "c/wamp/mysql/bin/mysqldump --add-drop-table --add-drop-database -u $user -p $pass $database > $bckp_file";

    system ($command);

    ?>

    В результате создаеться пустой .sql файл и никакого dump’a в нем нету. Если запускаю содержание переменной $command через коммандную строчку в WinXP получаю полноценны dump. Кто подскажет, где ошибка в скрипте?
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1. <?php
    2. $user = 'root';
    3. $password = 'qwerty';
    4. $database = 'test';
    5. $backfile = $database . date('-d-m-Y-H-i-s') . '.sql';
    6.  
    7. $command = "mysqldump --add-drop-table -u {$user} --password={$password} {$database} > {$backfile}";
    8. exec($command);
    Всё Ок.
     
  3. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    реальный бекапщик с hosting.440hz.ru

    Код (Text):
    1.  
    2. hosting(root):/disk2/backup#>cat backup.sh
    3. #!/bin/sh
    4.  
    5. rootdir="/disk2/backup/"
    6. olddt=`date -v-5d '+%Y.%m.%d'`
    7. dt=`date '+%Y.%m.%d'`
    8.  
    9. echo Backup started at ${dt} in ${rootdir}
    10.  
    11. ##########################################################
    12.  
    13. echo -n "Removing old ${olddt} backup files... "
    14. rm -rf ${rootdir}${olddt}.*
    15. echo done
    16.  
    17. ##########################################################
    18.  
    19. #target="${rootdir}${dt}.httpd.tar.gz"
    20. #source="/usr/local/etc/apache2/Includes/"
    21.  
    22. #echo -n "TAR Zipping ${source} to ${target}... "
    23. #tar -z -c -f ${target} -P ${source}
    24. #chown root:wheel ${target}
    25. #chmod 400 ${target}
    26. #echo done
    27.  
    28. ##########################################################
    29.  
    30. target="${rootdir}${dt}.etc.tar.gz"
    31. source="/etc/"
    32.  
    33. echo -n "TAR Zipping ${source} to ${target}... "
    34. tar -z -c -f ${target} -P ${source}
    35. chown root:wheel ${target}
    36. chmod 400 ${target}
    37. echo done
    38.  
    39. ##########################################################
    40.  
    41. target="${rootdir}${dt}.usr.local.etc.tar.gz"
    42. source="/usr/local/etc/"
    43.  
    44. echo -n "TAR Zipping ${source} to ${target}... "
    45. tar -z -c -f ${target} -P ${source}
    46. chown root:wheel ${target}
    47. chmod 400 ${target}
    48. echo done
    49.  
    50. ##########################################################
    51.  
    52. user="root"
    53. pass="*****"
    54.  
    55. filename="${rootdir}${dt}.sql"
    56.  
    57. echo -n "mysqldump start to ${filename}... "
    58. /usr/local/bin/mysqldump -q -c -Q --add-drop-table --all-databases --user=${user} --pass=${pass} > $filename
    59. chown root:wheel ${filename}
    60. chmod 400 ${filename}
    61. echo -n "zipping ${filename}... "
    62. gzip -f -q ${filename}
    63. echo done
    64.  
    65. ##########################################################
    66.  
    67. target="${rootdir}${dt}.www.tar.gz"
    68. source="/usr/www/"
    69.  
    70. echo TAR Zipping ${source} to ${target}
    71. tar -z -c -f ${target} -P ${source}
    72. chown root:wheel ${target}
    73. chmod 400 ${target}
    74. echo done
    75.  
    76. ##########################################################
    77.  
    78. echo
    79. echo
    80. ls -la  ${rootdir}
    81.  
    82. ##########################################################
    83.  
    84. echo
    85. echo
    86. find /usr/www/ -ctime -1d | sort
    87.  
    88. #
    89. #
    90. #
    91. hosting(root):/disk2/backup#>lsl
    92. total 57143336
    93. drwx------  2 root  wheel         1024 20 ìàé 06:00 ./
    94. drwxrwxr-x  8 root  ftp            512 25 àïð 07:07 ../
    95. -r--------  1 root  wheel       329239 16 ìàé 06:00 2008.05.16.etc.tar.gz
    96. -r--------  1 root  wheel     10715109 16 ìàé 06:00 2008.05.16.sql.gz
    97. -r--------  1 root  wheel       400536 16 ìàé 06:00 2008.05.16.usr.local.etc.tar.gz
    98. -r--------  1 root  wheel  11665153412 16 ìàé 08:37 2008.05.16.www.tar.gz
    99. -r--------  1 root  wheel       329239 17 ìàé 06:00 2008.05.17.etc.tar.gz
    100. -r--------  1 root  wheel     10693190 17 ìàé 06:00 2008.05.17.sql.gz
    101. -r--------  1 root  wheel       400536 17 ìàé 06:00 2008.05.17.usr.local.etc.tar.gz
    102. -r--------  1 root  wheel  11693519801 17 ìàé 08:13 2008.05.17.www.tar.gz
    103. -r--------  1 root  wheel       329239 18 ìàé 06:00 2008.05.18.etc.tar.gz
    104. -r--------  1 root  wheel     10703338 18 ìàé 06:00 2008.05.18.sql.gz
    105. -r--------  1 root  wheel       400536 18 ìàé 06:00 2008.05.18.usr.local.etc.tar.gz
    106. -r--------  1 root  wheel  11693519629 18 ìàé 08:28 2008.05.18.www.tar.gz
    107. -r--------  1 root  wheel       329239 19 ìàé 06:00 2008.05.19.etc.tar.gz
    108. -r--------  1 root  wheel     10701935 19 ìàé 06:00 2008.05.19.sql.gz
    109. -r--------  1 root  wheel       400536 19 ìàé 06:00 2008.05.19.usr.local.etc.tar.gz
    110. -r--------  1 root  wheel  11693520311 19 ìàé 08:08 2008.05.19.www.tar.gz
    111. -r--------  1 root  wheel       329239 20 ìàé 06:00 2008.05.20.etc.tar.gz
    112. -r--------  1 root  wheel          545 20 ìàé 06:00 2008.05.20.sql.gz
    113. -r--------  1 root  wheel       400536 20 ìàé 06:00 2008.05.20.usr.local.etc.tar.gz
    114. -r--------  1 root  wheel  11693531274 20 ìàé 07:18 2008.05.20.www.tar.gz
    115. -r-x------  1 root  wheel         1947 11 ìàð 13:59 backup.sh*
     
  4. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    sypex.net рулит
     
  5. toilet_patrol

    toilet_patrol Активный пользователь

    С нами с:
    9 янв 2010
    Сообщения:
    2
    Симпатии:
    0
    если в $command добавить "2> bckp.log" в конце, то в логе скорее всего будет сказано:

    И все ок будет, если прописать полный путь d:/.../mysqldump.exe (с такими слешами).

    Я это написал, потому что пока только это и выяснил, вдруг кому-то поможет. Вразумительного ответа, как найти mysqldump, я пока не нашел. Комманды type mysqldump, whereis mysqldump, locate mysqldump, which mysqldump не работают (по крайней мере на win32 сервере).