每天晚上(太平洋标准时间晚上8点)我都会对我的生产数据库(innoDB引擎)进行全局备份。
继承mysqldump命令:
mysqldump -u$MYSQLUSER -p$MYSQLPWD -h$MYSQLHOST -Q -c -C --add-drop-table --add-locks --quick --lock-tables surveys > $MYSQLBACKUPDIR/surveys.$NOW.sql;
备份大约需要45分钟,并生成一个480 MB的sql文件。 在此备份期间,我网站的某些用户可能会遇到错误(500)
这是我在apache错误日志中找到的内容:
[Sun Dec 10 20:32:58.028079 2017] [:error] [pid 10921] DBD::mysql::db commit failed: MySQL server has gone away at /var/www/---.pl line 17.\n
这是我试图解决这个问题的方法:
但没有成功:(
答案 0 :(得分:0)
可能是锁定表,但我可能错了。您可以使用以下代码而不是参数--lock-tables
--single-transaction --lock-tables=false
。这样你的转储将是一致的,但不会长时间锁定表
此外 - 如果可以,尝试使用innobackupex。但是备份和恢复单个数据库要比使用mysqldump复杂得多。这里有一些细节: https://www.percona.com/forums/questions-discussions/percona-xtrabackup/10131-backing-up-and-restoring-a-single-database