linux中mysql如何搭建主从

2025-12-16 12:34:11

在 Linux 系统中,搭建 MySQL 主从复制(Master-Slave Replication)是一个常见的高可用和数据备份方案。以下是搭建 MySQL 主从复制的步骤和常用命令,适用于大多数 Linux 发行版(如 Ubuntu、CentOS 等)。

✅ 一、准备工作

1. 确保 MySQL 服务已安装

在主服务器和从服务器上安装 MySQL:

linux中mysql如何搭建主从

sudo apt update
sudo apt install mysql-server

sudo yum install mysql-server

2. 配置主服务器(Master)

1.1 启动 MySQL 服务

sudo systemctl start mysql
sudo systemctl enable mysql

1.2 修改主服务器配置文件(/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
server-id=1
log-bin=mysql-bin  # 启用二进制日志
log-bin-index=mysql-bin.log  # 指定二进制日志文件
binlog_format=ROW  # 使用 ROW 格式
binlog-ignore-db=mysql  # 忽略 mysql 数据库(可选)

1.3 重启 MySQL 服务

sudo systemctl restart mysql

1.4 创建用户并授权

CREATE USER 'repl_user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;

1.5 获取主服务器的二进制日志信息

SHOW MASTER STATUS;

输出示例:

+------------------+--------------------+--------------+------------------+
| File            | Position           | Binlog_Do_DB |
+------------------+--------------------+--------------+
| mysql-bin.000001 | 100                | mysql        |
+------------------+--------------------+--------------+

记录 FilePosition,用于从服务器配置。

linux中mysql如何搭建主从

✅ 二、配置从服务器(Slave)

2.1 启动 MySQL 服务

sudo systemctl start mysql
sudo systemctl enable mysql

2.2 修改从服务器配置文件(/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
server-id=2
log-bin=mysql-bin  # 启用二进制日志
log-bin-index=mysql-bin.log  # 指定二进制日志文件
binlog_format=ROW  # 使用 ROW 格式
binlog-ignore-db=mysql  # 忽略 mysql 数据库(可选)

2.3 设置主服务器信息

CHANGE MASTER TO
  MASTER_HOST='master_ip_address',
  MASTER_USER='repl_user',
  MASTER_PASSWORD='your_password',
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=100;

2.4 启动从服务器

sudo systemctl start mysql

2.5 开始复制

sudo mysqlslum -u repl_user -p your_password

或者使用命令行:

sudo systemctl restart mysql

✅ 三、验证主从复制

1. 在主服务器上查看二进制日志

SHOW MASTER STATUS;

2. 在从服务器上查看复制状态

SHOW SLAVE STATUS G;

输出中应包含 Slave_IO_Running: YesSlave_SQL_Running: Yes

✅ 四、常见问题与解决

问题 解决方案
主从服务器 IP 不一致 修改 MASTER_HOST 为正确的 IP 地址
无法连接主服务器 检查防火墙规则,确保 3306 端口开放
主从同步延迟 增加 log-bin 的大小,或优化主服务器性能
从服务器无法启动 检查 MySQL 配置文件是否正确,确保 server-id 不冲突

✅ 五、脚本化(可选)

1. 主服务器配置脚本(setup_master.sh

#!/bin/bash

# 主服务器配置
echo "Setting up Master..."
sudo sed -i 's/# server-id=1/server-id=1/' /etc/mysql/mysql.conf.d/mysqld.cnf
sudo sed -i 's/# log-bin=mysql-bin/log-bin=mysql-bin/' /etc/mysql/mysql.conf.d/mysqld.cnf
sudo sed -i 's/# binlog_format=ROW/binlog_format=ROW/' /etc/mysql/mysql.conf.d/mysqld.cnf
sudo systemctl restart mysql

# 创建用户并授权
mysql -u root -p -e "CREATE USER 'repl_user'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES;"

# 获取主服务器状态
mysql -u root -p -e "SHOW MASTER STATUS;"

2. 从服务器配置脚本(setup_slave.sh

#!/bin/bash

# 从服务器配置
echo "Setting up Slave..."
sudo sed -i 's/# server-id=2/server-id=2/' /etc/mysql/mysql.conf.d/mysqld.cnf
sudo sed -i 's/# CHANGE MASTER TO/CHANGE MASTER TO/' /etc/mysql/mysql.conf.d/mysqld.cnf
sudo systemctl restart mysql

# 设置主服务器信息
mysql -u root -p -e "CHANGE MASTER TO MASTER_HOST='master_ip_address', MASTER_USER='repl_user', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=100;"

# 启动从服务器
sudo systemctl start mysql

✅ 六、总结

步骤 说明
安装 MySQL 安装 MySQL 服务和二进制日志
配置主服务器 设置 server-idlog-binrepl_user
配置从服务器 设置 server-idlog-binrepl_userMASTER_HOST
验证 使用 SHOW SLAVE STATUS 验证同步状态

如需进一步优化(如主从延迟监控、故障切换等),可以结合 mysql-monitorrsyncNagios 等工具进行管理。

如需针对特定 Linux 发行版(如 Ubuntu、CentOS)的详细配置,也可以告诉我,我可以提供更具体的命令和配置。

相关推荐

Linux设备驱动开发详解
其他命令

如何在pe下打开linux

在 Windows 的 PE(Pre-Emptive Executive)环境下,通常无法直接运行 Linux 操作系统,因为 PE 是 Windows 的一种引导加载程序,主要用于启动 Windows 系统。不过,如果你是在 Window

2025-12-16
Linux设备驱动开发详解
其他命令

nva for mysql

你提到的“nva for mysql”可能是对 NVIDIA Virtualization Acceleration for MySQL 的误写或不准确表达。实际上,MySQL 本身并不支持 NVIDIA 的虚拟化加速功能(NVA),但你可

2025-12-16
Linux设备驱动开发详解
其他命令

linux如何修改网口ip

在 Linux 系统中,修改网口(网络接口)的 IP 地址可以通过以下几种常用方法实现:语法:ifconfig <interface> <new_ip> netmask <new_netmask> <gateway>示例:ifconfig

2025-12-16
Linux设备驱动开发详解
其他命令

mysql 地理gis

您提到的“MySQL 地理GIS”通常指的是将地理空间数据存储和管理在 MySQL 数据库中,常用于地理信息系统(GIS)的开发和应用。以下是与 MySQL 和 GIS 相关的一些常见命令和脚本,以及相关解释:MySQL 8.0 引入了 G

2025-12-16
Linux设备驱动开发详解
其他命令

如何进行端口加固linux

在 Linux 系统中,端口加固(Port Hardening)是保障系统安全的重要措施之一。以下是一些常见的端口加固方法和 Linux 命令,用于增强系统对网络端口的防护:1. 关闭不必要的端口使用 netstat 或 ss 查看监听端口

2025-12-16
Linux设备驱动开发详解
其他命令

储存函数mysql

您提到的“储存函数mysql”可能是指在MySQL数据库中创建或使用MySQL存储函数。以下是一些常见的MySQL存储函数相关命令和操作,适用于大多数Linux发行版:1. 使用 CREATE FUNCTION 命令CREATE FUNCT

2025-12-16
Linux设备驱动开发详解
其他命令

如何让linux只有只读权限

在 Linux 中,如果你希望一个文件或目录只有 只读权限,可以使用 chmod 命令来设置权限。以下是几种常用方法:chmod 444 文件名444 表示文件的权限为:r--r--r--(只有读权限)。这个命令会为指定的文件设置 只读权限

2025-12-16
Linux设备驱动开发详解
其他命令

xshell mysql命令

你提到的“xshell mysql命令”可能有几种不同的含义,以下是几种常见情况的解释和建议:Xshell 是一个常用的终端仿真器,可以用来连接 MySQL 服务器。以下是使用 Xshell 连接 MySQL 的基本步骤:步骤:打开 Xsh

2025-12-16