You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL主从复制环境中新增数据库的操作咨询

MySQL主从复制环境中新增数据库的操作咨询

嘿,我来帮你梳理下这个问题的解决方案,不用太担心停服务的事儿~

首先明确告诉你:不需要停止主从服务器,可以通过修改配置文件+重载服务的方式让新配置生效,甚至还能结合动态设置快速生效,下面分主库和从库给你一步步说:

主库操作步骤

  1. 先在主库上创建database4(如果还没建的话):
    CREATE DATABASE database4;
    
  2. 找到主库的MySQL配置文件(比如/etc/mysql/my.cnf或者/etc/mysql/mysql.conf.d/mysqld.cnf,不同系统路径可能有差异),在现有binlog_do_db配置后面新增一行:
    binlog_do_db            = database4
    
  3. 重载MySQL服务让配置生效——这个操作不会中断现有连接,完全不用停服务:
    • 如果你用的是systemd系统(比如Ubuntu 16.04+、CentOS 7+):
      sudo systemctl reload mysql
      
    • 要是是sysvinit系统:
      sudo service mysql reload
      
  4. 验证配置是否生效:你可以在database4里创建一张测试表,然后查看主库的binlog日志,确认这个操作被记录进去了;或者执行SHOW VARIABLES LIKE 'binlog_do_db';,不过要注意,这个命令只会显示最后一条binlog_do_db配置,但实际所有配置的库都会被记录binlog,所以看实际操作的同步情况更准确。

从库操作步骤

  1. 先在从库上创建database4(避免主库同步操作过来时因为库不存在报错):
    CREATE DATABASE database4;
    
  2. 同样修改从库的MySQL配置文件,新增一行:
    replicate_do_db            = database4
    
  3. 重载从库的MySQL服务:
    sudo systemctl reload mysql
    
  4. 重启复制线程,让新的复制规则生效:
    STOP SLAVE;
    START SLAVE;
    
  5. 验证同步效果:在主库的database4里做个操作(比如插入一条数据),然后去从库的database4里查看是否同步过来,就知道配置生效了。

额外提醒

如果图省事,你也可以用动态设置的方式快速生效(比如主库执行SET GLOBAL binlog_do_db = 'database1,database2,database3,database4';,从库执行SET GLOBAL replicate_do_db = 'database1,database2,database3,database4';然后重启复制线程),但一定要同步修改配置文件,不然MySQL重启后,动态设置的规则会丢失,又回到原来的三个库。

另外,要是你的MySQL版本特别旧(比如5.5及更早),可能重载配置不生效,这时候才需要考虑重启,但现在大部分生产环境用的都是支持重载的新版本,所以不用太担心。

备注:内容来源于stack exchange,提问作者erwann le guevedec

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 12:37:57