环境说明:
Mysql 8.0.24 双主+keepalived
复制
问题现象:
同事反馈某套mysql数据库连接失败,
尝试重启数据库无法启动。
复制
问题分析:
远程登录服务器,尝试检查error日志,
发现cd无法进入到mysql目录,
ls和df命令无返回结果,卡住不动。
检查历史命令,发现近期有调整过本地路由。
复制
问题原因:
由于mysql目录是通过nas存储挂载到本地,
本地路由的调整,导致数据库服务器和NAS网络不通,
最终导致mysql目录挂载失败,无法读取到mysql对应文件。
复制
解决方案:
联系同事改回原路由配置,并同时重启了服务器。
复制
问题再起:
同事重启服务器后反馈数据库可以连接了,但是没数据了,库也没了?
远程登录到数据库服务器,发现当前启动的mysqld进程,
不是手动安装的mysql,而是系统自带的mysql,应该启动的是手动安装的mysql。
复制
ps -ef|grep mysql
检查当前mysql状态
systemctl status mysqld.service
停止系统自带mysql服务
systemctl stop mysqld.service
禁用开机自启动
systemctl disable mysqld.service
手动启动mysql
mysqld --defaults-file=/etc/my.cnf --user=mysql &
启动keepalived
systemctl start keepalived.service
同事反馈可以正常使用了。
复制
问题再再起:
过了一周后,同事反馈从库数据不对,少了很多新数据。
登录服务器检查发现slave进程居然没启动。
mysql> show slave status \G;
之前记得mysql启动时会自动启动salve进程的,
难道8.0.24版本默认是不启动slave进程?
由于对应系统之前还没有上线,之前在启动数据库后也没有仔细检查主从同步情况。
检查my.cnf配置,发现设置了skip_slave_start,不自动启动slave。
cat /etc/my.cnf|grep skip
skip-slave-start=1
mysql -uroot -p
Enter password:
mysql> show variables like '%skip_slave_start%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| skip_slave_start | ON |
+------------------+-------+
1 row in set (0.01 sec)
数据库架构是双主架构,两台mysql均没有启动slave。
复制
解决过程如下:
虽然当前是双主架构,但vip只存在一个节点上,也就是只有一个节点对外提供服务,
使用双主+keepalived的架构主要是为了故障自动切换功能。
所以两套mysql还是区分主从的。
1.检查主从数据库binlog保留时间。
2.检查需要的binglog是否存在。
3.先恢复从库slave。
4.待从库slave正常后,在恢复主库的slave。
复制
1.检查主从数据库binlog保留时间。
查看binlog过期时间为30天。
mysql> show variables like 'binlog_expire_logs_seconds';
+----------------------------+---------+
| Variable_name | Value |
+----------------------------+---------+
| binlog_expire_logs_seconds | 2592000 |
+----------------------------+---------+
1 row in set (0.01 sec)
复制
2.检查需要的binglog是否存在。
主从都需要检查。
需要mysql-bin.000007开始的binlog日志。
mysql> show slave status\G;
...
Master_Log_File: mysql-bin.000007
检查binlog日志无丢失
ls -lrth mysql-bin.*
-rw-r----- 1 mysql mysql 129K Oct 19 09:39 mysql-bin.000007
-rw-r----- 1 mysql mysql 259 Oct 19 09:51 mysql-bin.000008
-rw-r----- 1 mysql mysql 259 Oct 19 09:53 mysql-bin.000009
-rw-r----- 1 mysql mysql 283 Oct 19 09:54 mysql-bin.000010
-rw-r----- 1 mysql mysql 259 Oct 19 09:54 mysql-bin.000011
-rw-r----- 1 mysql mysql 270 Oct 19 09:54 mysql-bin.index
-rw-r----- 1 mysql mysql 225M Oct 28 09:55 mysql-bin.000012
复制
3.先恢复从库slave。
mysql> start slave;
mysql> show slave status\G;
观察Slave_IO_Running和Slave_SQL_Running均由No变为Yes。
并且Seconds_Behind_Master值逐渐变小。
复制
4.待从库slave正常后,在恢复主库的slave。
待从库Seconds_Behind_Master值变为0后,开始启动主库slave。
mysql> start slave;
mysql> show slave status\G;
由于之前从库数据已经同步完成,此时主库同步速度很快就完成了。
复制
#####chenjuchao 20211028 12:50#####
文章转载自IT小Chen,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
确实是一线实战的好文章,必须点赞!
3年前

评论
相关阅读
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
2289次阅读
2025-04-25 18:53:11
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
742次阅读
2025-04-25 15:30:58
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
430次阅读
2025-04-17 17:02:24
MySQL 9.3 正式 GA,我却大失所望,新特性亮点与隐忧并存?
JiekeXu
391次阅读
2025-04-15 23:49:58
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
362次阅读
2025-04-15 14:48:05
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
346次阅读
2025-04-07 12:14:29
记录MySQL数据库的一些奇怪的迁移需求!
陈举超
244次阅读
2025-04-15 15:27:53
MySQL 8.4 新特性深度解析:功能增强、废弃项与移除项全指南
JiekeXu
192次阅读
2025-04-18 20:21:32
GreatSQL 新版发布:MySQL 牵手“鸭子”
严少安
140次阅读
2025-04-19 14:57:56
MySQL 8.0 OCP 1Z0-908 考试题解析指南
JiekeXu
119次阅读
2025-04-29 16:17:23