Linux服务器MySQL 8单Schema Replica配置可行性及实现步骤咨询
MySQL 8 仅同步单个Schema的主从复制配置方案
完全可行,MySQL 8支持基于指定Schema(库)的过滤复制,可实现仅同步目标Schema的需求,具体配置流程如下:
一、主库(Master)配置
修改主库配置文件
编辑主库的my.cnf(通常路径为/etc/my.cnf或/etc/mysql/my.cnf),添加或调整以下参数:server-id = 1 # 主库唯一ID,需与从库不同 log_bin = /var/log/mysql/mysql-bin.log # 开启二进制日志,路径按需调整 binlog_do_db = target_schema_name # 仅记录指定Schema的二进制日志 binlog_format = ROW # 推荐行格式,避免语句级复制的兼容性问题保存后重启主库服务:
systemctl restart mysqld创建复制专用账号
登录主库MySQL控制台:mysql -u root -p执行SQL创建授权复制用户(替换
从库IP和自定义密码):CREATE USER 'repl'@'从库IP地址' IDENTIFIED WITH mysql_native_password BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从库IP地址'; FLUSH PRIVILEGES;注:MySQL 8默认使用
caching_sha2_password认证,部分从库客户端可能不兼容,因此采用mysql_native_password更稳妥。导出目标Schema并记录主库状态
先锁定主库表以保证备份一致性:FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;记录结果中的
File和Position值(后续从库配置需用到)。新开终端执行导出命令(替换
target_schema_name):mysqldump -u root -p --databases target_schema_name > schema_backup.sql导出完成后回到主库控制台解锁表:
UNLOCK TABLES;
二、从库(Slave)配置
修改从库配置文件
编辑从库的my.cnf,添加或调整以下参数:server-id = 2 # 从库唯一ID,需与主库不同 relay_log = /var/log/mysql/mysql-relay-bin.log # 开启中继日志 read_only = 1 # 设置从库只读(超级用户仍可写入) replicate_do_db = target_schema_name # 仅应用指定Schema的复制日志保存后重启从库服务:
systemctl restart mysqld导入主库备份
将主库导出的schema_backup.sql传输到从库,执行导入:mysql -u root -p < schema_backup.sql配置并启动复制
登录从库MySQL控制台,执行复制配置(替换主库IP、密码及之前记录的File/Position值):CHANGE MASTER TO MASTER_HOST='主库IP地址', MASTER_USER='repl', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.xxxxxx', MASTER_LOG_POS=xxxx;启动复制进程:
START SLAVE;检查复制状态:
SHOW SLAVE STATUS\G;确认
Slave_IO_Running和Slave_SQL_Running均为Yes,则复制配置成功。
注意事项
- 主从库MySQL版本尽量保持一致,避免版本差异导致的复制异常
binlog_do_db(主库端)和replicate_do_db(从库端)配合使用,可最大程度减少不必要的日志传输和应用- 若需动态调整过滤规则,可使用
SET GLOBAL replicate_do_db='target_schema_name';,但需写入配置文件保证重启后生效 - 从库的
read_only参数仅限制普通用户写入,超级用户仍可操作,若需严格只读可额外配置super_read_only=1
内容的提问来源于stack exchange,提问作者Rajesh Gandhavarapu
相关产品推荐
相关产品推荐

