MYSQL基于GTID的复制

Radinka ·
更新时间:2024-11-14
· 744 次阅读

  1.概述   从MYSQL5.6 开始,mysql开始支持GTID复制。   基于日志点复制的缺点:   从那个二进制日志的偏移量进行增量同步,如果指定错误会造成遗漏或者重复,导致数据不一致。   基于GTID复制:   1.从服务器会告诉主服务器已执行的事务的GTID值。   2.主库会告诉从哪些GTID事务没有被执行。   同一个事务在指定的从库执行一次。   什么是GTID   GTID即全局事务ID,器保证为每一个在主上提交的事务在复制集群中可以生成一个的ID.   GTID=source_id:transaction_id   source_id:是主库的server UUID,在数据目录的auto.cnf 文件中。   transaction_id: 从1开始的一个序列。   2.基于GTID复制的步骤   1.在主DB服务器上建立复制帐号。   和日志点是一样的。   2.配置主数据库服务器   bin_log =mysql-bin   server_id=1001   gtid_mode=on   enforce-gtid-consiste:强制事务一致性,保证事务的安全   不能使用:   1.create table 。。select   2.在事务中使用create temporary table 建立临时表,使用关联更新事务表和非事务表。   log-slave-updates=on   在从服务器中记录从主服务器传过来的日志数据。   使用GTID 5.6 必须使用此参数,5.7可以不使用。   3.配置从服务器。   server_id=1002   relay_log=relay_log   gtid_mode=on   enforce-gtid-consistency   建议配置   read_only=on   保证从服务器数据安全性   master_info_reposistory=TABLE   relay_log_info_reposistory=TABLE   从服务器连接主服务器的信息和中继日志存放咱 master_info,和relay_log中。   4.初始化从服务器数据。   mysqldump --master-data=2 -single-transaction   xtarbackup –slave-info   记录备份时后的事务GTID值。   导出数据   mysqldump --single-transaction --master-data=2 --triggers -routines --all-databases -uroot -p -P3308 >all2.sql   导入数据   mysql -uroot -p -P3309 < all2.sql   5.启动基于GTID的复制   change master to master-host=’主服务IP’,   master_user=’repl’,   master_password=’password’,   master_auto_position=1   change master to MASTER_HOST='192.168.1.106',   MASTER_PORT=3308,   MASTER_USER='repl',   MASTER_PASSWORD='repl',   master_auto_position=1;   start slave;   show slave status G;   image   在启动slave时报错。

  ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository   解决办法:   reset slave;重置slave   再启动 slave   start slave;   测试同步:   1.在主库创建一张表,插入记录。   2.在从库查询验证是否正确,经验证配置正确。



GTID Mysql

需要 登录 后方可回复, 如果你还没有账号请 注册新账号