在MySQL中,主从复制是一种常用的数据冗余和负载均衡的方法。基于GTID(全局事务标识符)的复制方式可以提高复制的管理和监控效率,避免了传统复制中的一些问题。以下是一个详细的基于GTID的MySQL主从复制实现教程。

环境准备

假设我们有两台服务器: - 主服务器:Master, IP: 192.168.1.100 - 从服务器:Slave, IP: 192.168.1.101

1. 配置主服务器

修改主服务器的配置

在主服务器的MySQL配置文件中(通常是/etc/my.cnf/etc/mysql/my.cnf),添加以下设置以开启GTID复制:

[mysqld]
server-id = 1
log-bin = mysql-bin
gtid-mode = ON
enforce-gtid-consistency = ON
binlog-format = ROW
  • server-id:服务器的唯一标识符。
  • log-bin:启用二进制日志。
  • gtid-mode:开启GTID。
  • enforce-gtid-consistency:强制GTID一致性。
  • binlog-format:设置二进制日志格式为ROW。

重启MySQL服务

sudo systemctl restart mysqld

创建复制账号

在主服务器上,创建一个用于复制的用户:

CREATE USER 'replica_user'@'%' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';

查看GTID信息

运行以下SQL语句,获取当前的GTID信息:

SHOW MASTER STATUS;

记下返回结果中的FilePosition字段的值,这些是之后配置从服务器时需要用到的。

2. 配置从服务器

修改从服务器的配置

在从服务器的MySQL配置文件中,添加以下设置:

[mysqld]
server-id = 2
gtid-mode = ON
enforce-gtid-consistency = ON

重启MySQL服务

sudo systemctl restart mysqld

配置从服务器复制

在从服务器上执行以下SQL命令,配置连接到主服务器的复制:

CHANGE MASTER TO
    MASTER_HOST = '192.168.1.100',
    MASTER_USER = 'replica_user',
    MASTER_PASSWORD = 'replica_password',
    MASTER_AUTO_POSITION = 1;
  • MASTER_HOST:主服务器的IP地址。
  • MASTER_USER:刚才创建的复制用户。
  • MASTER_PASSWORD:复制用户的密码。
  • MASTER_AUTO_POSITION:启用GTID模式。

启动复制进程

接下来,启动复制进程:

START SLAVE;

3. 验证主从复制

在从服务器上,运行以下命令检查复制状态:

SHOW SLAVE STATUS\G;

确保Slave_IO_RunningSlave_SQL_Running都显示为Yes,这表示主从复制正在正常运行。

4. 测试主从复制

在主服务器上创建一个测试数据库和表:

CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT PRIMARY KEY, value VARCHAR(100));
INSERT INTO test_table VALUES (1, 'Hello World');

然后在从服务器上查询该表,确保数据已经复制:

USE test_db;
SELECT * FROM test_table;

总结

通过以上步骤,我们成功实现了基于GTID的MySQL主从复制。这种方式可以简化复制管理,自动处理主从切换时的任务,有效防止数据丢失。在实际生产环境中,请确保适当的监控和备份策略,以确保数据的安全和可用性。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部