如何使用.sql文件对mysql数据库进行增量备份?

时间:2012-07-21 15:12:51

标签: mysql sql-update

情况:我们的生产mysql数据库每天都会转储到.sql文件中。我想保留一个相对最新的影子数据库 我知道要从.sql文件创建一个mysql数据库,可以使用:

mysql -u USERNAME -p DATABASENAME < FILE.SQL

对于我们的数据库,这需要4-5个小时。毋庸置疑,我想减少它,我想知道是否有办法用新的/更改的内容更新数据库。在第2天,是否可以使用从生产数据库转储的新.sql文件更新我的影子数据库?

3 个答案:

答案 0 :(得分:1)

使用mysql同步可以解决此问题。

答案 1 :(得分:1)

答案 2 :(得分:1)

MySQL复制是可行的方法。

但是,如果无法做到这一点,请使用以下程序

在所有表中都有一个修改后的时间戳列,并在插入/更改行时更新此值。

使用以下mysqldump选项获取增量SQL文件(这使用REPLACE命令而不是insert命令,因为现有记录将在备份数据库中更新)。

将时间戳值保留在文件系统中的某处。并在where条件下使用它。 MDFD_DATE是您需要过滤的列名称。成功备份后,更新存储在文件中的值。

skip-tz-utc可防止MSQL根据您的时区自动调整时间戳值。

  

mysqldump --databases db1,db2 --user = user --password = password --no-create-info --no-tablespaces --replace --skip-tz-utc --lock-tables --add -locks --compact --where = MDFD_DATE&gt; =&#39; 2012-06-13 23:09:42&#39; --log-error = dump_error.txt --result-file = result.sql

使用新的sql文件并在服务器中运行它。

<强>限制:

如果在数据库中删除了某些记录,则此方法无效。您需要从备份数据库中手动删除它们。否则,请保留DEL_FLAG列并将其更新为&#39; Y&#39;在生产中删除记录并使用此条件删除备份数据库中的记录。