可以,完全没问题。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;
记下 File 和 Position。
第 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 用户,不需要为每个从库单独创建 |
| 从库独立 | 每个从库独立配置,互不影响。一个从库挂了不影响其他从库同步 |
你是打算再加一个从库吗?