MySQL主从仅同步指定库
2025-05-20 22:00
MySQL
SQL Server
Oracle
MySQL
PostgreSQL
NoSQL
大数据
其他数据库
Windows
Windows Server
Linux
macOS
嵌入式
APACHE
NGINX
redis
Docker
git
互联网
tomcat
Html/Css
JavaScript
jQuery
HTML5
Angular
React
Vue
小程序
架构设计
面向对象
设计模式
领域驱动设计
Android开发
iOS开发
Flutter
鸿蒙
其他手机开发
敏捷开发
项目与团队管理
软件工程其他
.NET
Java
Python
Go
PHP
C++
Ruby
Swift
C语言
Erlang
Delphi
Scala
R语言
Verilog
Dart
Rust
其他语言
asp
nodejs
读书区
翻译区
求职面试
计算机图形学
软件测试
菜谱
SEO技术
摄影
生活技巧
5
0
0
0
标题录入
封面图
在 MySQL 的主从复制环境中,如果需要实现主从之间仅同步指定的数据库(而不是整个实例的所有数据库),可以通过配置文件和 SQL 过滤规则来实现。以下是具体的步骤和配置方法: --- ### 1. 修改主服务器的配置文件 (`my.cnf` 或 `my.ini`) 在主服务器上,确保启用了二进制日志,并且设置了唯一的服务器 ID。例如: ```ini [mysqld] server-id=1 log-bin=mysql-bin binlog-do-db=your_database_name # 指定要同步的数据库 ``` - **`server-id`**: 必须是一个唯一的值,用于标识主服务器。 - **`log-bin=mysql-bin`**: 启用二进制日志记录。 - **`binlog-do-db`**: 指定要同步的数据库名称。 如果需要同步多个数据库,可以多次使用 `binlog-do-db` 配置项,或者通过正则表达式过滤(详见后续说明)。 --- ### 2. 修改从服务器的配置文件 (`my.cnf` 或 `my.ini`) 在从服务器上,也需要设置唯一的服务器 ID,并启用从复制功能。例如: ```ini [mysqld] server-id=2 relay-log=mysql-relay-bin read-only=1 # 设置为只读模式(可选) ``` - **`server-id=2`**: 确保从服务器的 ID 不同于主服务器。 - **`relay-log=mysql-relay-bin`**: 指定中继日志文件名。 - **`read-only=1`**: 可选配置,将从服务器设置为只读模式以防止误操作。 --- ### 3. 在从服务器上配置主从关系 在从服务器上执行以下命令,建立主从关系: ```sql CHANGE MASTER TO MASTER_HOST='主服务器IP', MASTER_USER='复制用户', MASTER_PASSWORD='复制用户的密码', MASTER_LOG_FILE='mysql-bin.000001', -- 主服务器当前的二进制日志文件名 MASTER_LOG_POS=1234; -- 主服务器当前的日志位置 ``` - **`MASTER_HOST`**: 主服务器的 IP 地址。 - **`MASTER_USER` 和 `MASTER_PASSWORD`**: 创建一个专门用于复制的用户,例如: ```sql CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%'; ``` - **`MASTER_LOG_FILE` 和 `MASTER_LOG_POS`**: 使用 `SHOW MASTER STATUS` 命令获取这些值。 --- ### 4. 配置从服务器的过滤规则 为了确保从服务器仅同步指定的数据库,可以在从服务器上配置过滤规则。有以下两种方式: #### 方法 1: 使用 `replicate-do-db` 在从服务器的配置文件中添加以下内容: ```ini replicate-do-db=your_database_name ``` 这会告诉从服务器仅同步指定的数据库。 #### 方法 2: 使用 `replicate-wild-do-table` 如果需要更复杂的过滤规则(例如同步某个数据库下的特定表),可以使用通配符: ```ini replicate-wild-do-table=your_database_name.% ``` 这会同步 `your_database_name` 数据库中的所有表。 --- ### 5. 启动主从复制 完成上述配置后,在从服务器上启动复制进程: ```sql START SLAVE; ``` 检查主从状态: ```sql SHOW SLAVE STATUS\G ``` 重点关注以下字段: - `Slave_IO_Running`: 应为 `Yes`。 - `Slave_SQL_Running`: 应为 `Yes`。 如果这两个字段都为 `Yes`,说明主从复制已成功启动。 --- ### 注意事项 1. **避免遗漏数据**:确保主服务器上的 `binlog-do-db` 或 `replicate-do-db` 配置正确,否则可能导致从服务器无法同步指定的数据库。 2. **测试环境验证**:在生产环境部署前,建议在测试环境中进行充分验证。 3. **性能影响**:如果主服务器上有大量非同步的数据库,可能会对主服务器的性能产生一定影响。 通过以上步骤,您可以成功配置 MySQL 主从仅同步指定的数据库。如果有其他问题,请随时补充说明!
上一篇:
MYSQL批量插入数据库实现语句性能分析
下一篇:
mysql导出binlog日志
标题录入,一次不能超过6条
怎么分辨对方是朋友还是敌人
T:0.015238s,M:288.47 KB
返回顶部
留言
留言
评论