温馨提示×

linux mariadb如何主从同步

小樊
41
2026-10-24 20:34:19
栏目: 云计算

下面给你一份 Linux + MariaDB 主从复制(Master–Slave Replication) 的简明实操指南,适用于常见发行版(CentOS / Ubuntu / Rocky 等)。


一、环境准备

假设:

  • 主库(Master):192.168.1.10
  • 从库(Slave):192.168.1.11
  • MariaDB 版本:10.3+(10.5/10.6 同样适用)

两台服务器:

  • 时间同步(ntp)
  • 网络互通
  • 防火墙放行 3306

二、主库(Master)配置

1. 修改配置文件

编辑 /etc/my.cnf 或 /etc/mysql/mariadb.conf.d/50-server.cnf

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog_format = row

server-id 必须唯一

重启 MariaDB:

systemctl restart mariadb

2. 创建复制账号

CREATE USER 'repl'@'192.168.1.11' IDENTIFIED BY 'replpassword';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.11';
FLUSH PRIVILEGES;

3. 查看主库状态

SHOW MASTER STATUS;

示例输出:

File: mysql-bin.000001
Position: 154

记下 File 和 Position


三、从库(Slave)配置

1. 修改配置文件

[mysqld]
server-id = 2
relay-log = relay-bin

重启 MariaDB:

systemctl restart mariadb

2. 配置主库信息

CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='repl',
MASTER_PASSWORD='replpassword',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;

3. 启动复制

START SLAVE;

4. 查看复制状态

SHOW SLAVE STATUS\G

重点看:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

都为 Yes 即成功。


四、已有数据如何做主从

如果主库已有数据:

主库

mysqldump -uroot -p --all-databases --master-data > db.sql
scp db.sql root@192.168.1.11:/root/

从库

mysql -uroot -p < db.sql

再执行 CHANGE MASTER TO(db.sql 中已包含 binlog 位置)


五、常见问题

1. Slave_IO_Running: Connecting

  • 防火墙
  • 主库 IP / 端口错误
  • 复制账号权限不足

2. 数据不一致

  • 使用 binlog_format=row
  • 避免直接在从库写数据

3. GTID(推荐)

MariaDB 10.0+ 支持 GTID,配置更简单:

gtid_strict_mode=1

六、简单验证

主库:

CREATE DATABASE test_rep;

从库:

SHOW DATABASES;

能看到即同步成功 ✅


如果你需要:

  • GTID 主从
  • 一主多从
  • 双主(互为主从)
  • Docker 环境

可以告诉我你的具体场景。

0 踩