注意:
1、主从切换比较危险,不到万不得已不推荐执行
2、在启动从库的时候必须先把数据同步(确保从库状态为has read all relay log)
3、主库要锁表,停止写入(flush tables with read lock; set global read_only = on;)避免主从切换时的命令操作导致主从继续同步,也可以通过修改主库配置文件/etc/my.cnf.加入read-only=1参数
4、删除新的主服务器数据库目录中的master.info和relay-log.info文件,否则下次重启还会按照从服务器来启动,有可能会覆盖掉你的数据库
一、从库变主库:
msyql> stop slave io_thread; 用show processlist来查看从库状态是否为has read all relay log
mysql>stop slave; 停掉IO和SQL线程
mysql>reset slave; 让从服务器忘记其在主服务器的二进制日志中的复制位置,它会删除master.info和relay-log.info文件,以及所有的中继日志,并产生一个新的中继日志
mysql>reset master; 重置成主数据库
mysql>show master status \G
File: mysql-bin.000001
position:107
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row inset (0.00 sec
二、主库变从库:
mysql>flush tables with read lock;
mysql>set global read_only = on;
mysql>reset slave; #新建中继日志
mysql> change master to master_host='192.168.11.12',master_user='replication',master_password='replication',master_log_file='mysql-bin.000001',master_log_pos=107;
mysql>start slave;
reset master 删除主的binlog reset slave 删除从的中继日志
三、重启主和从库
service mysqld restart