近期机房要搬迁,如何将数据库快速安全地切换到新的机房是是一个不小的问题,首先要保证迁移过去的数据是完整有效的,还要保证迁移的速度快速地迁移过去,不能停服太长时间.
如果要保证数据的完整性,最好的做法就是停止,不在向数据库中写入数据了,全备份后在新的DB上恢复,但是这样的话大量的数据可能会消耗几个小时的时间来备份和恢复数据,停止几个小时的时间会让人觉得崩溃,所以比较好的方案是提前做一个全备,并且新开始一个二进制日志,然后在迁移的时候把二进制日志转移过去, 在全备的基础上做增量.
移第一步:先将DB做全备,并转移大部分数据,很幸运的是 mysqldump 提供了这样的功能!
mysqldump -F --lock-tables -u root -p db > /tmp/mysql_full_bak.sql //phpfensi.com
-F 参数的目的是启用一个新的二进制日志文件,这样的话在第二步的时候就可以对全备之后的二进制日志进行增量恢复了.
--lock-tables 这个很重要,在备份的过程中锁表, 保证数据的完整性.
-u 用户名 - p 要输入密码 db 要备份的数据库
备份完了之后就会开启一个新的二进制日志
迁移第二步:将增量的数据转移到新机房
mysqlbinlog ./mysql-bin.000016 > mysql -u root -p db