通过一番深思熟虑(google),最终决定了如下方案:mysql
1.在新服务器上搭建mysql,并做为"从"服务器 2.使用innobackupex在不中止旧mysql服务的状况下顺利备份数据到从数据库 3.将从服务器提高为主服务器,旧项目代码的数据库链接方式改成远程链接新数据库 4.在新服务器上部署项目代码,域名解析到新服务器,在彻底生效以前,旧服务器还须要承担一部分请求 5.观察旧服务器请求日志,当没有请求后完全删除旧代码和旧数据库,完成整个迁移sql
主从搭建要注意的是数据库版本最好保持一致,至少保证大版本号一致,从数据库小版本号不要低于主数据库数据库
主从搭建比较简单,大体分为如下步骤服务器
1.修改主数据库my.cnf,设置server_id 2.修改从数据库my.cnf 设置server_id 3.修改从数据库my.cnf 设置replicate-do-db来指定你想要同步的数据库名称,多个写多行,若想同步全部,则不要设置这个参数 4.主数据库上建立同步账号并受权,给从服务器用的 5.从数据库上配置slave 此时不要启动slave,等数据库备份过来再启动google
具体步骤能够参考这篇文章: http://369369.blog.51cto.com/319630/790921/.net
经过innobackupex备份指定的数据库,将备份文件传到从数据库所在服务器,恢复数据。线程
备份过程参考这篇文章: http://blog.csdn.net/zhu19774279/article/details/49681767日志
start slave;
一条sql语句,简单!不要忘了查看状态 show slave status\G
前面的主从设置文章里有说明,这里就不啰嗦了code
#查看主库状态 show processlist; Master has sent all binlog to slave; waiting for binlog to be updated show master status \G #从库中止 IO_THREAD 线程 stop slave IO_THREAD; show processlist; Slave has read all relay log; waiting for the slave I/O thread to update it show slave status \G #从库切换为主库 stop slave; reset master; reset slave all; show master status \G #激活账户 SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; GRANT REPLICATION SLAVE ON *.* TO 'slave_passport'@'10.10.16.51' IDENTIFIED BY 'slave_passport'; FLUSH PRIVILEGES; #切换原有主库为从库 reset master; reset slave all; CHANGE MASTER TO MASTER_HOST='10.10.16.24', MASTER_USER='slave_passport', MASTER_PASSWORD='slave_passport', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=804497686; #检查主库 SHOW PROCESSLIST; show master status \G #启动从库 SHOW PROCESSLIST; start slave; show slave status \G