mysql主从-热添加从库

kailon 9年前

来自: http://my.oschina.net/swingcoder/blog/619074


为了尽量减少对业务的影响,使用从某台从库热拷贝数据的方法来添加从库。此种方法优点是比较快速。在运营环境选择闲时操作。

添加从库的步骤

0、新的从库安装好,不要启动和初始化数据,其数据和配置将从旧的从库复制过去

1、将主库置于只读状态,不允许写入

flush  tables with read lock;

#这步会影响业务,如果关系不大可执行。一般情况不能只开主库不开从库同步,因为应用层一般会去从库取数据,如果没有同步,取不到数据,会导致业务混乱!为安全起见,可以临时锁表或业务下线,彻底断绝新数据的更新。

2、将从库停止同步

stop slave;

3、对从库数据库打包

tar -zcvf mysql-data.tar.gz mysql/

#注意!!如果压缩很慢,或出现压缩时文件有修改,则不要再压缩了,因为数据有变化,请检查上面的步骤是否彻底关掉了数据写入的可能。ib_logfile0 有变动好像没有影响。

4、将打包文件传输到另外一台机器

scp mysql-data.tar.gz x.x.x.x:/data/mysql

将从库的my.cnf传到新的从库(注意新的从库安装了mysqld,但不要启动),在新的从库修改my.cnf里的server_id参数

scp /etc/my.cnf x.x.x.x:/etc/

5、恢复主库读写状态

unlock tables;

6、恢复其他从库同步进程

start slave

7、配置新的从库

删除 mysql/auto.conf文件,里面标识了从库uuid

8、启动新的从库

service mysqld start

mysql>show slave status\G

检查是否正常。对比master 的log position与从库的Exec_Master_Log_Pos是否一致。