0

我正在使用以下命令在MySQL

mysqldump -uusername -ppassword db_name --flush-logs > D:\dbname_incremental_backup.sql

然而,该sql文件与完整备份一样大,显然导入它也需要很长时间。谁能告诉我如何创建增量备份并仅从每个增量备份中导入新数据,而不是再次导入整个数据库?

我已经阅读了 dev.mysql.com 中的所有相关文章,但仍然不明白该怎么做。

4

2 回答 2

2

mysqldump仅创建完整备份。增量备份没有内置功能。

对于那种事情,您可能需要Percona xtrabackup但这仅适用于 InnoDB 表。这通常不是问题,因为使用 MyISAM 表被认为是极其有害的。

于 2013-01-30T17:05:17.267 回答
1

默认情况下,mysql 转储将删除表,从而无法进行增量更新。如果您打开生成的文件,您将看到如下内容: DROP TABLE IF EXISTS `some_table_name`;

您可以使用--no-create-info选项创建转储而不转储和创建新表。为了使您的转储对增量导入友好,您还应该使用 --skip-extended-import 它将插入拆分为每行一个插入语句。结合 using --forceon import 将意味着插入存在的行将失败,但导入将继续。您最终会在日志中看到已经存在的行的错误,但会根据需要插入新行。

您应该可以使用以下命令导出(我还建议不要在命令中输入密码,以免它出现在您的历史记录中) mysqldump -u username -p --no-create-info --skip-extended-insert db_name --flush-logs > D:\dbname_incremental_backup.sql

然后,您可以使用以下命令导入: mysql -u username -p --force db_name < D:\dbname_incremental_backup.sql

于 2018-07-24T05:22:28.757 回答