温馨提示×

debian mysql如何设主从

小樊
41
2026-10-13 16:58:07
栏目: 云计算

下面给你一份**在 Debian 上配置 MySQL 主从复制(Master–Slave)**的实用步骤(以 MySQL 8.x / 5.7 为主,命令通用)。


一、环境准备

  • 两台 Debian 服务器
    • Master:192.168.1.10
    • Slave:192.168.1.20
  • 已安装 MySQL(apt install mysql-server)
  • 防火墙放行 3306

二、Master 配置

1. 修改配置文件

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

确保有以下内容:

server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = row
bind-address = 0.0.0.0

重启 MySQL:

systemctl restart mysql

2. 创建复制账号

mysql -u root -p

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

3. 查看主库状态

SHOW MASTER STATUS;

记下:

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

三、Slave 配置

1. 修改配置文件

nano /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 2
relay-log = /var/log/mysql/relay-bin
read_only = 1

重启 MySQL:

systemctl restart mysql

2. 配置主从关系

mysql -u root -p

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

都为 Yes 即成功。


四、常见问题

1. Slave_IO_Running: Connecting

  • 防火墙
  • 账号权限
  • IP 写错

2. 已有数据如何做主从?

# Master
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
# 另开窗口导出
mysqldump -u root -p --all-databases > full.sql
UNLOCK TABLES;

# Slave
mysql -u root -p < full.sql

五、可选增强

  • GTID 复制(推荐)
  • 半同步复制
  • 多从库
  • 读写分离(ProxySQL / MyCat)

如果你告诉我:

  • Debian 版本
  • MySQL 版本
  • 是否已有数据

我可以给你更精确的配置方案。

0 踩