博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql运维管理-一主多从宕机从库切换主库继续和从库同步过程16
阅读量:5975 次
发布时间:2019-06-20

本文共 2721 字,大约阅读时间需要 9 分钟。

1.主库master 宕机

登录从库show processlist\G

看两个线程的更新状态

mysql> show processlist\G*************************** 1. row *************************** Id: 1   User: system user   Host:  db: NULLCommand: Connect   Time: 22997  State: Waiting for master to send event   Info: NULL*************************** 2. row *************************** Id: 2   User: system user   Host:  db: NULLCommand: 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: NULLCommand: Query   Time: 0  State: NULL   Info: show processlist3 rows in set (0.00 sec)

登录从库分别查看master.info

cat /data/3307/data/master.infocat /data/3308/data/master.info

确保更新完毕,看两个从库哪个库的binlog位置最靠前更新最快,经过测试没有延迟的情况POS差距很小,甚至是一致的。

[root@mysql ~]# sed -n "2,3p" /data/3307/data/master.info mysql-bin.000010633

选更新最快,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

转载于:https://www.cnblogs.com/zywu-king/p/8563504.html

你可能感兴趣的文章
Linux jdk配置
查看>>
怎么开启JavaScript ?
查看>>
Linux 查看进程被杀死的详情
查看>>
Python 编码问题
查看>>
http缓存机制和原理详解
查看>>
插件使用之加载自定义lua脚本
查看>>
定时发送服务器运行数据并设置阀值警报方法
查看>>
JavaScript时间日期格式转化
查看>>
os:进程与线程问题
查看>>
Java: 数据类型
查看>>
我的友情链接
查看>>
曼彻斯特编码
查看>>
Python OpenCV学习笔记之:使用Grabcut算法进行图像背景和前景分割
查看>>
2月上旬国内域名总量止跌回升 净增长量达8574个
查看>>
static的用法
查看>>
MSSQL 2008 数据库变成可疑状态
查看>>
交叉编译Open***-2.4.3
查看>>
Linux rpm 命令参数使用详解
查看>>
阿里云移动端播放器高级功能---直播时移
查看>>
455. Assign Cookies - LeetCode
查看>>