基于GTID的replication

本文介绍如何通过配置MySQL主从复制实现数据同步。包括设置GTID模式、创建复制用户、设置只读模式、备份和还原数据、配置从服务器追踪主服务器的二进制日志等步骤。

步骤:
1)两个MySQL实例:
      IP地址:10.0.0.201  端口:3306  (MySQL的Master)
      IP地址:10.0.0.201  端口:3307 (MySQL的Slave)

2)两台数据库实例,需要开启log-bin、GTID、和级联复制的选线log_slave_updates
      my.cnf配置参数如下:
  master(3306)
    server-id = 1203306
    log-bin = /data/mysqldata/3306/binlog/mysql-bin

    #*********** GTID settting*******************
    gtid_mode=ON
    enforce-gtid-consistency=true
    binlog_format= row
    skip-slave-start=1
    log_slave_updates = 1

  slave(3307)
    server-id = 1203307
    log-bin = /data/mysqldata/3307/binlog/mysql-bin

    #*********** GTID settting*******************
    gtid_mode=ON
    enforce-gtid-consistency=true
    binlog_format= row
    skip-slave-start=1
    log_slave_updates = 1


3)为Replication创建一个用户
  在master上,配置一个新用户,可以让slave服务器能读取master服务器
mysql> CREATE USER 'repl'@'10.0.0.201' IDENTIFIED BY 'repl@3307';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.0.0.201';


4)Master保证数据一致性,设置为只读
mysql> SET @@global.read_only = ON;
(root@localhost) [(none)]> show master status\G;
*************************** 1. row ***************************
             File: mysql-bin.000006
         Position: 737
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set: 4160e9b3-58d9-11e8-b174-005056af6f24:1-21
1 row in set (0.00 sec)

********备份******************
/usr/local/mysql/bin/mysqldump -uroot -p'zsd@7101' -S /data/mysqldata/3306/mysql.sock -A --flush-logs --single-transaction -e | gzip > mysql_3306_full_backup_`date +%F`.sql.gz
-A参数                        参数解释:--all-databases, -A。备份所有数据库的所有表。
--flush-logs参数              参数解释:在数据dump之前,刷新数据库的日志。
--single-transaction参数      参数解释:服务器dump之前,发起一个BEGIN SQL的语句, START TRANSACTION 放进一个事务里面。
-e参数                        参数解释:--extended-insert, -e 产生一个小的dump文件,加速插入的速度

master导出备份
/usr/local/mysql/bin/mysqldump -uroot -p'zsd@7101' -S /data/mysqldata/3306/mysql.sock --all-databases --triggers --routines --events --flush-logs --single-transaction -e --default-character-set=utf8 | gzip > mysql_3306_full_backup_`date +%F`.sql.gz

slave导入备份
/usr/local/mysql/bin/mysql -uroot -p'zsd@3307' -S /data/mysqldata/3307/mysql.sock --default-character-set=utf8 < mysql_3306_full_backup_2018-06-01.sql


5)SLAVE追日志
------------------抽象语句-----------------------------
mysql> CHANGE MASTER TO
     >     MASTER_HOST = host,
     >     MASTER_PORT = port,
     >     MASTER_USER = user,
     >     MASTER_PASSWORD = password,
     >     MASTER_AUTO_POSITION = 1;
-----------------实战语句------------------------------

CHANGE MASTER TO MASTER_HOST = '10.0.0.201',MASTER_PORT = 3306,MASTER_USER = 'repl',MASTER_PASSWORD = 'repl@3307',MASTER_AUTO_POSITION = 1;


6)启动slave
mysql> START SLAVE;

7)Master服务,关闭只读
mysql> SET @@global.read_only = OFF;


完全删除replication的拓扑结构

(root@localhost) [(none)]> stop slave;
(root@localhost) [(none)]> RESET SLAVE  ALL;

### 基于 GTID 的 MySQL 高可用架构设计与实施方法 #### 1. 启动 GTID 模式 为了启用 GTID 模式,在启动 MySQL 实例时需添加 `gtid_mode=on` 和 `enforce_gtid_consistency=on` 参数[^1]。这些参数确保事务的唯一性和一致性。 #### 2. GTID 结构及其优势 GTID 是一种全局事务 ID,由服务器 ID 和事务 ID 组成[^2]。相比传统基于二进制日志位置的方式,GTID 提供了更简单的主从切换机制(failover),无需手动定位日志文件和偏移量。此外,它还简化了主从复制的配置过程,并增强了数据安全性,保证数据一致性和零丢失。 #### 3. 主从同步状态监测 在高可用环境中,主从同步可能会因多种原因而失败。可以通过执行命令 `show slave status \G` 来检查从库的状态。如果发现 `Slave_SQL_Running=no`,则表明同步已中断。可能的原因包括从库上的写操作引发冲突或者由于服务重启导致某些事务被回滚[^3]。 #### 4. 复制环境健康检查 通过 MasterHA 工具可以定期对整个复制环境进行健康检查。例如,运行以下命令可验证 MySQL 复制链路是否正常: ```bash [root@server6 masterha]# masterha_check_repl --conf=/etc/masterha/app1.cnf ``` 当返回消息显示 “MySQL Replication Health is OK.” 则说明当前复制环境处于良好状态[^4]。 #### 5. MMM 架构支持 对于更高层次的需求,可以考虑采用 MMM (Multi-Master Replication Manager for MySQL) 架构来管理多主复制集群。该方案会在每个节点上安装监控组件以实时跟踪各实例的工作情况;同时将非活跃主机设为只读模式以防意外修改破坏整体稳定性[^5]。 #### 总结 综上所述,利用 GTID 可构建更为稳定可靠的 MySQL 高可用体系。不仅能够有效减少人为干预成本,还能极大提升系统的容错能力和服务质量。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值