0

0

主从复制问题引起的架构优化思考

黄舟

黄舟

发布时间:2017-02-07 11:22:37

|

1513人浏览过

|

来源于php中文网

原创

存在问题

 

Clippah
Clippah

AI驱动的创意视频处理平台

下载

主从复制架构多次出现复制停滞问题如1032错误和1062错误,其中,1032错误是在主库成功执行后在从库update或delete时发现从库上找不到这条记录,1062错误是在主库insert完成后在从库执行时出现主键冲突无法成功insert,这些问题可通过跳过错误和前面的复制数据校验修复来解决,但是这些问题产生的直接原因都是主从库数据不一致。这种不一致除了逻辑复制本身可能出现的数据不一致,还有个原因是业务侧或开发人员违规在备库上直接进行增删改操作导致的。

在主从复制架构中,主从库通过VIP绑定实现指定库作为主库,提供读写,从库起backup的作用,当主库出现问题时,VIP切换到从库,从库提供读写,否则从库只是backup。正常情况下,我们不允许开发人员直接通过固定IP登录从库操作,但实际工作中往往又难以规避,那么如何从技术角度去避免开发人员在备库操作呢?又如何在避免的同时不影响高可用架构的正常运行和故障切换呢?

 

2.架构配置优化

 

(1)直接解决办法

解决上述问题的直接办法是考虑进行架构配置优化,即将从库可读写的状态配置为只读状态。

MySQL官网关于只读有下列描述:

1.Whenthe read_only system variable is enabled, the server permits no client updatesexcept from users who have the SUPER privilege. 
只读情况下,super权限可读写。
2.Updates performed by slave threads, if theserver is a replication slave. In replication setups, 
it can be useful toenable read_only on slave servers to ensure that slaves accept updates only from themaster server and not from clients.
不影响主从复制线程的读写。

开启只读后,除了super权限账户和复制线程等不受影响外,业务侧开发人员和其它人员即使登录备库也无法操作备库数据。

MySQL [db1]> show global variables like'read_only%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| read_only     | ON   |
+---------------+-------+
1 row in set (0.00 sec)
 
MySQL [test]> insert child values('1','12');
ERROR 1290 (HY000): The MySQL server is running withthe --read-only option so it cannot execute thisstatement

 

    (2)配置为只读后如何进行完美故障切换?

 

   从库只读可避免违规操作,但面临的问题是如果主库发生问题,VIP要切换到从库上,但这时候从库只读会导致数据库对外服务不可用,因此在切换时需要实现取消从库只读同时设置主库只读的功能。

     以Keepalived+MySQL双主(主从)架构为例,正常运行时,VIP在Master1上,Master1为可读写状态,Master2为readonly状态,一旦Master1发生问题,VIP要自动切换至Master2,切换前要完成两个步骤:1.将Master1置为readonly;2.取消Master2的readonly。

 

3.自动化实现思路

对于一主一从架构,故障切换需要手工进行,因此上述两步也可以手工操作;但Keepalived+MySQL双主(主从)架构中,已实现故障的自动监测和VIP自动切换,上述两个步骤也应该植入脚本中实现自动化。

我们主要需在自动监测和切换脚本中植入对数据库开启readonly和关闭readonly的函数,主要写入语句“set global read_only=ON”和“set globalread_only=OFF”,同时注意在设置状态之前先判断现有状态,shell调用语句“show variables like 'read_only';”得到读写状态,确认读写状态后再设置readonly参数为所需状态即可,注意这些状态设置的触发定制在监测到故障并执行切换之前。

上述思路现已完成自动化转换,亲测成功,说明思路正确。

以上就是主从复制问题引起的架构优化思考的内容,更多相关内容请关注PHP中文网(www.php.cn)!

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

32

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

23

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

16

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

5

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

6

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

268

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

195

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

170

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

85

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

麻省理工大佬Python课程
麻省理工大佬Python课程

共34课时 | 5.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号