如何在复制时添加新的数据库?

如何在复制时添加新的数据库?

我有一个带有两台服务器的 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(您已经在主服务器上拥有数据库):

  1. 停止写入主
  2. 转储 db4
  3. 更新两个配置文件
  4. 在副本上加载转储
  5. 重新启动

配置注意事项:

  • 如果没有 binlog/replica_do/ignore 配置,则所有内容都将被复制。
  • binlog_do 指定从主服务器发送什么;replicate_do 指定允许进入副本服务器的内容。也就是说,它们具有相同的效果。(当只有一些副本服务器需要接收数据时,这些设置才有用。)

相关内容