我有一个带有两台服务器的 mysql 复制。它上面实际上有 3 个数据库。
在 master 上:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 4
max_binlog_size = 1G
bind-address = 0.0.0.0
port = 3306
binlog_do_db = database1
binlog_do_db = database2
binlog_do_db = database3
对于奴隶来说:
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 4
max_binlog_size = 1G
bind-address = 127.0.0.1
port = 3306
replicate_do_db = database1
replicate_do_db = database2
replicate_do_db = database3
但我需要添加一个新的数据库,即数据库 4。我必须为此停止服务器吗?只需在 cnf 文件中添加基础,就可以动态地考虑到这一点吗?
谢谢
答案1
没有办法要求主服务器发送它从未配置过的数据库。所以...
计划 A:将行添加到配置中前创建数据库。是的,需要重新启动每个数据库。
计划 B(您已经在主服务器上拥有数据库):
- 停止写入主
- 转储 db4
- 更新两个配置文件
- 在副本上加载转储
- 重新启动
配置注意事项:
- 如果没有 binlog/replica_do/ignore 配置,则所有内容都将被复制。
- binlog_do 指定从主服务器发送什么;replicate_do 指定允许进入副本服务器的内容。也就是说,它们具有相同的效果。(当只有一些副本服务器需要接收数据时,这些设置才有用。)