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](