当前位置: 代码网 > it编程>数据库>Mysql > MySQL主从复制基于binlog与GTID详解

MySQL主从复制基于binlog与GTID详解

2024年10月04日 Mysql 我要评论
一、基于binlog的主从复制搭建1、准备环境提前准备三台搭建了mysql以及关闭防火墙的linux,并保证三台mysql起始数据一致实战中最好是新的mysql,方便操作如果无法新建需使用数据备份方式

一、基于binlog的主从复制搭建

1、准备环境

提前准备三台搭建了mysql以及关闭防火墙的linux,并保证三台mysql起始数据一致

实战中最好是新的mysql,方便操作

如果无法新建需使用数据备份方式将数据库数据恢复一致

2、数据库中创建并授权有主从复制权限账户

mysql> grant replication  slave,reload,super on *.*  to 'testslave'@'%' identified by '123456';
mysql> flush privileges;
#注意:生产环境中密码采用高级别的密码,实际生产环境中将'%'换成具体的ip
#注意:该用户理论上只需要主库存在,从库不需要创建,但在实战中,由于各种突发情况从库随时有可能升级为主库,所以所有从库也要创建

replication slave:拥有此权限可以查看从服务器,从主服务器读取二进制日志。
super权限:允许用户使用修改全局变量的set语句以及change  master语句
reload权限:必须拥有reload权限,才可以执行flush  [tables | logs | privileges]

3、主库的配置

修改数据库配置文件  /etc/my.cnf
保证主库以下两点
1.binlog日志功能打开
2.拥有server-id,并且在该主从复制集群中唯一
log-bin=/opt/xiaolu/log/a.log  (自己写目录)
server-id=153  (要保持唯一)

重启数据库

#进入主库查看当前主库状态
mysql> show master status\g
# 注意:此次查询关注file和position两条信息,从库配置时使用

4、从库的配置

修改数据库配置文件  /etc/my.cnf
保证从库有唯一的server-id
 
重启数据库

进入从库

#查看从库当前监听主库状态
mysql> show slave status\g    
empty set (0.00 sec)          #默认未开启监听


# 执行如下命令
mysql> change master to
     master_host='192.168.37.153',   #主库ip
     master_user='testslave',         #主库用户名(第二步创建的)
     master_password='123456',        #主库密码(第二步创建的)
     master_log_file='a.000002',    #主库配置文件(第三步主库配置时截图的参数)
     master_log_pos=154;              #主库日志偏移量(第三步主库配置时截图的参数)

# 开启监听    
mysql> start slave;  

#查看从库当前监听主库状态
mysql> show slave status\g   
如果报uuid错误信息就去/opt/xiaolu/data/mysql/auto.cnf文件去改uuid

提示:重置从库的复制配置命令:reset slave all;

5、修改uuid

# vim /opt/xiaolu/data/mysql/auto.cnf

[auto]
server-uuid=e2ee6d4c-80c9-11ef-9bac-000c297e2bf5
随便改个数字就可以

[root@localhost mysql]# service mysqld stop
shutting down mysql.. success!
[root@localhost mysql]# service mysqld start
starting mysql. success!
重启数据库

6、查看从库当前监听主库状态

mysql> show slave status\g

7、其余从库配置与以上相同

配置完成后查看主从复制是否实现

# 查看线程
mysql> show processlist\g

  • 第 1 行 - 表示当前有一个由 root 用户在本地(localhost)执行的 show processlist 查询,状态为 starting,说明该命令刚刚开始执行,花费的时间为 0。
  • 第 2 行第 3 行 - 这两行显示的是来自用户 testslave 的两个 binlog dump 进程,其主机分别为 192.168.37.154192.168.37.155。它们的状态均为 master has sent all binlog to slave; waiting for more updates,这意味着从库正在等待来自主库的新更新。

二、基于gtid的主从复制搭建

1、准备三台mysql机器环境,并且创建mysql并赋予权限,同上

mysql> grant replication  slave,reload,super on *.*  to 'testslave'@'%' identified by '123456';
mysql> flush privileges;
#注意:生产环境中密码采用高级别的密码,实际生产环境中将'%'换成具体的ip
#注意:该用户理论上只需要主库存在,从库不需要创建,但在实战中,由于各种突发情况从库随时有可能升级为主库,所以所有从库也要创建

replication slave:拥有此权限可以查看从服务器,从主服务器读取二进制日志。
super权限:允许用户使用修改全局变量的set语句以及change  master语句
reload权限:必须拥有reload权限,才可以执行flush  [tables | logs | privileges]

2、主库配置

修改数据库配置文件  /etc/my.cnf
保证以下四点
log-bin=/opt/xiaolu/log/a.log  #开启binlog日志,master必写
server-id=153    #定义server id master必写 并保持唯一
gtid_mode=on     #开启gtid
enforce_gtid_consistency=1 #强制gtid  

重启数据库

3、从库配置

修改数据库配置文件 /etc/my.cnf
server-id=154
gtid_mode=on
enforce_gtid_consistency=1

重启数据库

#进入从库
mysql> stop slave;   #停止数据库监听
query ok, 0 rows affected (0.01 sec)

#设置从库监听信息
mysql> change master to
master_host='192.168.37.153',      #主ip 地址  最好用域名
master_user='testslave',     #主服务上面创建的用户
master_password='111111', 
master_auto_position=1;
query ok, 0 rows affected, 2 warnings (0.00 sec)

# 开启监听
mysql> start slave;
query ok, 0 rows affected (0.00 sec)

# 查看从库监听状态
mysql> show slave status\g

4、其余从库做相同配置,查看主从复制状态

# 查看线程
mysql> show processlist\g

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com