最近服务器从一家云(A云)上迁移到另外一家云(B云)上, 具体的过程如下
1. 数据库迁移, A云上的数据库有A-master和若干A-slave1, A-slave2, A-slave3..., 在B云上建立B-Master, B-slave1, B-slave2, B-slave3...
2. 把A-slave3去掉负载, 然后以锁表的方式dump出来数据, 在B-master上导入
mysqldump -uroot -p -E -R --default-character-set=utf8mb4 --master-data -A | gzip > all_backup.gz
3. 把B-master作为A-slave3的从库, 从A云上同步数据.
4. 把所有数据库设为只读,当完成同步之后,把B-master的写打开.
5. 把A上的nginx作为代理, 指向B云. 保证DNS没有生效之前老的服务器也是可用的.
6. 更改DNS.
如果中间过程中出错, 需要切回A, 并把B-master上的数据回流到A-master