实现MySQL主从同步跳过指定表的流程
流程图:
graph TD;
A[创建主从复制] --> B[设置主服务器配置];
B --> C[设置从服务器配置];
C --> D[从服务器开始复制];
D --> E[跳过指定表];
详细步骤:
- 创建主从复制
- 首先,需要确保主服务器和从服务器都已经安装并启动了MySQL数据库。
- 在主服务器上,通过编辑
my.cnf
文件,设置以下参数:# 开启二进制日志 log-bin=mysql-bin # 指定要复制的数据库 binlog-do-db=database_name
- 在从服务器上,通过编辑
my.cnf
文件,设置以下参数:# 开启从服务器 server-id=2 # 指定要忽略复制的数据库 replicate-ignore-db=database_name
- 设置主服务器配置
- 登录到主服务器的MySQL命令行界面。
- 创建用于复制的用户,并授予适当的权限:
CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%'; FLUSH PRIVILEGES;
- 查看主服务器状态,并记录下File和Position的值:
SHOW MASTER STATUS;
- 设置从服务器配置
- 登录到从服务器的MySQL命令行界面。
- 设置从服务器连接主服务器的配置:
CHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='master_log_file', MASTER_LOG_POS=master_log_pos;
- 启动从服务器与主服务器的连接:
START SLAVE;
- 查看从服务器状态,确保复制已经开始:
SHOW SLAVE STATUS\G
- 从服务器开始复制
- 从服务器会开始复制来自主服务器的数据。
- 通过在主服务器上进行操作,可以验证数据是否正确地同步到从服务器上。
- 跳过指定表
- 如果需要跳过指定表,可以在从服务器上执行以下命令:
SET GLOBAL sql_slave_skip_counter = 1;
- 然后,重新启动从服务器的复制:
START SLAVE;
- 如果需要跳过指定表,可以在从服务器上执行以下命令:
代码解释:
-
设置主服务器配置的代码:
# 开启二进制日志 log-bin=mysql-bin # 指定要复制的数据库 binlog-do-db=database_name
log-bin=mysql-bin
开启二进制日志,用于记录主服务器上的所有更改操作。binlog-do-db=database_name
指定要复制的数据库。
-
设置从服务器配置的代码:
# 开启从服务器 server-id=2 # 指定要忽略复制的数据库 replicate-ignore-db=database_name
server-id=2
设置从服务器的唯一标识符。replicate-ignore-db=database_name
指定要忽略复制的数据库,可以用逗号分隔多个数据库。
-
设置从服务器连接主服务器的配置的代码:
CHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='master_log_file', MASTER_LOG_POS=master_log_pos;
MASTER_HOST='master_host'
指定主服务器的主机名或IP地址。MASTER_USER='replication_user'
指定用于复制的用户。MASTER_PASSWORD='password'
指定复制用户的密码。MASTER_LOG_FILE='master_log_file'
指定主服务器的二进制日志文件名。MASTER_LOG_POS=master_log_pos
指定主服务器的二进制日志位置。
-
查看从服务器状态的代码:
SHOW SLAVE STATUS\G
SHOW SLAVE STATUS
用于查看从服务器的复制状态。\G
以更易读的格式显示结果。
-
跳过指定表的代码: