情况:我们的生产mysql数据库每天都会转储到.sql文件中。我想保留一个相对最新的影子数据库 我知道要从.sql文件创建一个mysql数据库,可以使用:
mysql -u USERNAME -p DATABASENAME < FILE.SQL
对于我们的数据库,这需要4-5个小时。毋庸置疑,我想减少它,我想知道是否有办法用新的/更改的内容更新数据库。在第2天,是否可以使用从生产数据库转储的新.sql文件更新我的影子数据库?
答案 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;在生产中删除记录并使用此条件删除备份数据库中的记录。