MHA的搭建流程:https://blog.csdn.net/qq_35349982/article/details/108578414
用的虚拟机。以下是IP列表
-
master-1 192.168.182.128
-
slave-1 192.168.182.132
-
slave-2 192.168.182.130
-
mha-1 192.168.182.133
关闭防火墙
1.机器都要做关闭防火墙:
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
centos虚拟机安装mysql
这里采用的是rpm-bundle.tar安装方式。只要安装上去就行,其他方式也行,不建议使用docker
cd /usr/local/src
tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
## centos自带 mariadb,查询并删除
rpm -qa|grep mariadb
rpm -e mariadb-libs-5.5.41-2.el7_0.x86_64 --nodeps
## i表示安装,v表示显示安装过程,h表示显示进度
## 安装common包
rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
## 安装lib包
rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
## 安装libs-compat包
rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
## 安装client包
rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
## 安装server包
rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
## 安装devel包
rpm -ivh mysql-community-devel-5.7.28-1.el7.x86_64.rpm
## 初始化mysql
mysqld --initialize --user=mysql
## 查询密码
cat /var/log/mysqld.log
## 获取临时密码
ZTl%tXzk#57
## 开机自启
systemctl start mysqld.service
## 查询状态是否启动
systemctl status mysqld.service
##登录mysql
mysql -uroot -p
## 进入mysql 设置 密码
set password=password('root');
## mysql授权外部链接
GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' identified by 'root';
GRANT all privileges ON *.* TO 'root'@'%' identified by 'root';
##刷新
flush privileges;
## 退出 关闭防火墙
exit#mysql内执行
systemctl stop iptables;
systemctl stop firewalld;
## 禁用防火墙
systemctl disable firewalld.service
主从复制安装
Master主机
- 先进入mysql 安装插件
install plugin rpl_semi_sync_master soname 'semisync_master.so';
- 配置etc下的my.cnf(my.ini)文件
vim /etc/my.cnf
#开启binlog日期
log_bin=mysql-bin
server-id=1
## 同步日志
sync-binlog=1
## 忽略一些库
binlog-ignore-db=performance_schema
binlog-ignore-db=informance_schema
binlog-ignore-db=sys
#半同步复制的参数
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
- 重启mysql服务
service mysqld restart
- 登录mysql
mysql -uroot -proot
#查询状态
show master status;
Slave主机
-
进入mysql 安装salve插件
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
-
修改slave主机的配置文件
my.cnf
#注意server-id不能相同
server-id=2
relay_log=mysql-bin
#mha的时候要用
log-bin=slave1
#指定不同步的数据库
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
binlog-ignore-db=sys
#半同步复制的参数,如果不采用半同步复制可跳过
rpl_semi_sync_slave_enabled=1
relay_log_info_repository=table;
- 刷新配置
service mysqld restart
- 进入mysql 查询从库的半同步复制状态
SHOW VARIABLES LIKE '%semi%';
如果为on则代表以及开启半同步复制的方式(如果不采用半同步复制可跳过)
5. 指定master
## 从库中如果有值,说明之前做过
show master status;
##将slave重置一下
reset slave;
##先停步slave服务线程,这个是很重要的,
stop slave;
##指定mater
## master_log_file就是主机状态的File值
## master_log_pos就是主机状态的position值
change master to master_host='192.168.182.128',master_port=3306,master_user='root',master_password='root',master_log_file='mysql-bin.000003',master_log_pos=154;
#开启slave同步
start slave;
多个slave只需要重复进行上面步骤,需要注意my.cnf
中的server-id
需要修改保证确定唯一。
问题
1.Job for mysqld.service failed. See 'systemctl status mysql服务启动失败
- 方案一:有可能是配置文件参数错误了
- 方案二: https://blog.csdn.net/qq_39163430/article/details/81941313