首先配置主库启用二进制日志并设置server-id,创建复制账号;然后在从库设置不同server-id并使用replicate-do-db指定同步数据库;接着在主库执行SHOW MASTER STATUS获取日志文件和位置,在从库通过CHANGE MASTER TO指向主库信息并启动复制;最后检查SHOW SLAVE STATUS中Slave_IO_Running和Slave_SQL_Running是否均为Yes以确认复制正常。注意防火墙开放3306端口、主从时间同步及跨库操作可能被忽略的问题,建议通过备份恢复初始化从库数据以确保一致性。
MySQL同步指定数据库,通常通过主从复制(Replication)实现。只需要配置主库和从库,在从库上只同步你指定的数据库即可。整个过程不复杂,关键在于正确设置过滤规则。
1. 启用主库的二进制日志并配置server-id
要开启复制,主库必须启用二进制日志,并设置唯一的server-id。
编辑主库的my.cnf或my.ini文件:
[mysqld] server-id = 1 log-bin = mysql-bin binlog-format = ROW
重启MySQL服务使配置生效。
创建用于复制的账号:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;
2. 配置从库并指定要同步的数据库
从库也需要设置唯一的server-id,并且不能与主库相同。
编辑从库配置文件:
[mysqld] server-id = 2 replicate-do-db = your_database_name <strong># 只同步这个数据库</strong>
说明:replicate-do-db 表示只应用来自该数据库的事件。如果有多个数据库需要同步,可以添加多行,每行一个数据库。
注意:如果使用了replicate-do-db,跨库操作(如主库执行USE other_db; UPDATE your_db.table SET ...
)可能不会被正确同步,建议保持操作在目标数据库内进行。
3. 获取主库状态并启动复制
在主库上执行:
SHOW MASTER STATUS;
记录下File和Position值。
在从库上配置主库连接信息:
CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', # 对应上面的File MASTER_LOG_POS=1234; # 对应上面的Position <p>START SLAVE;</p>
查看从库复制状态:
SHOW SLAVE STATUSG
检查Slave_IO_Running和Slave_SQL_Running是否都为Yes。
4. 常见问题与注意事项
- 确保主从库时间同步,避免复制延迟误判。
- 防火墙开放3306端口,允许从库连接主库。
- 使用replicate-do-db时,SQL语句默认作用于指定数据库,否则可能跳过。
- 若需更灵活控制(如忽略某些表),可使用replicate-ignore-table等参数。
- 备份恢复方式初始化从库更安全:先在主库导出指定库数据,导入从库后再开始复制。
基本上就这些。只要主库开启binlog,从库配置好过滤规则,就能实现只同步指定数据库。关键是配置准确,状态检查到位。
mysql word 防火墙 端口 配置文件 常见问题 sql语句 sql mysql 事件 position table 数据库