京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

2024-11-3 21:36| 发布者: 44f6fa4f5| 查看: 63| 评论: 0

摘要: 目次一、基于binlog的主从复制搭建1、预备情况2、数据库中创建并授权有主从复制权限账户3、主库的配置5、修改UUID6、查看从库当前监听主库状态7、别的从库配置与以上雷同二、基于GTID的主从复制搭建1、预备三台mysql
目次

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

1、预备情况

提前预备三台搭建了MySQL以及关闭防火墙的linux,并包管三台MySQL起始数据一致

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

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

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

[code]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][/code]

3、主库的配置

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

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

4、从库的配置

[code]修改数据库配置文件 /etc/my.cnf 包管从库有唯一的server-id 重启数据库[/code]

[code]进入从库 #查看从库当前监听主库状态 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[/code]

提示:重置从库的复制配置下令:RESET SLAVE ALL;

5、修改UUID

[code]# 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! 重启数据库 [/code]

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

[code]mysql> show slave status\G[/code]

7、别的从库配置与以上雷同

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

[code]# 查看线程 mysql> SHOW PROCESSLIST\G[/code]

  • 第 1 行 - 表现当前有一个由 [code]root[/code] 用户在当地([code]localhost[/code])执行的 [code]SHOW PROCESSLIST[/code] 查询,状态为 starting,说明该下令刚刚开始执行,花费的时间为 0。
  • 第 2 行第 3 行 - 这两行显示的是来自用户 [code]testslave[/code] 的两个 [code]Binlog Dump[/code] 进程,其主机分别为 [code]192.168.37.154[/code] 和 [code]192.168.37.155[/code]。它们的状态均为 Master has sent all binlog to slave; waiting for more updates,这意味着从库正在等候来自主库的新更新。

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

1、预备三台mysql呆板情况,而且创建mysql并赋予权限,同上

[code]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][/code]

2、主库配置

[code]修改数据库配置文件 /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 重启数据库[/code]

3、从库配置

[code]修改数据库配置文件 /etc/my.cnf server-id=154 gtid_mode=ON enforce_gtid_consistency=1 重启数据库[/code]

[code]#进入从库 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[/code]

4、别的从库做雷同配置,查看主从复制状态

[code]# 查看线程 mysql> SHOW PROCESSLIST\G[/code]

总结

以上为个人经验,盼望能给大家一个参考,也盼望大家多多支持脚本之家。


来源:https://www.jb51.net/database/328293ysu.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-7-7 20:11 , Processed in 0.031594 second(s), 19 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部