当前系统情况
主库:10.100.4.226
从库:10.100.4.224,10.100.4.227
现在想把主库切换到10.100.4.227
需要执行下面的操作
1. 创建主从同步用户
在224和227上创建同步账户(226已经有了和227的同步账户)
在227上执行:
mysql>grant all privileges on *.* to 'repl'@'10.100.4.224' identified by 'repl' with grant option;
在224上执行:
mysql>grant all privileges on *.* to 'repl'@'10.100.4.227' identified by 'repl' with grant option;
2. 修改机器标志
修改3台机器的my.cnf文件
新主库227
server-id = 1
旧主库226
server-id = 3
旧从库224不用修改,保持原来的就行了,只要不重。
my.cnf中的其他设置不用修改。
3. 设置同步位置
在新主库227上执行:show master status;
mysql> show master status;
+------------------+----------+--------------+--------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+--------------------------+
| mysql-bin.000001 | 98 | test | mysql,information_schema |
+------------------+----------+--------------+--------------------------+
1 row in set (0.00 sec)
记住File和position的值。
4. 建立关联
为了避免风险,新主库mysql现在最好不要对外提供服务,就是说主mysql的已有数据不要在动了。 执行下面锁表的命令:
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
把两个从库224和226都停掉,从主库中复制数据到两个从库,直接压缩主库数据库的目录test,然后传到两个从库上解压就可以了
。
5. 启动主从
启动从库224和226的数据,
在224上
先执行停止slave的命令
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
然后执行
mysql> change master to master_host='10.100.4.227',master_port=3306,master_user='repl',master_password='repl',master_log_file='mysql-bin.000001',master_log_pos=98;
然后执行
mysql> start slave;
在226上
先执行:
mysql> change master to master_host='10.100.4.227',master_port=3306,master_user='repl',master_password='repl',master_log_file='mysql-bin.000001',master_log_pos=98;
然后执行
mysql> start slave;
启动主库227上的mysql
先执行
mysql>unlock tables;解除锁表
在slave端执行:show slave status \G ;
察看Slave_IO_State,一般应该为"Waiting for master to send event";
此时Slave_IO_Running和Slave_SQL_Running应该为yes,如果不是,在slave端执行: stop slave; start slave; 重启复制进程。
Replicate_Do_DB为要复制的数据库,和my.cnf配置的相同。
在master端执行:
mysql> show master status;
对比File, Position的值和上面slave端的Master_Log_File,Read_Master_Log_Pos,两边相同则表示搭建完成。
6. 测试
在主库227上执行建表,插入,删除,修改等操作,看看slave是否同步了。
停掉salve,然后执行上面的操作,然后启动从库,看看是否同步了。