下面给你一份 Linux + MariaDB 主从复制(Master–Slave Replication) 的简明实操指南,适用于常见发行版(CentOS / Ubuntu / Rocky 等)。
假设:
两台服务器:
编辑 /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
CREATE USER 'repl'@'192.168.1.11' IDENTIFIED BY 'replpassword';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.11';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
示例输出:
File: mysql-bin.000001
Position: 154
记下 File 和 Position
[mysqld]
server-id = 2
relay-log = relay-bin
重启 MariaDB:
systemctl restart mariadb
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;
START SLAVE;
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 位置)
binlog_format=rowMariaDB 10.0+ 支持 GTID,配置更简单:
gtid_strict_mode=1
主库:
CREATE DATABASE test_rep;
从库:
SHOW DATABASES;
能看到即同步成功 ✅
如果你需要:
可以告诉我你的具体场景。