阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL基于GTID主从复制之半同步复制

417次阅读
没有评论

共计 3752 个字符,预计需要花费 10 分钟才能阅读完成。

MySQL 主从复制

MySQL 主从复制原理:
从库有两个线程 IO 线程和 SQL 线程

1. 从库的 IO 线程向主库的主进程发送请求,主库验证从库,交给主库 IO 线程负责数据传输;
2. 主库 IO 线程对比从库发送过来的 master.info 里的信息,将 binlog 文件信息,偏移量和 binlog 文件名等发送给从库
3. 从库接收到信息后,将 binlog 信息保存到 relay-bin 中,同时更新 master.info 的偏移量和 binlog 文件名
4. 从库的 SQL 线程不断的读取 relay-bin 的信息,同时将读到的偏移量和文件名写道 relay-log.info 文件,binlog 信息写进自己的数据库,一次同步操作完成。
5. 完成上次同步后,从库 IO 线程不断的向主库 IO 线程要 binlog 信息
6. 从库如果也要做主库,也要打开 log_bin 和 log-slave-update 参数

配置读写 mysql 主从复制的步骤:
1. 在主库与从库都安装 mysql 数据库
2. 在主库的配置文件(/etc/my.cnf) 中配置 server-id 和 log-bin
3. 在登陆主库后创建认证用户并做授权。
4. 在从库的配置文件 (/etc/my.cnf) 中配置 server-id
5. 登陆从库后,指定 master 并开启同步开关。
需要注意的是 server-id 主从库的配置是不一样的。

Server-id 存在作用:
MySQL 同步的数据中是包含 server-id 的,而 server-id 用于标识该语句最初是从哪个 server 写入的。因此 server-id 一定要有的
Server-id 不能相同的原因:每一个同步中的 slave 在 master 上都对应一个 master 线程,该线程就是通过 slave 的 server-id 来标识的;每个 slave 在 master 端最多有一个 master 线程,如果两个 slave 的 server-id 相同,则后一个连接成功时,slave 主动连接 master 之后,如果 slave 上面执行了 slave stop;则连接断开,但是 master 上对应的线程并没有退出;当 slave start 之后,master 不能再创建一个线程而保留原来的线程,那样同步就可能有问题;
在 MySQL 做主主同步时,多个主需要构成一个环状,但是同步的时候有要保证一条数据不会陷入死循环,这里就是靠 server-id 来实现的;

MySQL 的主从复制(gtid)实验配置:

配置环境:rhel6.5 iptables selinx down
172.25.40.1 server1.example.com master
172.25.40.2 server2.example.com slave
安装包:mysql-5.7.17-1.el6.x86_64.rpm-bundle.tar
在 master 和 slave 上解压后安装 mysql 数据库:

tar xf mysql-5.7.17-1.el6.x86_64.rpm-bundle.tar
yum install -y mysql-community-client-5.7.17-1.el6.x86_64.rpm mysql-community-common-5.7.17-1.el6.x86_64.rpm mysql-community-libs-5.7.17-1.el6.x86_64.rpm mysql-community-libs-compat-5.7.17-1.el6.x86_64.rpm mysql-community-server-5.7.17-1.el6.x86_64.rpm
 /etc/init.d/mysqld start
 grep ‘password’ /var/log/mysqld.log     
“`      #筛选初始化是数据库登陆密码
登陆数据库后修改密码:
`alter user root@localhost identified by ‘xxxxxxx’;` ## 修改本地用户密码

1.Master 端的操作:

vim /etc/my.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
gtid_mode=ON #使用 gtid 模式
enforce-gtid-consistency=true #强制使用 gtid

Slave 端的操作:

[mysqld]
server-id=2
gtid_mode=ON
enforce-gtid-consistency=true

注意:在修改两台服务器的 mysql 配置文件时,一定要保证 server-id 必须是不同的,server-id 的取值范围是:2^32-1

2. 重新启动两台服务器上的 mysql
` /etc/init.d/mysqld restart`

3. 进入主库创建认证用户并授权
`grant replication slave on *.* to RedHat@’172.25.40.%’ identified by ‘xxxxxxxxxx’;`

4. 进入 slave 端指定 master

stop slave;
change master to master_host=’172.25.40.1′,master_user=’redhat’,master_password=’xxxxxxxxxx’,master_auto_position=1;
start slave;

5. 在设置半同步复制 master 端的操作

mysql> install plugin rpl_semi_sync_master soname ‘semisync_master.so’;
Query OK, 0 rows affected (0.50 sec)

mysql> set global rpl_semi_sync_master_enabled=1;
Query OK, 0 rows affected (0.00 sec)

mysql> show global variables like ‘%rpl_semi%’;
+——————————————-+————+
| Variable_name | Value |
+——————————————-+————+
| rpl_semi_sync_master_enabled | ON |
| rpl_semi_sync_master_timeout | 10000 |
| rpl_semi_sync_master_trace_level | 32 |
| rpl_semi_sync_master_wait_for_slave_count | 1 |
| rpl_semi_sync_master_wait_no_slave | ON |
| rpl_semi_sync_master_wait_point | AFTER_SYNC |
+——————————————-+————+
6 rows in set (0.01 sec)

6.5. 在设置半同步复制 slave 端的操作

mysql> install plugin rpl_semi_sync_slave soname ‘semisync_slave.so’;
Query OK, 0 rows affected (0.14 sec)

mysql> set global rpl_semi_sync_slave_enabled=1;
Query OK, 0 rows affected (0.00 sec)

mysql> show global variables like ‘%rpl_semi%’;
+———————————+——-+
| Variable_name | Value |
+———————————+——-+
| rpl_semi_sync_slave_enabled | ON |
| rpl_semi_sync_slave_trace_level | 32 |
+———————————+——-+
2 rows in set (0.00 sec)

如果在 slave 端开启 io 线程后,会自动调转为半同步模式进行数据传输

MySQL 基于 GTID 主从复制之半同步复制

关闭 io 线程 在 master 上再进行事务时会等待 10s 后从半同步状态转为异步。

MySQL 基于 GTID 主从复制之半同步复制

当第二次进行数据插入时会变成异步同步

MySQL 基于 GTID 主从复制之半同步复制

MySQL 并行复制
多线程工作

Slave 端修改配置文件:

[mysqld]
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=16 #开启 16 个线程工作
master_info_repository=TABLE #以表的形式存放 master_info 的信息
relay_log_info_repository=TABLE #以表的形式存放 relay_log_info 的信息
relay_log_recovery=ON #

重启服务
`/etc/init.d/mysqld restart`
当进入数据库的 mysql 库中,可以执行 sql 语句:
`select * from slave_master_info;`
可以看到原本在 /var/lib/mysql 下的 relay-log.info 的文件已经转为数据库中的表。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3752字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7802518
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
开源神器组合!1Panel面板+Halo助你轻松打造个人/企业内容中心

开源神器组合!1Panel面板+Halo助你轻松打造个人/企业内容中心

开源神器组合!1Panel 面板 +Halo 助你轻松打造个人 / 企业内容中心 前言 大家好,我是星哥,之前...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...