mysql主从复制,指定库和表
封面图
•
2025-10-26
•
MySQL
118
0
0
0
在 MySQL 主从复制中,默认是复制整个数据库的所有表。但如果你只想复制**指定的数据库(database)或指定的表(table)**,可以通过以下方式实现。 --- ## ✅ 一、主从复制中指定库和表的方法 ### 1. **使用 `replicate-do-db` 和 `replicate-ignore-db`** 这些参数用于控制哪些数据库被复制到从库。 #### 在从库的配置文件中(如 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`): ```ini [mysqld] server-id=2 log-bin=mysql-bin binlog-format=ROW replicate-do-db=your_database_name # replicate-ignore-db=mysql ``` > 注意:`replicate-do-db` 表示只复制这个数据库,其他不复制;`replicate-ignore-db` 是忽略某个数据库。 --- ### 2. **使用 `replicate-do-table` 和 `replicate-ignore-table`** 如果你只想复制某个数据库中的某些表,可以使用 `replicate-do-table` 和 `replicate-ignore-table`。 #### 示例: ```ini [mysqld] server-id=2 log-bin=mysql-bin binlog-format=ROW replicate-do-db=your_database_name replicate-do-table=your_database_name.table1 replicate-do-table=your_database_name.table2 ``` > 注意:`replicate-do-table` 的格式是 `database.table`,必须写全。 --- ### 3. **使用 `replicate-wild-do-table` 和 `replicate-wild-ignore-table`** 如果想通过通配符匹配多个表,可以使用: ```ini replicate-wild-do-table=your_database_name.table% ``` 例如: - `your_database_name.table1` - `your_database_name.table2` - `your_database_name.table3` --- ## ✅ 二、注意事项 | 项目 | 说明 | |------|------| | `replicate-do-db` | 只复制指定的数据库 | | `replicate-ignore-db` | 忽略指定的数据库 | | `replicate-do-table` | 只复制指定的表(需要写全数据库名) | | `replicate-wild-do-table` | 使用通配符匹配表名 | | `binlog-format` | 推荐设置为 `ROW`,以确保主从一致性 | | `server-id` | 主从服务器必须不同 | --- ## ✅ 三、查看当前复制过滤规则 你可以登录到从库的 MySQL 中执行以下命令来查看当前的复制过滤规则: ```sql SHOW SLAVE STATUS\G ``` 然后查找以下字段: - `Replicate_Do_DB` - `Replicate_Ignore_DB` - `Replicate_Do_Table` - `Replicate_Ignore_Table` - `Replicate_Wild_Do_Table` - `Replicate_Wild_Ignore_Table` --- ## ✅ 四、动态修改复制规则(可选) 你也可以在运行时动态修改复制规则(不推荐长期使用,建议在配置文件中设置): ```sql STOP SLAVE; SET GLOBAL REPLICATE_DO_DB = 'your_database'; SET GLOBAL REPLICATE_DO_TABLE = 'your_database.table1'; START SLAVE; ``` > 注意:这种方式在重启 MySQL 后会失效,建议还是用配置文件方式。 --- ## ✅ 五、总结 | 需求 | 配置项 | |------|--------| | 只复制一个数据库 | `replicate-do-db=your_db` | | 忽略一个数据库 | `replicate-ignore-db=your_db` | | 只复制某张表 | `replicate-do-table=your_db.table` | | 匹配多个表(通配符) | `replicate-wild-do-table=your_db.table%` | --- 如果你有具体的场景(比如只复制某个数据库的某些表),我可以帮你写完整的配置示例。欢迎继续提问!
上一篇:
mysql group by,count用法
下一篇:
MySQL 使用 SSL 连接配置
标题录入,一次不能超过6条
返回顶部
留言
留言
评论