基于GTID实现MySQL的主从同步

mysql主从复制原理

1. GTIDs(Global transaction identifiers)全局事务标识符,是mysql 5.6新加入的一项技术

2.当使用GTIDs时,每一个事务都可以被识别并且跟踪

3.添加新的slave或者当发生故障需要将master身份或者角色迁移到slave上时,都无需考虑是哪一个二进制日志以及哪个position值,极大简化了相关操作

4.GTIDs是完全基于事务的,因此不支持MYISAM存储引擎

5.GTID由source_id和transaction_id组成:
1)source_id来自于server_uuid,可以在auto.cnf中看到
2)transation_id是一个序列数字,自动生成.

一、准备

  • 依赖安装



     
  • 时间同步

 二、主服务器配置

  • 下载压缩包
    mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
  • 编写安装脚本

  • 执行脚本

  • 设置MySQL密码

  • 进行安全初始化

  • 修改my.cnf配置文件

  • 重启服务

 三、从服务器配置

  • 下载压缩包
    mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
  • 编写安装脚本

  • 把主服务器的 data目录 同步到   从服务器上,相当于 初始化

  • 给SLAVE配置my.cnf文件

  • 启动服务

 三、主从同步

  • 主服务器创建一个slave同步账号

  • 在SLAVE中配置主从数据同步(在从服务器上执行)

 四、结果显示

使用GTID配置Mysql主从的原理是将主库上的每个事务分配一个全局唯一的GTID,从库通过读取主库上的GTID来进行数据同步。具体步骤如下: 1. 在主库和从库上分别启用GTID功能,可以通过在my.cnf文件中添加以下参数来启用GTID: ``` server_id=1 enforce_gtid_consistency=1 log_bin=mysql-bin binlog_format=row ``` 其中,server_id是服务器ID,需要保证主库和从库的server_id不同;enforce_gtid_consistency参数用于开启GTID功能;log_bin参数指定Binlog文件名;binlog_format参数指定Binlog格式,必须为row格式。 2. 在主库上创建一个用于复制的用户,并为该用户赋予REPLICATION SLAVE权限,以便从库可以连接到主库并读取Binlog: ```sql CREATE USER 'replication'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%'; ``` 3. 在主库上创建复制通道,并指定从库的地址和用户名密码: ```sql CHANGE MASTER TO MASTER_HOST='slave_host', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1; ``` 其中,MASTER_HOST指定从库的地址;MASTER_USER和MASTER_PASSWORD指定从库连接所需的用户名和密码;MASTER_AUTO_POSITION参数指定使用GTID进行数据同步。 4. 在从库上启动复制进程,读取主库上的Binlog,并根据GTID进行数据同步: ```sql START SLAVE; ``` 从库会读取主库上的Binlog,并根据GTID进行数据同步,如果有新的事务产生,主库会为其分配一个新的GTID,并通知从库进行同步。如果出现异常情况,从库会根据GTID自动重新开始同步,确保数据的一致性。 需要注意的是,使用GTID进行数据同步时,主库和从库之间的版本必须相同,否则可能会出现数据不一致的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值