温馨提示×

Debian怎么配置MySQL主从

小樊
35
2026-09-23 03:13:11
栏目: 云计算

下面以 Debian 11/12 + MySQL 8.0 为例,说明如何配置 MySQL 主从复制(Master-Slave Replication)


一、环境准备

假设:

  • 主库(Master):192.168.1.10
  • 从库(Slave):192.168.1.20
  • MySQL 版本:8.0
  • 数据库已安装完成

二、主库(Master)配置

1. 修改 MySQL 配置文件

编辑配置文件(通常如下之一):

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

添加或修改:

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

server-id 必须唯一

2. 重启 MySQL

sudo systemctl restart mysql

3. 创建复制账号

mysql -u root -p

CREATE USER 'repl'@'192.168.1.20' IDENTIFIED WITH mysql_native_password BY 'ReplPass123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.20';
FLUSH PRIVILEGES;

4. 查看主库状态

SHOW MASTER STATUS;

记录:

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

三、从库(Slave)配置

1. 修改 MySQL 配置文件

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server-id = 2
relay-log = mysql-relay-bin

2. 重启 MySQL

sudo systemctl restart mysql

3. 配置主库信息

mysql -u root -p

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

4. 启动从库

START SLAVE;

5. 查看状态

SHOW SLAVE STATUS\G

确认:

  • Slave_IO_Running: Yes
  • Slave_SQL_Running: Yes

四、测试主从复制

主库创建测试数据

CREATE DATABASE test_repl;
USE test_repl;
CREATE TABLE t1(id INT);
INSERT INTO t1 VALUES(1);

从库查询

SELECT * FROM test_repl.t1;

能看到数据即成功。


五、常见问题

1. 主从 UUID 冲突

若克隆虚拟机:

SHOW VARIABLES LIKE 'server_uuid';

删除:

sudo rm /var/lib/mysql/auto.cnf
sudo systemctl restart mysql

2. 防火墙

sudo ufw allow from 192.168.1.20 to any port 3306

3. 只同步部分库

binlog-do-db=db_name

六、可选:GTID 模式(推荐)

Master & Slave:

gtid_mode=ON
enforce_gtid_consistency=ON

Slave:

CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='repl',
MASTER_PASSWORD='ReplPass123!',
MASTER_AUTO_POSITION=1;

如果你需要 Docker 版 / MariaDB / 一主多从 / 半同步复制,我可以继续补充。

0