当前位置:   article > 正文

mysql的主从复制,基于gtid的主从复制,半同步复制,组复制_gtid复制模式,mysql哪个线程可以传输日志

gtid复制模式,mysql哪个线程可以传输日志
主从复制原理:

这里写图片描述

从库生成两个线程,一个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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
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唯一
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

mysql> quit
  • 1
开始配置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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在这里插入图片描述

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号