Michael Capobianco Asked: 2013-02-05 10:38:19 +0800 CST2013-02-05 10:38:19 +0800 CST 2013-02-05 10:38:19 +0800 CST MySQL 时间点恢复只是一个单一的模式? 772 是否可以简单地恢复单个模式并将其恢复到某个时间点(比如三个小时前)而不恢复整个数据库? 我可以想到一种冗长的方法,即目前单独备份每个模式,将数据库恢复三个小时并将所有其他模式(除了您要回滚的模式)恢复到当前时间。 还有其他方法吗?还是我没有正确理解二进制日志? mysql backup 1 个回答 Voted Best Answer RolandoMySQLDBA 2013-02-05T10:59:13+08:002013-02-05T10:59:13+08:00 您可以使用 对具有数据和时间范围的所有二进制日志使用mysqlbinlog实用程序。您必须命名要提取的数据库: 开始日期时间 停止日期时间 数据库 (-d) 例如,假设您有以下场景 你有这些二进制日志 mysql-bin.000019 mysql-bin.000020 mysql-bin.000021 mysql-bin.000022 二进制日志从2013-01-30 09:30:00到2013-02-04 12:00:00 您有来自2013-02-03 00:00:00( mysqldata-20130203.sql)的完整备份 您想从 2013 年 2 月 3 日下午 2:45 恢复 MyProdDB2013-02-03 14:45:00 #STEP 01) 从二进制日志中获取所有数据库更改 DB=MyProdDB BEG_DT="2013-02-03 00:00:00" END_DT="2013-02-03 14:45:00" BINLOGS="mysql-bin.000019 mysql-bin.000020 mysql-bin.000021 mysql-bin.000022" mysqlbinlog -d ${DB} --start-datetime="${BEG_DT}" --stop-datetime="${END_DT}" ${BINLOGS} > mysqldata-delta.sql #STEP 02) 将数据加载到名为的暂存数据库中MyProdDBStaging mysql -u... -p... -DMyProdDBStaging < mysqldata-20130203.sql #STEP 03) 将 Delta 加载到名为的暂存数据库中MyProdDBStaging mysql -u... -p... -DMyProdDBStaging < mysqldata-delta.sql 现在,目标数据库将是MyProdDB2013 年 2 月 3 日下午 2:45 的点和时间实例。 试试看 !!!
您可以使用
对具有数据和时间范围的所有二进制日志使用mysqlbinlog实用程序。您必须命名要提取的数据库:
例如,假设您有以下场景
2013-01-30 09:30:00
到2013-02-04 12:00:00
2013-02-03 00:00:00
(mysqldata-20130203.sql
)的完整备份2013-02-03 14:45:00
#STEP 01) 从二进制日志中获取所有数据库更改
#STEP 02) 将数据加载到名为的暂存数据库中
MyProdDBStaging
#STEP 03) 将 Delta 加载到名为的暂存数据库中
MyProdDBStaging
现在,目标数据库将是
MyProdDB
2013 年 2 月 3 日下午 2:45 的点和时间实例。试试看 !!!