MySQL作为开源数据库管理系统中的佼佼者,广泛应用于各种场景
本文将详细介绍如何在Linux环境下搭建MySQL5.6的主备架构,以提供高可用性和数据冗余,确保在单点故障时业务能够无缝切换
一、主备架构概述 MySQL的主备架构,即主服务器(Master)和备份服务器(Slave),是一种常见的高可用设计方案
主服务器负责处理所有写操作,而备份服务器则负责读操作,并在主服务器出现故障时接管其职责
这种架构不仅提高了系统的可用性,还能有效减轻主服务器的负载,提升整体性能
二、环境准备 在开始搭建之前,确保满足以下环境和版本要求: -操作系统:CentOS 7.x 或 Ubuntu16.04及以上版本 -MySQL版本:MySQL 5.6 -服务器数量:至少两台(一台作为主服务器,另一台作为备份服务器) -网络连接:确保两台服务器能够互相通信 三、安装MySQL5.6 1.卸载系统自带的MariaDB(如适用): 在CentOS7中,系统默认安装了MariaDB而非MySQL
因此,需要先卸载MariaDB
bash
sudo rpm -qa | grep mariadb
sudo rpm -e --nodeps 以下以CentOS7为例:
bash
cd /opt
sudo mkdir software
cd software
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
sudo yum install mysql-community-server
3.启动MySQL服务并设置开机自启:
bash
sudo systemctl start mysqld
sudo systemctl enable mysqld
4.获取MySQL root密码:
MySQL安装完成后,会在/var/log/mysqld.log文件中生成一个临时密码 使用以下命令查找并获取该密码:
bash
sudo grep temporary password /var/log/mysqld.log
5.修改root密码并配置MySQL:
使用临时密码登录MySQL,并修改root密码 同时,根据需求调整MySQL配置文件(如/etc/my.cnf)
bash
mysql -u root -p
输入临时密码后,执行以下命令修改密码
ALTER USER root@localhost IDENTIFIED BY NewPassword123!;
FLUSH PRIVILEGES;
四、配置主服务器
1.编辑MySQL配置文件:
在主服务器的/etc/my.cnf文件中,添加或修改以下配置:
ini
【mysqld】
server-id=1
log_bin=mysql-bin
binlog-do-db=your_database_name 指定需要复制的数据库
2.重启MySQL服务:
bash
sudo systemctl restart mysqld
3.创建复制用户:
在主服务器上,登录MySQL并创建一个用于复制的用户
sql
CREATE USER repl@% IDENTIFIED BY ReplPassword123!;
GRANT REPLICATION SLAVE ON. TO repl@%;
FLUSH PRIVILEGES;
4.锁定数据库并获取二进制日志位置:
在进行数据同步之前,锁定主数据库以防止写入操作,并记录当前的二进制日志文件名和位置
sql
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
记录下输出的File和Position值,稍后配置从服务器时需要用到
5.导出数据库:
使用mysqldump工具导出需要同步的数据库数据
bash
mysqldump -u root -p --all-databases --master-data > db_backup.sql
导出完成后,解锁数据库
sql
UNLOCK TABLES;
6.将导出的数据库文件传输到从服务器:
使用scp命令或其他文件传输工具将db_backup.sql文件传输到从服务器
五、配置从服务器
1.编辑MySQL配置文件:
在从服务器的/etc/my.cnf文件中,添加或修改以下配置:
ini
【mysqld】
server-id=2
relay-log=mysql-relay-bin
2.重启MySQL服务:
bash
sudo systemctl restart mysqld
3.导入数据库:
在从服务器上,使用mysql命令导入之前导出的数据库文件
bash
mysql -u root -p < db_backup.sql
4.配置从服务器连接主服务器:
登录从服务器的MySQL,使用CHANGE MASTER TO命令配置从服务器连接主服务器的信息
sql
CHANGE MASTER TO
MASTER_HOST=主服务器IP地址,
MASTER_USER=repl,
MASTER_PASSWORD=ReplPassword123!,
MASTER_LOG_FILE=mysql-bin.xxxxxx, 使用之前记录的File值
MASTER_LOG_POS=xxxxxx; 使用之前记录的Position值
5.启动复制:
在从服务器上,启动复制进程
sql
START SLAVE;
6.检查复制状态:
使用SHOW SLAVE STATUSG命令检查从服务器的复制状态,确保Slave_IO_Running和Slave_SQL_Runni