mysql的主从复制,基于gtid的主从复制,半同步复制,组复制

本文介绍了MySQL主从复制的原理,包括传统的复制方式、基于GTID的复制,详细阐述了GTID的优势,并讨论了半同步复制的实现和超时机制,以及如何通过GTID实现并行复制。此外,还简要提及了组复制的基本操作和特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主从复制原理:

这里写图片描述

从库生成两个线程,一个I/O线程,一个SQL线程;
 
i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;

mysql的日志类型:
		Error log 错误日志
		General query log普通查询日志
		Slow query log 慢查询日志(记录哪些查询比较慢 )
		Binary log二进制日志文件(1、用于增量备份。2、主从)
		要实现MySQL的主从复制,首先必须打开Master端的Binlog记录功能,否则就无法实现。因为整个复制过程实际上就是Slave从Master端获取BInlog日志,然后再在Slave上以相同顺序执行获取的binlog日志中记录的各种SQL操作。
1.传统的实现数据库主从复制

单向复制,只能slave复制master的,即slave对master库只读

base2 172.25.78.12 master
base3 172.25.78.13 slaver
# 在master上
[root@base2 ~]# tar xf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar 
[root@base2 ~]# ls
mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar
mysql-community-client-5.7.24-1.el7.x86_64.rpm
mysql-community-common-5.7.24-1.el7.x86_64.rpm
mysql-community-devel-5.7.24-1.el7.x86_64.rpm
mysql-community-embedded-5.7.24-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.24-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.24-1.el7.x86_64.rpm
mysql-community-libs-5.7.24-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm
mysql-community-minimal-debuginfo-5.7.24-1.el7.x86_64.rpm
mysql-community-server-5.7.24-1.el7.x86_64.rpm
mysql-community-server-minimal-5.7.24-1.el7.x86_64.rpm
mysql-community-test-5.7.24-1.el7.x86_64.rpm
[root@base2 ~]# yum install -y mysql-community-client-5.7.24-1.el7.x86_64.rpm \
mysql-community-common-5.7.24-1.el7.x86_64.rpm \
mysql-community-libs-5.7.24-1.el7.x86_64.rpm \
mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm \
mysql-community-server-5.7.24-1.el7.x86_64.rpm   # 只需要这五个即可
[root@base2 ~]# vim /etc/my.cnf
log-bin=mysql-bin  # 启用二进制功能,主从复制基础
server-id=1        # id唯一

在这里插入图片描述

[root@base2 ~]# systemctl start mysqld
[root@base2 ~]# cat /var/log/mysqld.log | grep password  # 查看临时密码

在这里插入图片描述

[root@base2 ~]# mysql -p   # 我们可以用临时密码登录数据库,但是什么都干不了
Enter password: 
mysql> show databases;

在这里插入图片描述

[root@base2 ~]# mysql_secure_installation   # 初始化密码	

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

[root@base2 ~]# mysql -p   # 再次登录,可以正常使用
Enter password: 
mysql> show databases;

在这里插入图片描述

mysql> grant replication slave on *.* to repl@'172.25.78.%' identified by 'Ting@666';  #  为服务器创建一个连接账户并授予权限,*.*表示所有权限;172.25.78.%表示这个网段的所有用户都有这个权限
mysql> show master status;

在这里插入图片描述

# 在slave上
先测试master数据库是否能远程登录
[root@base2 ~]# mysql -h 172.25.78.12 -u repl -p
Enter password: 
mysql> show databases;   # 测试成功

在这里插入图片描述

mysql> quit
开始配置slave的数据库
[root@base3 ~]# tar xf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar 
[root@base3 ~]# yum install -y mysql-community-client-5.7.24-1.el7.x86_64.rpm \
mysql-community-common-5.7.24-1.el7.x86_64.rpm \
mysql-community-libs-5.7.24-1.el7.x86_64.rpm \
mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm \
mysql-community-server-5.7.24-1.el7.x86_64.rpm
[root@base3 ~]# vim /etc/my.cnf
server-id=2
注:从服务器 ID 号,不能和主 ID 相同,如果设置多个从服务
器,每个从服务器必须有一个唯一的 server-id 值,必须与主服
务器的以及其它从服务器的不相同。可以认为 server-id 值
类似于 IP 地址:这些 ID 值能唯一识别复制服务器群集中的
每个服务器实例。
[root@base3 ~]# systemctl start mysqld
[root@base3 ~]# cat /var/log/mysqld.log | grep password

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值