Mysql主从复制忽略user库实现方法

1. 概述

在Mysql主从复制中,有时候我们希望在从库中忽略某些库的复制,这样可以避免一些不必要的数据同步。本文将介绍如何实现在Mysql主从复制中忽略user库的复制。

2. 流程

下表展示了实现该功能的步骤:

步骤 动作
1 设置主库配置
2 创建一个新用户并授权
3 配置主库的binlog-do-db参数
4 启动主库
5 设置从库配置
6 启动从库

3. 详细步骤

3.1 设置主库配置

首先,我们需要在主库上进行一些配置。编辑主库的配置文件my.cnf,添加以下内容:

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=!user
  • server-id:指定主库的唯一ID,可以是任意正整数。
  • log-bin:开启二进制日志,记录主库上的所有操作。
  • binlog-do-db:指定需要复制的数据库,使用!表示不复制。这里我们将user库设置为不复制。

保存并退出配置文件后,重启主库使配置生效。

3.2 创建一个新用户并授权

为了在从库上进行复制,我们需要在主库上创建一个新的用户,并授予复制权限。打开主库的命令行终端,执行以下命令:

CREATE USER 'replication'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication';
FLUSH PRIVILEGES;
  • replication:新用户的用户名,可以根据实际情况进行修改。
  • password:新用户的密码,可以根据实际情况进行修改。

3.3 配置主库的binlog-do-db参数

在主库上,我们需要告诉它不要复制user库。打开主库的命令行终端,执行以下命令:

USE mysql;
UPDATE db SET replication_group_id = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" WHERE name = "user";
FLUSH TABLES WITH READ LOCK;
  • aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:一个随机生成的UUID。
  • user:需要忽略复制的数据库名称。

3.4 启动主库

在主库上,我们需要解锁表并启动复制。继续在主库的命令行终端执行以下命令:

UNLOCK TABLES;

3.5 设置从库配置

接下来,我们需要在从库上进行一些配置。编辑从库的配置文件my.cnf,添加以下内容:

[mysqld]
server-id=2
log-bin=mysql-bin
  • server-id:指定从库的唯一ID,可以是任意正整数。
  • log-bin:开启二进制日志,记录从库上的所有操作。

保存并退出配置文件后,重启从库使配置生效。

3.6 启动从库

在从库上,我们需要告诉它从哪个主库进行复制。打开从库的命令行终端,执行以下命令:

CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replication', MASTER_PASSWORD='password';
START SLAVE;
  • master_ip:主库的IP地址。
  • replication:在主库上创建的新用户。
  • password:在主库上创建的新用户的密码。

4. 结论

通过以上步骤,我们成功实现了在Mysql主从复制中忽略user库的复制。主库上的user库的变更将不会传播到从库上。

5. 参考链接

  • [Mysql官方文档 - Replication Implementation](