MySQL作为广泛使用的关系型数据库管理系统,其高可用架构的搭建对于确保业务连续性和数据完整性具有重大意义
本文将详细介绍如何在CentOS7.4系统上安装和配置MySQL的高可用架构
一、环境准备与基础配置 1. 系统环境 本文所述的安装和配置过程基于CentOS7.4系统
CentOS7.4作为一个稳定、安全且兼容性强的Linux发行版,非常适合作为数据库服务器的操作系统
2.卸载MariaDB CentOS系统默认安装了MariaDB,这是MySQL的一个分支
在安装MySQL之前,需要先卸载MariaDB,以避免潜在的冲突
bash rpm -qa | grep mariadb rpm -e mariadb-libs --nodeps 3. 创建MySQL用户及目录 为了安全和管理方便,建议为MySQL创建一个专用的用户和目录
bash useradd mysql mkdir -p /home/mysql80/{data,logs,pid,sock} chown -R mysql:mysql /home/mysql80 二、MySQL安装与配置 1. 下载并安装MySQL 从MySQL官方网站下载适用于Linux系统的安装包,并进行解压和安装
bash cd /usr/local wget【MySQL安装包URL】 tar xvJf【安装包名称】 mv【解压后的目录】 /usr/local/mysql80 2. 配置MySQL 编辑MySQL的配置文件`/etc/my.cnf`,根据实际需求进行如下配置: ini 【mysqld】 user=mysql server_id=1 port=3306 basedir=/usr/local/mysql80 datadir=/home/mysql80/data socket=/home/mysql80/sock/mysql.sock pid-file=/home/mysql80/pid/mysqld.pid log-error=/home/mysql80/logs/error.log log-bin=/home/mysql80/logs/bin.log relay-log=/home/mysql80/logs/relay.log binlog_format=ROW character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci default-authentication-plugin=mysql_native_password sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION max_connections=1000 auto_increment_offset=1 auto_increment_increment=2 log-slave-updates=true 【mysql】 socket=/home/mysql80/sock/mysql.sock 【client】 socket=/home/mysql80/sock/mysql.sock 3.初始化数据库 在正式启动MySQL服务之前,需要对数据库进行初始化
bash cd /usr/local/mysql80/bin ./mysqld --initialize 4. 启动MySQL服务 初始化完成后,可以启动MySQL服务,并设置开机自启动
bash cd /usr/local/mysql80/support-files ./mysql.server start 将MySQL服务添加到系统服务中,以便开机自启动
bash chkconfig --add mysql chkconfig mysql on 三、搭建MySQL主从复制架构 1. 配置主库(Master) 在主库上,需要启用二进制日志,并配置唯一的server_id
编辑主库的`/etc/my.cnf`文件,确保以下配置正确: ini 【mysqld】 log-bin=mysql-bin server-id=1 然后重启MySQL服务使配置生效
bash service mysql restart 在主库上创建一个用于复制的用户,并授予必要的权限
sql CREATE USER repl@% IDENTIFIED BY repl_password; GRANT REPLICATION SLAVE ON. TO repl@%; FLUSH PRIVILEGES; 锁定表并获取二进制日志的文件名和位置,以便从库进行同步
sql FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; 记录下`File`和`Position`的值,然后解锁表
sql UNLOCK TABLES; 2. 配置从库(Slave) 在从库上,需要配置唯一的server_id,并指向主库的二进制日志
编辑从库的`/etc/my.cnf`文件,添加或修改以下配置: ini 【mysqld】 server-id=2 relay-log=relay-log 然后重启MySQL服务
bash service mysql restart 在从库上导入主库的数据快照(可以使用`mysqldump`工具进行导出和导入)
配置从库连接到主库,并开始复制过程
sql CHANGE MASTER TO MASTER_HOST=主库IP地址, MASTER_USER=repl, MASTER_PASSWORD=repl_password, MASTER_LOG_FILE=记录的主库二进制日志文件名, MASTER_LOG_POS=记录的主库二进制日志位置; START SLAVE; 检查从库状态,确保复制过程正常
sql SHOW SLAVE STATUSG; 四、部署MHA实现高可用 Master High Availability(MHA)是一套优秀的MySQL高可用解决方案,它可以自动检测主库故障,并将从库提升为新的主库
1. 安装MHA依赖 在所有节点上安装MHA所需的Perl模块
bash yum install -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager 2. 安装MHA Node和Manager 上传MHA相关RPM包到所有节点,并进行安装
bash rpm -ivh mha4mysql-node-xxx.rpm 在主库节点上安装MHA Manager
bash rpm -ivh mha4mysql-manager-xxx.rpm 3. 配置SSH免密码登录 为了确保MHA Manager可以无密码登录到所有节点,需要在管理节点上生成SSH密钥对,并将公钥分发到所有节点
bash ss