1.主库master 宕机
登录从库show processlist\G
看两个线程的更新状态
mysql> show processlist\G
*************************** 1. row ***************************
Id: 1
User: system user
Host:
db: NULL
Command: Connect
Time: 22997
State: Waiting for master to send event
Info: NULL
*************************** 2. row ***************************
Id: 2
User: system user
Host:
db: NULL
Command: Connect
Time: 21500
State: Slave has read all relay log; waiting for the slave I/O thread to update it
Info: NULL
*************************** 3. row ***************************
Id: 6
User: root
Host: localhost
db: NULL
Command: Query
Time: 0
State: NULL
Info: show processlist
3 rows in set (0.00 sec)
登录从库分别查看master.info
cat /data/3307/data/master.info
cat /data/3308/data/master.info
确保更新完毕,看两个从库哪个库的binlog位置最靠前更新最快,经过测试没有延迟的情况POS差距很小,甚至是一致的。
[root@mysql ~]# sed -n "2,3p" /data/3307/data/master.info
mysql-bin.000010
633
选更新最快,POS最大作为主库
或利用同步的功能直接选择做了实时同步的这个从库。
授权同步用户和主库一样
如果只是主库宕机,服务器还能起来还需要把主库的binlog拉下来,在从库补全把差距补回来。然后把这个从库作为主库。
步骤:
(1)确保所有relay log全部更新完毕
在每个从库上执行stop slave io_thread;show processlist
直到看到Slave has read all relay log 表示从库更新都执行完毕。
(2)登录从库
mysql –uroot –p123456 –S /data/3307/mysql.sock -e "Stop slave;Retset masterQuit"
Stop slave :停止同步
Retset master :删除所有的binglog日志文件,并将日志索引文件清空,重新开始所有新的日志文件
Quit
(3)进到从库数据库数据根目录 删除master.info relay-log.info
cd /data/3307/data/
rm –f master.info relay-log.info
检查授权表,read-only等参数,如果配置了这些参数要清理一下
(4)3307提升从库为主库
vim /data/3307/mysql-bin
开启:
log-bin = /data/3307/mysql-bin
如果存在log-slave-updates read-only等一定注释掉
重启mysql服务/data/3307/mysql restart
到此为止。提升主库完毕
(5)如果主库服务器没宕机需要去主库拉取binlog补全提升主库的从库
(6)其他从库的操作
已检查(同步user rep局存在)
登录从库更改主库master_host参数
Stop slave;
Change master to master_host =’192.168.1.115’;如果不同步就指定位置点
Start slave;
Show slave status\G
如果不同步分析新生成的主库的binlog接着往下同步。
(7)修改程序配置文件从主数据库指定从数据库
如果访问数据库用域名,直接可以修改hosts解析。
(8)修理损坏的主库完成作为从库使用或者切换
提示更多恢复信息参考mysql手册第六章的FAQ。
2.主库以外宕机,例如:我们有计划切换,怎么做呢 ?
a.主库锁表 ,设置同步参数change master
b.登录所有的库查看同步状态,是否完成。
3.Mysql5.5支持半同步
一个插件
一主多从主库宕机如何恢复,通过master.info确定新主库。
半同步下的一主多从恢复直接对设置半同步的从库确定为主库。
让某一个稳定从库和主库完全一致,即主库和这个从库都更新数据完毕,在返回给用户更新成功。
优点:
确保至少一个从库和主库数据一致
缺点:
主从之间网络延迟或者从库有问题时候,用户体验很差当然可以设置超时时间10秒。
4.从库slave宕机
恢复方法:重做slave
a.导入数据
mysql –uroot –p123456 –S /data/3307/mysql.sock < test.sql &
b.配置从库同步参数Change master
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.1.115', 主库的IP
-> MASTER_PORT=3306, 主库的端口,从库端口可以和主库不同
-> MASTER_USER='rep',主库上建立的用于复制的用户rep
-> MASTER_PASSWORD='123456', 这里是rep的密码
-> MASTER_LOG_FILE='mysql-bin.000036',这里是show master status;查看到的二进制日志文件名称注意不能有空格。
-> MASTER_LOG_POS=335;这里也是show master status时看到的二进制日志偏移量注意不能多空格。
c. 开启从库同步开关,查看同步状态
start slave;
show slave status\G