搭建一个MySQL高可用架构集群环境
(4台主机,1主、2从、1 MHA)
软件版本
虚拟机:Ubuntu 18
MySQL:5.7.32
MHA:0.54
架构
使用一台MHA manager、一台MySQL master节点、两台MySQL slave节点
环境检查
安装ssh组件
# 安装ssh
sudo apt-get install openssh-server
# 开启ssh服务
sudo service ssh start
配置ssh 免密码登录
-
生成密钥
ssh-keygen -t rsa
-
将公钥写入到 authorized_keys 文件中
可以使用scp进行将公钥复制到一个机器上,然后一起写入到authorized_keys中
-
将authorized_keys文件分发到各个节点的 /root/.ssh/目录下
MySQL安装
# 执行更新
sudo apt-get update
# 安装 mysql
sudo apt-get install mysql-server
# 初始化MySQL
sudo mysql_secure_installation
# 检查mysql状态
systemctl status mysql.service
MySQL初始化
修改配置文件,注释掉 bind-address = 127.0.0.1
vi /etc/mysql/mysql.conf.d/mysqld.cnf
主库配置(Master)
-
MySQL配置文件配置
vim /etc/mysql/my.cnf
[mysqld] character-set-server=utf8mb4 default-time-zone='+8:00' innodb_rollback_on_timeout='ON' max_connections=500 innodb_lock_wait_timeout=500 # 开启binlog功能 log_bin=mysql-bin # 服务唯一id,不能重复 server-id=1 # 写入日志始终同步磁盘 sync-binlog=1 # 需要忽略同步binlog的数据库 binlog-ignore-db=information_schema binlog-ignore-db=performance_schema binlog-ignore-db=sys
重启mysql服务
sudo service mysql restart
-
开始授权开启主从同步
# 每个slave使用标准的MySQL用户名和密码连接master。对进行复制操作的用户授予REPLICATION SLAVE权限 mysql> grant replication slave on *.* to 'root'@'%' identified by 'root'; # 授于远程登录访问权限 mysql> grant all privileges on *.* to 'root'@'%' identified by 'root'; # 刷新 privileges(使privileges生效) mysql> flush privileges;
-
安装semi
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
-
开启semi(半同步复制)
# 查看是否开启了esmi mysql> show variables like '%semi%'; # 是否开启半同步复制,需要开启 mysql> set global rpl_semi_sync_master_enabled=1; # 配置同步延迟时间(毫秒) mysql> set global rpl_semi_sync_master_trace_level=1000;
从库配置(Slave)
-
MySQL配置文件配置
vim /etc/mysql/m