温馨提示×

debian mysql如何主从同步

小樊
62
2026-09-07 21:41:10
栏目: 云计算

下面以 Debian + MySQL(以 MySQL 8.0 为例) 说明 主从同步(Replication) 的基本配置步骤。


一、环境准备

  • 主库(Master):192.168.1.10
  • 从库(Slave):192.168.1.11
  • 两台机器都已安装 MySQL
sudo apt update
sudo apt install mysql-server

二、主库(Master)配置

1. 修改配置文件

编辑 /etc/mysql/mysql.conf.d/mysqld.cnf

server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW

注意:server-id 主从不能相同

重启 MySQL:

sudo systemctl restart mysql

2. 创建复制账号

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

3. 查看主库状态

SHOW MASTER STATUS;

记录:

  • File(如 mysql-bin.000001)
  • Position(如 154)

三、从库(Slave)配置

1. 修改配置文件

server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log

重启 MySQL:

sudo systemctl restart mysql

2. 配置主库信息

CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='repl',
MASTER_PASSWORD='repl_password',
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

四、已有数据的主从同步(可选)

如果是已有数据的库:

主库

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

另开窗口导出:

mysqldump -u root -p --all-databases > all.sql

解锁:

UNLOCK TABLES;

从库

mysql -u root -p < all.sql

再执行 CHANGE MASTER TO


五、常见注意事项

  • 主从 MySQL 版本尽量一致
  • 防火墙放行 3306
  • 不要直接在从库写数据
  • 可使用 GTID 模式简化配置(MySQL 5.6+)

如果你需要:

  • GTID 主从
  • 一主多从
  • Docker 环境
  • MariaDB 版本

可以告诉我,我给你对应方案。

0 踩