MySQL 的slave_exec_mode参数的用处

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

主从复制中常会遇到的问题就是1062主键重复、1023slave上相关记录没找到。

如果在读写分离的架构中,slave同步失败会对业务造成很大的影响的(比如用户在master上发了帖子,阅览跑到了slave上,找不到了刚才的帖子了)。


因此,我们很有必要对主从复制做些监控,做些自动化的处理。

这里要涉及到MySQL的一个参数slave_exec_mode


slave_exec_mode参数可用来自动处理同步复制错误:

1
2
3
4
# slave上执行
set  global slave_exec_mode= 'IDEMPOTENT' ;  幂等模式 (默认是STRICT严格模式)
> stop slave;
> start slave;


经过上面3步的设置后,当出现1023错误(记录没找到)、1062错误(主键重复)时,就会自动跳过错误,并且记录到错误日志里。

其实,slave_exec_mode和slave_skip_errors的作用是一样的,但是slave_skip_errors不支持动态修改,必须重启mysql才能生效,因此建议使用slave_exec_mode。



脚本方法如下 cat /home/scripts/manage_repl.sh:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
# Description: 自动跳过主从复制的错误(错误代码1023、1062) ,这个脚本在slave上执行
#  
 
user= 'root'
pass= 'root'
port= '3306'
IP= '172.16.10.10'
MYSQLCLI= '/usr/local/mysql/bin/mysql'
 
STATUS=$($MYSQLCLI -u$user -p$pass -h $IP -e  'show slave status\G' | sed  -n  '13p' | awk  -F  ":"  '{print $2}' )
 
if  [[ $STATUS !=  'YES'  ]]; then
     $MYSQLCLI -u$user -p$pass -h $IP -e  "SET GLOBAL slave_exec_mode='IDEMPOTENT';"
     $MYSQLCLI -u$user -p$pass -h $IP -e  "stop slave';"
     $MYSQLCLI -u$user -p$pass -h $IP -e  "start slave';"
     echo  -e  "地址: $IP\n端口: 3306\n服务: MySQL主从复制发生错误,系统已自动跳过错误,请后续跟进处理。\n发生时间: `date +" %F %T "`"  \
     | mail -s  '主从复制错误警告'   xxxxxx@126.com
fi


添加一个每隔10分钟检查一次主从复制状态的计划任务,如下:

1
echo  '*/10 * * * * /home/scripts/manage_repl.sh'  >> /var/spool/cron/root









本文转自 lirulei90 51CTO博客,原文链接:http://blog.51cto.com/lee90/1793469,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 缓存 关系型数据库
Mysql第十四天,Mysql并发参数调整
Mysql第十四天,Mysql并发参数调整
29 0
|
3月前
|
SQL 关系型数据库 MySQL
在云数据仓库AnalyticDB MySQL版中,有几个参数可能影响SELECT查询的执行及其稳定性
在云数据仓库AnalyticDB MySQL版中,有几个参数可能影响SELECT查询的执行及其稳定性【1月更文挑战第16天】【1月更文挑战第80篇】
36 4
|
3月前
|
存储 关系型数据库 MySQL
RDS有哪些参数?都有什么作用?
RDS有哪些参数?都有什么作用?
47 0
|
4月前
|
缓存 关系型数据库 MySQL
MySQL Binlog--事务日志和BINLOG落盘参数对磁盘IO的影响
MySQL Binlog--事务日志和BINLOG落盘参数对磁盘IO的影响
44 0
|
4月前
|
SQL 关系型数据库 MySQL
使用CTAS 把mysql 表同步数据 到hologres ,Flink有什么参数可以使hologres 的字段都小写吗?
使用CTAS 把mysql 表同步数据 到hologres ,Flink有什么参数可以使hologres 的字段都小写吗?
273 0
|
14天前
|
缓存 关系型数据库 MySQL
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
|
1月前
|
SQL 关系型数据库 MySQL
【Mysql】MYSQL参数max_allowed_packet 介绍
【Mysql】MYSQL参数max_allowed_packet 介绍
67 0
|
3月前
|
存储 SQL 缓存
MySQL `innodb_flush_log_at_trx_commit` 参数
MySQL `innodb_flush_log_at_trx_commit` 参数
|
3月前
|
分布式计算 DataWorks 关系型数据库
在云数据仓库AnalyticDB MySQL版中,LIMIT的大小是由系统参数max_limit控制的
【1月更文挑战第7天】【1月更文挑战第31篇】在云数据仓库AnalyticDB MySQL版中,LIMIT的大小是由系统参数max_limit控制的
29 1
|
4月前
|
关系型数据库 MySQL 数据库
MySQL【部署 03】8.0.25离线部署(下载+安装+配置)Failed dependencies 问题处理及8.0配置参数说明
MySQL【部署 03】8.0.25离线部署(下载+安装+配置)Failed dependencies 问题处理及8.0配置参数说明
118 0