MySQL 原生支持一主多从

可以,完全没问题。MySQL 原生支持一主多从,操作也很简单。

配置方法

假设你现有主库 124.156.196.225:30416 已经带了一个从库 192.168.1.70,要再加一个新从库:

第 1 步:主库检查 repl 用户(如果已配过就不需要)

-- 确认 repl_fn 用户已存在且授权给所有 IP
SELECT user, host FROM mysql.user WHERE user='repl_fn';

第 2 步:主库查当前 binlog 位置(锁住确保位置不变)

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

记下 FilePosition

第 3 步:新从库全量导入数据

用 mysqldump 从主库导出:

mysqldump -h 124.156.196.225 -P 30416 -u root -p \
  --databases avdb \
  --source-data=2 --single-transaction \
  --routines --triggers --events \
  --set-gtid-purged=OFF > /tmp/avdb_full.sql

导入到新从库:

mysql -h 新从库IP -u root -p < /tmp/avdb_full.sql

第 4 步:新从库配主从

CHANGE MASTER TO
  MASTER_HOST='124.156.196.225',
  MASTER_PORT=30416,
  MASTER_USER='repl_fn',
  MASTER_PASSWORD='***',
  MASTER_LOG_FILE='binlog.xxxxxx',
  MASTER_LOG_POS=xxxxx;
START SLAVE;

第 5 步:主库解锁

UNLOCK TABLES;

注意事项

维度 说明
性能影响 主库的 binlog 会分发到所有从库,从库越多主库的 IO 压力越大。一般建议不超过 5-10 个从库
网络延迟 各从库 Seconds_Behind_Master 可能不同,取决于从库性能和网络
repl 用户 所有从库共用同一个 repl_fn 用户,不需要为每个从库单独创建
从库独立 每个从库独立配置,互不影响。一个从库挂了不影响其他从库同步

你是打算再加一个从库吗?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注