MySQL 8搭建从库 GTID,排除部分库
在MySQL数据库中,GTID(Global Transaction ID)是一种用于唯一标识事务的机制,它可以帮助我们更轻松地实现主从同步。本文将介绍如何在MySQL 8中搭建一个从库,并对其中的部分库进行排除。
什么是GTID?
GTID是MySQL 5.6引入的一个特性,用于解决传统的基于文件名和位置的复制方式的一些问题。GTID可以确保主从库之间的数据一致性,并简化了故障恢复和拓扑变更的处理过程。
搭建MySQL 8从库
首先,我们需要有一个已经搭建好的MySQL主库,以及一个新的MySQL从库。假设我们的主库IP地址为192.168.1.100
,从库IP地址为192.168.1.200
。
主库配置
在主库的配置文件my.cnf
中添加以下内容:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
gtid_mode = ON
enforce_gtid_consistency = ON
然后重启MySQL服务。
从库配置
在从库的配置文件my.cnf
中添加以下内容:
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
gtid_mode = ON
enforce_gtid_consistency = ON
然后重启MySQL服务。
接下来,我们需要在主库上创建用于复制的用户,并给予相应的权限:
CREATE USER 'replication'@'192.168.1.200' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.200';
在主库上执行SHOW MASTER STATUS;
命令,记录下File和Position的值。
在从库上执行以下命令进行配置:
CHANGE MASTER TO
MASTER_HOST = '192.168.1.100',
MASTER_USER = 'replication',
MASTER_PASSWORD = 'password',
MASTER_LOG_FILE = '主库中的File值',
MASTER_LOG_POS = 主库中的Position值;
然后启动从库的复制进程:
START SLAVE;
GTID复制排除部分库
有时候,我们希望从库不复制主库中的某些库,这时可以通过设置replicate_ignore_db
参数来实现。首先,在从库上停止复制进程:
STOP SLAVE;
然后在从库的配置文件my.cnf
中添加以下内容:
replicate_ignore_db = db1, db2
这里的db1
和db2
是需要排除的库的名称,多个库可以用逗号隔开。接着重新启动从库的复制进程。
状态图示例
下面是一个使用mermaid语法绘制的状态图示例:
stateDiagram
[*] --> A
A --> B
B --> C
C --> [*]
饼状图示例
下面是一个使用mermaid语法绘制的饼状图示例:
pie
title 数据分布
"A" : 40
"B" : 30
"C" : 20
"D" : 10
通过以上步骤,我们可以成功搭建一个MySQL 8的从库,并对其中的部分库进行排除。GTID机制可以帮助我们更安全、高效地实现主从同步,提升数据库的稳定性和可靠性。希望本文对您有所帮助。