Linux配置MySQL多实例实现多主一从备份架构
在Linux系统中,通过源码编译并配置MySQL多实例,可以有效利用单台服务器资源搭建高可用或备份架构。本文详细记录如何使用mysqld_multi管理多个MySQL实例,并将这些实例配置为从库,接收来自不同主库的数据同步,从而实现多主到一从的数据备份方案。
环境准备与组件安装
首先需要创建专用的MySQL用户组和用户,以确保权限隔离。接着解压下载的MySQL通用二进制包至/usr/local目录下,并通过建立软链接方便后续的版本管理和操作。例如,将解压后的目录链接为mysql001。
第1步:创建用户并解压安装
- 目的:建立安全的运行环境和标准化的安装路径。
- 入口:Linux终端命令行。
- 动作:
# 添加mysql组和用户
groupadd mysql
useradd -g mysql mysql
# 解包到指定目录(以实际下载的文件名替换tar.gz)
tar -xzf mysql-standard-4.1.9-pc-linux-gnu-i686.tar.gz -C /usr/local
# 进入目录并建立软链接
cd /usr/local
ln -s mysql-standard-5.0.15-linux-i686-glibc23 mysql001
cd mysql001
# 初始化数据库目录
scripts/mysql_install_db
# 修正文件所有者和组权限
chown -R root .
chown -R mysql data
chgrp -R mysql .
第2步:复制数据目录以支持多实例
- 目的:MySQL多实例需要独立的data目录存储各自的数据文件,因此需复制基础数据目录。
- 动作:复制data目录分别为data_1和data_2,用于后续的两个实例。
cp -a data data_1
cp -a data data_2
第3步:配置多实例管理文件 my_multi.cnf
- 目的:定义多个实例的端口、Socket路径、数据目录及主从同步参数。
- 入口:使用编辑器创建配置文件。
- 动作:在bin目录下创建
my_multi.cnf文件,并按以下结构填写。注意区分两个实例的server-id及各自的主库连接信息。
vi my_multi.cnf
配置文件内容如下:
[mysqld_multi]
mysqld = /usr/local/mysql001/bin/mysqld_safe
mysqladmin = /usr/local/mysql001/bin/mysqladmin
user = root
password = root
# --- 第一个实例 (对应 Slave 1) ---
[mysqld1]
socket = /tmp/mysql_001.sock
port = 3301
pid-file = /usr/local/mysql001/data_1/hostname.pid
datadir = /usr/local/mysql001/data_1
log = /usr/local/mysql001/data_1/hostname.log
user = mysql
# 从库设置
server-id = 2
master-host = 192.168.1.85
master-port = 3306
master-user = backup
master-password = 123456
replicate-do-db = gs_database
replicate-do-db = gs_log
master-connect-retry=30
# --- 第二个实例 (对应 Slave 2) ---
[mysqld2]
socket = /tmp/mysql_5_2.sock
port = 3302
pid-file = /usr/local/mysql001/data_2/hostname.pid
datadir = /usr/local/mysql001/data_2
log = /usr/local/mysql001/data_2/hostname.log
user = mysql
# 从库设置
server-id = 3
master-host = 192.168.1.69
master-port = 3306
master-user = backup
master-password = 123
replicate-do-db = gs_databaes
replicate-do-db = gs_log
master-connect-retry=30
环境变量设置与开机自启
第4步:配置系统环境变量
- 目的:使系统能直接调用
mysqld_multi及相关命令,无需输入完整路径。 - 动作:编辑
/etc/profile,追加MySQL bin目录到PATH。
vi /etc/profile
# 在文件末尾添加:
export MYSQL_HOME=/usr/local/mysql001/bin
export PATH=$PATH:$MYSQL_HOME
保存后执行source /etc/profile生效,或重启系统验证。
第5步:配置开机自动启动(可选)
- 目的:确保服务器重启后多实例自动运行。
- 动作:在
/etc/rc.local中添加启动命令。
vi /etc/rc.local
# 添加以下内容,启动编号为1和2的实例:
mysqld_multi --defaults-extra-file=/usr/local/src/mysql_dir/bin/my_multi.cnf start 1,2
日常维护与操作命令
完成配置后,可通过以下常用命令管理各实例:
第6步:访问与管理实例
- 单独访问某个实例:通过指定的Socket文件连接。
# 连接实例1
mysql -u root -S /tmp/mysql_001.sock -p
# 或使用 port 连接
mysql -u root -P 3301 -p
- 设置实例密码:为新增实例设置root密码。
mysqladmin -u root password 'root' -S /tmp/mysql_001.sock
- 手动启停实例:使用
mysqld_multi工具。
# 启动编号为1和2的实例
mysqld_multi --defaults-extra-file=/usr/local/src/mysql_dir/bin/my_multi.cnf start 1,2
# 停止上述实例
mysqld_multi --defaults-extra-file=/usr/local/src/mysql_dir/bin/my_multi.cnf stop 1,2
简要总结
通过在Linux上部署MySQL多实例并合理配置my_multi.cnf中的主从参数(master-host, server-id等),可以灵活构建多主一从的备份架构。此方法不仅节省硬件成本,还能通过replicate-do-db精确控制同步的数据表,适用于异构数据汇总或容灾备份场景。以上就是Linux下MySQL多实例作为数据备份服务器实现多主到一从的详细内容,更多关于MySQL多主一从备份的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













