首页 / 数据库 / MySQL / MySQL 基于GTID的复制
1.概述从MySQL5.6 开始,mysql开始支持GTID复制。基于日志点复制的缺点:从那个二进制日志的偏移量进行增量同步,如果指定错误会造成遗漏或者重复,导致数据不一致。MySQL基于日志点的复制 见 http://www.linuxidc.com/Linux/2016-09/135576.htm基于GTID复制:1.从服务器会告诉主服务器已执行的事务的GTID值。2.主库会告诉从哪些GTID事务没有被执行。同一个事务在指定的从库执行一次。什么是GTIDGTID即全局事务ID,器保证为每一个在主上提交的事务在复制集群中可以生成一个唯一的ID.GTID=source_id:transaction_idsource_id:是主库的server UUID,在数据目录的auto.cnf 文件中。transaction_id: 从1开始的一个序列。2.基于GTID复制的步骤1.在主DB服务器上建立复制帐号。 和日志点是一样的。2.配置主数据库服务器bin_log =mysql-binserver_id=1001gtid_mode=onenforce-gtid-consiste:强制事务一致性,保证事务的安全 不能使用: 1.create table 。。select 2.在事务中使用create temporary table 建立临时表,使用关联更新事务表和非事务表。log-slave-updates=on在从服务器中记录从主服务器传过来的日志数据。 使用GTID 5.6 必须使用此参数,5.7可以不使用。3.配置从服务器。server_id=1002relay_log=relay_loggtid_mode=onenforce-gtid-consistency建议配置read_only=on保证从服务器数据安全性master_info_reposistory=TABLErelay_log_info_reposistory=TABLE从服务器连接主服务器的信息和中继日志存放咱 master_info,和relay_log中。4.初始化从服务器数据。mysqldump --master-data=2 -single-transactionxtarbackup –slave-info记录备份时最后的事务GTID值。导出数据mysqldump --single-transaction --master-data=2 --triggers -routines --all-databases -uroot -p -P3308 >all2.sql导入数据mysql -uroot -p -P3309 < all2.sql5.启动基于GTID的复制change master to master-host=’主服务IP’,master_user=’repl’,master_password=’password’,master_auto_position=1change 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;在启动slave时报错。ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository解决办法:reset slave;重置slave再启动 slavestart slave;测试同步:1.在主库创建一张表,插入记录。2.在从库查询验证是否正确,经验证配置正确。本文永久更新链接地址