mysql8.0 GTID主从复制搭建

本文详细介绍了如何在MySQL8.0.11中使用GTID模式搭建主从复制环境,包括准备两台机器、配置master和slave、运行命令及测试步骤。确保防火墙关闭,两台机器能互相访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文是mysql8.0.11数据库 GTID模式的主从复制搭建过程,如有问题还望指正。

1、准备环境

1.1 准备机器

准备两台安装好MySQL的机器:192.168.1.113和192.168.1.108
master:192.168.1.113
slave:192.168.1.108

1.2 防火墙关闭,互相可以访问通

2、开始配置

2.1 master机器配置
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
#设置3306端口
port = 3306 
# 设置mysql的安装目录
basedir="D:\mysql-8.0.11-winx64"
# 设置mysql数据库的数据的存放目录
datadir="D:\mysql-8.0.11-winx64\data"
# 允许最大连接数
max_connections=500
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#GTID:主18 #服务器id
server_id=1
#开启gtid模式
gtid_mode=on
#强制gtid一致性,开启后对于特定create table不被支持
enforce_gtid_consistency=on
#binlog
log_bin=master-binlog
log-slave-updates=1
#强烈建议,其他格式可能造成数据不一致
binlog_format=row
#relay log
skip_slave_start=1
2.2 slave机器配置
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
#设置3306端口
port = 3306 
# 设置mysql的安装目录
basedir="D:\mysql-8.0.11-winx64"
# 设置mysql数据库的数据的存放目录
datadir="D:\mysql-8.0.11-winx64\data"
# 允许最大连接数
max_connections=500
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#GTID:从
#服务器id
server_id=2#开启gtid模式
gtid_mode=on
#强制gtid一致性,开启后对于特定create table不被支持
enforce_gtid_consistency=on
#binlog
log_bin=master-binlog
log-slave-updates=1#强烈建议,其他格式可能造成数据不一致
binlog_format=row
#relay log
skip_slave_start=1

重启两台机器mysql服务,运行命令

show variables like '%gtid%';

可以看到GTID模式开启
在这里插入图片描述

2.3 master运行命令
create user 'repl'@'%' identified by 'repl';
grant replication slave,replication client on *.* to 'repl'@'%';
flush privileges;
2.4 slave运行命令
change master to master_host='192.168.1.113', master_port=3306,master_user='repl', master_password='repl',master_auto_position=1;
start slave;

3 测试

在master上创建一个数据库test;刷新slave数据库,看到有一个test数据库则为成功;

### 配置 MySQL 8.0 主从复制 #### 设置主服务器 为了建立主从关系,在主服务器上需完成如下配置: - 修改`my.cnf`文件,确保启用了二进制日志记录以及指定了唯一的server-id。 ```ini [mysqld] log-bin=mysql-bin server-id=1 gtid-mode=ON enforce-gtid-consistency=true ``` 保存更改后,重启MySQL服务以应用新的设置[^2]。 对于Docker环境中的实例,则可以通过命令来实现重启操作: ```bash docker restart mysql8-master ``` #### 创建用于复制的账户 进入MySQL控制台并创建具有REPLICATION SLAVE权限的新用户。这一步骤是为了让从服务器能够连接至主服务器获取更新数据流。 ```sql CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES; ``` #### 获取当前二进制日志位置 在继续之前,锁定表单防止任何写入活动影响到即将开始的数据同步过程,并记下此时此刻的binlog坐标作为后续配置依据之一。 ```sql FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; ``` #### 备份现有数据库结构与数据 使用合适的工具导出整个数据库的内容准备迁移到其他地方去;这里推荐采用官方提供的mysqldump实用程序来进行这项工作。 #### 解锁表格以便恢复正常运作 一旦备份结束就立即解除先前施加于系统的读取锁定状态从而恢复正常的业务处理能力。 ```sql UNLOCK TABLES; ``` #### 设置从服务器 同样地调整目标机器上的MySQL配置参数使其具备唯一的服务编号(server-id),并且开启全局事务识别器(GTID)支持功能。 ```ini [mysqld] server-id=2 gtid-mode=ON enforce-gtid-consistency=true ``` 接着启动相应的容器化组件(如果适用的话) ```bash docker restart mysql8-replica1 mysql8-replica2 ``` #### 初始化从站端点 首次运行时应当通过CHANGE MASTER语句指定源地址及相关认证信息连同必要的偏移量一起传递给slave进程初始化链接通道。 ```sql CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='repl_user', MASTER_PASSWORD='password', MASTER_AUTO_POSITION = 1; START SLAVE; ``` 最后验证一下副本是否正常运转起来没有遇到什么障碍物阻碍其前进的步伐。 ```sql SHOW SLAVE STATUS\G ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值