1. 环境准备
在安装MySQL 5.7 MHA集群之前,需要进行以下环境准备:更多学习教程www.fgedu.net.cn
学习交流加群风哥微信: itpux-com
– 主节点:至少4核CPU,8GB内存,100GB磁盘
– 从节点:至少4核CPU,8GB内存,100GB磁盘
– MHA管理节点:至少2核CPU,4GB内存,50GB磁盘
– 网络:千兆网络接口,推荐万兆
# 主节点:192.168.1.101
# 从节点1:192.168.1.102
# 从节点2:192.168.1.103
# MHA管理节点:192.168.1.104
# 所有节点安装必要的依赖
yum install -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
# 所有节点配置hosts文件
vi /etc/hosts
192.168.1.101 master
192.168.1.102 slave1
192.168.1.103 slave2
192.168.1.104 mha-manager
# 配置SSH免密登录
# 在MHA管理节点生成密钥
ssh-keygen -t rsa
# 将公钥复制到所有节点
ssh-copy-id root@master
ssh-copy-id root@slave1
ssh-copy-id root@slave2
2. MySQL 5.7安装
在所有MySQL节点上安装MySQL 5.7:
风哥提示:数据库升级过程中请确保备份完整数据,以防意外情况发生。
tar -zxvf mysql-5.7.36-1.el7.x86_64.rpm-bundle.tar
# 安装MySQL 5.7
rpm -ivh mysql-community-common-5.7.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.36-1.el7.x86_64.rpm
# 初始化MySQL
mysqld –initialize –user=mysql
# 启动MySQL服务
systemctl start mysqld
systemctl enable mysqld
# 查看临时密码
grep ‘temporary password’ /var/log/mysqld.log
# 重置root密码
mysql -u root -p
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘fgedudb123’;
3. 主从复制配置
配置MySQL主从复制:
vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/var/lib/mysql
port=3306
socket=/var/lib/mysql/mysql.sock
server_id=101
log-bin=mysql-bin
binlog_format=ROW
expire_logs_days=7
# 重启主节点
systemctl restart mysqld
# 创建复制用户
mysql -u root -p
CREATE USER ‘repl’@’%’ IDENTIFIED BY ‘repl123’;
GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’%’;
FLUSH PRIVILEGES;
# 查看主节点状态
SHOW MASTER STATUS;
# 从节点1配置
vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/var/lib/mysql
port=3306
socket=/var/lib/mysql/mysql.sock
server_id=102
relay-log=relay-bin
read-only=1
# 重启从节点1
systemctl restart mysqld
# 配置从节点1复制
mysql -u root -p
CHANGE MASTER TO MASTER_HOST=’192.168.1.101′, MASTER_USER=’repl’, MASTER_PASSWORD=’repl123′, MASTER_LOG_FILE=’mysql-bin.000001′, MASTER_LOG_POS=154;
START SLAVE;
SHOW SLAVE STATUS\G;
# 从节点2配置
vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/var/lib/mysql
port=3306
socket=/var/lib/mysql/mysql.sock
server_id=103
relay-log=relay-bin
read-only=1
# 重启从节点2
systemctl restart mysqld
# 配置从节点2复制
mysql -u root -p
CHANGE MASTER TO MASTER_HOST=’192.168.1.101′, MASTER_USER=’repl’, MASTER_PASSWORD=’repl123′, MASTER_LOG_FILE=’mysql-bin.000001′, MASTER_LOG_POS=154;
START SLAVE;
SHOW SLAVE STATUS\G;
4. MHA安装
在MHA管理节点和所有MySQL节点上安装MHA:
from:www.itpux.com
wget https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58.tar.gz
wget https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58.tar.gz
# 所有节点安装MHA节点包
tar -zxvf mha4mysql-node-0.58.tar.gz
cd mha4mysql-node-0.58
perl Makefile.PL
make
make install
# MHA管理节点安装MHA管理包
tar -zxvf mha4mysql-manager-0.58.tar.gz
cd mha4mysql-manager-0.58
perl Makefile.PL
make
make install
5. MHA配置
在MHA管理节点上配置MHA:
更多视频教程www.fgedu.net.cn 风哥提示:数据库升级过程中请确保备份完整数据,以防意外情况发生。
mkdir -p /etc/mha/mysql_cluster
# 创建MHA配置文件
vi /etc/mha/mysql_cluster.cnf
[server default]
manager_workdir=/var/log/mha/mysql_cluster
manager_log=/var/log/mha/mysql_cluster/manager.log
master_binlog_dir=/var/lib/mysql
user=root
password=fgedudb123
ping_interval=1
remote_workdir=/tmp
repl_user=repl
repl_password=repl123
ssh_user=root
[server1]
host=192.168.1.101
port=3306
[server2]
host=192.168.1.102
port=3306
candidate_master=1
[server3]
host=192.168.1.103
port=3306
candidate_master=1
6. MHA测试
测试MHA配置:
from:www.itpux.com 风哥提示:数据库升级过程中请确保备份完整数据,以防意外情况发生。 学习交流加群风哥微信: itpux-com
masterha_check_ssh –conf=/etc/mha/mysql_cluster.cnf
# 测试主从复制
masterha_check_repl –conf=/etc/mha/mysql_cluster.cnf
7. MHA监控
启动MHA监控:
from:www.itpux.com
nohup masterha_manager –conf=/etc/mha/mysql_cluster.cnf –remove_dead_master_conf –ignore_last_failover < /dev/null > /var/log/mha/mysql_cluster/manager.log 2>&1 &
# 查看MHA状态
masterha_check_status –conf=/etc/mha/mysql_cluster.cnf
8. 故障转移测试
测试MHA故障转移:
更多学习教程公众号风哥教程itpux_com 学习交流加群风哥微信: itpux-com 学习交流加群风哥微信: itpux-com
masterha_master_switch –conf=/etc/mha/mysql_cluster.cnf –master_state=dead –new_master_host=192.168.1.102 –new_master_port=3306 –orig_master_is_new_slave –running_updates_limit=10000
# 检查新主节点状态
mysql -h 192.168.1.102 -u root -p
SHOW MASTER STATUS;
# 检查其他从节点状态
mysql -h 192.168.1.103 -u root -p
SHOW SLAVE STATUS\G;
9. 性能调优
MySQL 5.7 MHA集群的性能调优:
更多视频教程www.fgedu.net.cn
– 根据服务器内存大小调整innodb_buffer_pool_size(建议为内存的50-70%)
– 调整innodb_log_file_size以提高写入性能
– 启用innodb_buffer_pool_instances以提高并发性能
– 优化查询语句,添加适当的索引
– 定期优化表结构和分析表
– 调整Linux内核参数以提高性能
– 使用SSD存储以提高I/O性能
10. 备份策略
MySQL 5.7 MHA集群的备份策略:
风哥提示:数据库升级过程中请确保备份完整数据,以防意外情况发生。
# 创建备份脚本
cat > /root/backup_mysql.sh << EOF #!/bin/bash DATE=$(date +%Y%m%d) BACKUP_DIR="/backup/mysql" mkdir -p $BACKUP_DIR mysqldump -u root -p"fgedudb123" --all-databases --single-transaction > $BACKUP_DIR/backup_$DATE.sql
gzip $BACKUP_DIR/backup_$DATE.sql
# 删除7天前的备份
find $BACKUP_DIR -name “backup_*.sql.gz” -mtime +7 -delete
EOF
# 赋予执行权限
chmod +x /root/backup_mysql.sh
# 添加到crontab,每天凌晨2点执行
crontab -e
0 2 * * * /root/backup_mysql.sh
# 2. 从节点备份
# 可以在从节点上执行备份,减轻主节点负担
– 定期备份数据
– 开启二进制日志用于Point-in-Time Recovery
– 监控MySQL的运行状态
– 定期检查并优化数据库性能
– 定期测试MHA故障转移功能
– 保持MHA和MySQL版本的更新
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
