拖了很长时间才开始写这篇文章,本来打算上线之后第二天立刻开始记录的,一直有很多碎片事情要做。
基础是已经有一主一丛,或一主多从,由于业务需要增加新的丛库来分担读的压力。查看如何配置主从复制
不停机平滑加丛库主要原理是:
1、停掉当前的丛库同步 stop slave。做这一步之前需要需要代码层的改动,将这个从库从web业务脱离,建议访问量少时候操作。
2、查看丛库状态,show slave status 记下 Relay_Master_Log_file 和 Exec_Master_Log_Pos
3、备份丛库,Myisam直接打包文件拷贝到另一台机器就可以了。Innodb的可以用xtrabackup备份,数据量少可以直接用Navicat数据传输,或者mysqldump导出。
4、将数据库备份拷贝到待加丛库的机器,数据怎么弄过来方法很多,一定要保证拷贝过来的数据与上一个丛库的数据一致,数据表正常可用。
5、编辑配置文件 my.cnf 修改 server-id (不要与之前的丛库相同) replicate-do-db(同步的库) 这两个参数
6、在新丛库设置主库的连接信息change master to
master_host='192.168.0.xxx',
master_port=3306,
master_user='userdb_slave',
master_password='xxxxxxxxxxxxxxxxx',
master_log_file='mysql-bin.000169', # 上面记录的
master_log_pos=824721706; # 上面记录的
7、重启数据库,start slave 开启同步。show slave status
看这两个参数 Slave_IO_Running Yes Slave_SQL_Running Yes 那就证明主从正常了
8、不要忘了把上一个丛库开启同步 start slave,查看上一个丛库和新加丛库是否正常同步可用,最后加入到web业务代码里面。