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

这里的db1db2是需要排除的库的名称,多个库可以用逗号隔开。接着重新启动从库的复制进程。

状态图示例

下面是一个使用mermaid语法绘制的状态图示例:

stateDiagram
    [*] --> A
    A --> B
    B --> C
    C --> [*]

饼状图示例

下面是一个使用mermaid语法绘制的饼状图示例:

pie
    title 数据分布
    "A" : 40
    "B" : 30
    "C" : 20
    "D" : 10

通过以上步骤,我们可以成功搭建一个MySQL 8的从库,并对其中的部分库进行排除。GTID机制可以帮助我们更安全、高效地实现主从同步,提升数据库的稳定性和可靠性。希望本文对您有所帮助。