最终结果:主库可写,从库只读
首先保证主从数据库都开启二进制日志,方法是在my.cnf中的[mysqld]节中加入log-bin=log-bin-name
然后查看是否开启mysql> show variables; log-bin ON
为了在切换时不会漏掉数据库的更新,必须将主数据库停掉,设为只读:set global read_only=1; (注意和
FLUSH TABLES WITH READ LOCK;的区别,
UNLOCK TABLES;解锁)
show variables; 确认 read_only ON
然后在主库mysql> flush logs; 刷新一下log-bin,在从库中查看mysql> show slave status \G 是否完全更新
查看主库的状态mysql> show master status \G 是否还有数据更新
如果没有就可以停掉从库mysql> stop slave;
查看新主库的状态mysql> show master status \G 记录file和pos
这时可以关掉新主库的只读属性mysql> set global read_only=0;
新从库改变连接的主库信息mysql> change master to
master_host='new_master_ip',
master_user='mysqlsync',
master_password='pass',
master_port=3306,
master_log_file='mysql-bin.xxxxxx',
master_log_pos=xxxx;
这时可以启动新从库了:mysql> start slave;
查看新从库状态:mysql> show slave status\G