MYSQL 之主从同步管理
作者:互联网
在数据量比较大的情况下,单个服务器可能没有办法满足业务需求,今天我们来说一下mysql 主从同步架构。先来说说她的作用。
(1) 数据分布
(2) 负载平衡(load balancing)
(3) 备份
(4) 高可用性(high availability)和容错
原理图
大致描述一下过程:从服务器的IO线程从主服务器获取二进制日志,并在本地保存为中继日志,然后通过SQL线程来在从上执行中继日志中的内容,从而使从库和主库保持一致。主从同步的详细过程如下:
- 主服务器验证连接。
- 主服务器为从服务器开启一个线程。
- 从服务器将主服务器日志的偏移位告诉主服务器。
- 主服务器检查该值是否小于当前二进制日志偏移位。
- 如果小于,则通知从服务器来取数据。
- 从服务器持续从主服务器取数据,直至取完,这时,从服务器线程进入睡眠,主服务器线程同时进入睡眠。
- 当主服务器有更新时,主服务器线程被激活,并将二进制日志推送给从服务器,并通知从服务器线程进入工作状态。
- 从服务器SQL线程执行二进制日志,随后进入睡眠状态。
- 主从同步环境介绍
- 在主服务器上建立同步帐号
- 从服务器配置文件的更改
- server-id这一项需要认真检查,一定不能和主服务器冲突了,不然到时候会出现莫民其妙的问题,因为同步的时候会会根据server-id做判断,如果server-id一样就不进行同步了,不然可能会导致死循环(主主同步或者环状同步的时候)。
- 有的人会感觉奇怪我这里为什么要使用replicate-wild-ignore-table参数,而不是用replicate-do-db或者replicate-ignore-db来过滤需要同步的数据库和不需要同步的数据库。这里有几个原因:
- replicate-wild-ignore-table参数能同步所有跨数据库的更新,比如replicate-do-db或者replicate-ignore-db不会同步类似
- replicate-wild-ignore-table=mysql.%在以后需要添加同步数据库的时候能方便添加而不需要重新启动从服务器的数据库。因为以后很可能需要同步其他的数据库。
- auto_increment_increment和auto_increment_offset参数,这 两个参数一般用在主主同步中,用来错开自增值, 防止键值冲突。
- --slave-skip-errors参数,不要胡乱使用这些跳过错误的参数,除非你非常确定你在做什么。当你使用这些参数时候,MYSQL会忽略那些错误,这样会导致你的主从服务器数据不一致。
- 从主服务器得到一个快照版本
标签:线程,同步,replicate,MYSQL,服务器,日志,主从 来源: https://blog.csdn.net/xinyulou/article/details/101283834