MySQL搭建主从、半同步复制、Mha高可用
1:环境准备
4台服务器 :一主(master) 二从(slave)。
MySQL安装包:mysql-5.7.35-1.el7.x86_64.rpm-bundle
Linux 链接工具 :Xshell

2:MySQL主从搭建----MySQL安装
1、使用xshell将MySQL安装包上传到三台MySQL服务器上(一主二从)。
2、使用 tar -xvf mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar 命令解压MySQL安装包。(注:如果是centos 镜像 需要使用命令rpm -qa|grep mariadb查看是否安装了mariadb-libs,
已经安装则需要使用命令 rpm -e mariadb-libs-5.5.41-2.el7_0.x86_64 --nodeps移除mariadb,否则会和MySQL安装冲突 。
3、按顺序安装MySQL依赖包 rpm -ivh mysql-community-common、libs、libs-compat、client、server、devel。
4、使用命令 mysqld --initialize --user=mysql 初始化用户
5、使用命令 cat /var/log/mysqld.log | grep password 查看MySQL初始化密码
6、使用命令 systemctl start mysqld 启动MySQL
7、使用命令 systemctl enable mysqld 设置MySQL开机自启
8、修改MySQL登录密码(使用第五步获取到的密码登录MySQL后,使用SET PASSWORD = PASSWORD('你的密码'); )
9、退出MySQL后使用 systemctl stop firewalld 关闭防火墙(四台服务器需要SSH互通,防火墙必须关闭)
3:MySQL主从搭建----主从配置
1、主库上使用vi /etc/my.cnf 命令,编辑主库Master配置文件

2、使用命令 systemctl restart mysqld 重启MySQL
3、主库给从库授权 ----登录主库mysql后

4、从库Slave1 和 Slave2上 使用vi /etc/my.cnf 命令,编辑从库配置文件

5、使用命令 systemctl restart mysqld 重启从库slave1 和 slave2
6、从库上使用命令 change master to master_host='106.75.55.97',master_port=3306,master_user='root',master_password ='123456',master_log_file='mysql-bin.000001',master_log_pos=1584; 开启同步主库
7、使用命令start slave 开启从库同步
8、使用命令show slave status \G; 查看从库状态,观察是否存在同步error ,查看Slave_IO_Running 和 Slave_SQL_Running是否为Yes,如果为 No需要查看error错误信息,针对性排错。
4:MySQL半同步复制配置
1、主节点 登录MySQL执行
install plugin rpl_semi_sync_master soname 'semisync_master.so';
5、Mha高可用集群搭建准备工作
1、分别在四台服务器上使用命令ssh-keygen -t rsa生成私钥和公钥(一直回车即可),生成后/root/.ssh目录下应存在id_rsa 和id_rsa.pub文件

2、在mysql的三台服务器上执行ssh-copy-id #{mha服务器ip} 将mysql服务器的公钥复制到mha服务器上(需要验证mha的登录密码),
执行后mha服务器/root/.ssh目录下应生成authorized_keys 和knows_host文件,mysql服务器/root/.ssh目录下knows_host文件,且mha服务器上authorized_keys 文件应存在三个mysql服务器的密钥

3、mha服务器上使用命令 cat /root/.ssh/authorized_keys 查看是否存在mysql三台服务器的密钥

4、mha服务器上使用命令cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys 将mha服务器的密钥也加入到authorized_keys 文件中,此时authorized_keys 文件应存在四个密钥

5、mha服务器上使用命令scp /root/.ssh/authorized_keys root@mysql服务器ip:/root/.ssh/authorized_keys 将Mha服务器中的四台服务器密钥分发到三台mysql服务器,执行完后,三台mysql服务器authorized_keys 文件应存在四个密钥
knows_host文件中也应存在四种密钥

6、mha服务器上使用命令ssh mysql服务器ip 尝试远程登录mysql服务器,登录成功后记得使用命令exit;退出远程访问

6、Mha高可用集群搭建
1、下载 MHA manager 和 node的安装包,mysql服务器需要安装node节点,mha需要安装manage和node节点,下载地址:
https://github.com/yoshinorim/mha4mysql-manager/releases/tag/v0.58

https://github.com/yoshinorim/mha4mysql-node/releases/tag/v0.58

2、Mha的node节点需要依赖 perl-DBD-MySQL,所以要先安装perl-DBD-MySQL,三台mysql服务器上使用命令yum install perl-DBD-MySQL -y 安装依赖
3、Mysql服务器安装完perl-DBD-MySQL依赖后,使用命令rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm 安装node 安装包。
4、Mha服务器安装manage 节点,MHA的manager依赖了epel ,需要下载依赖包epel-release-latest-7.noarch.rpm,下载链接 https://dl.fedoraproject.org/pub/epel/,下载上传后使用命令rpm -ivh epel-release-latest-7.noarch.rpm 即可安装
4、Mha 服务器安装manage 和 node 节点,MHA的manager又依赖了perl-Confifig-Tiny、perl-Log-Dispatch、perl-Parallel-ForkManager,也分别进行安装。
使用命令yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager -y安装依赖
5、依赖安装完成后即可安装node和manage安装包,需要先安装node 再安装manage ,使用命令rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm ; rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm安装
6、Mha需要为每个mysql集群提供配置文件,使用命令mkdir -p /var/log/mha/app1 ;touch /var/log/mha/app1/manager.log 创建目录和文件
7、Mysql主库服务器上添加账号并授权账号所有权限
create user 'mha'@'%' identified by '123123';
grant all on *.* to mha@'%' identified by '123123';
flush privileges;
8、配置命令 vim /etc/masterha_default.cnf 编辑Mha监控全局配置文件,添加如下内容

9、接着配置监控实例配置文件,先使用 mkdir -p /etc/mha 命令创建目录,然后使用 vim /etc/mha/app1.cnf 命令编辑文件,添加如下内容,server1中的1 配对hostname中Mysql服务器中/etc/my.cnf 的server-id属性

10、在Mha服务器上执行命令 masterha_check_ssh --conf=/etc/mha/app1.cnf ,查看四台服务器是否ssh互通,此步如果提示Error,解决方法:删掉每台服务器/root/.ssh目录下所有文件,重新执行 Mha高可用集群准备工作的所有步骤
11、在Mha服务器上执行命令 masterha_check_repl --conf=/etc/mha/app1.cnf,检查搭建的Mysql主从配置是否异常。出现“MySQL Replication Health is OK.”证明MySQL复制集群没有问题。如果提示is not ok,请重新查看mysql主从搭建步骤。
12、MHA Manager服务器上执行命令nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 & 启动MHA监控
13、查看监控状态命令 masterha_check_status --conf=/etc/mha/app1.cnf
14、查看日志命令 tail -f /var/log/mha/app1/manager.log
7、Mha故障自动转移测试
1、在Mha服务器上执行命令tail -200f /var/log/mha/app1/manager.log 打开Mha日志
2、停掉Mysql主库服务 systemctl stop mysqld;
3、查看Mha日志是否自动完成主库切换

浙公网安备 33010602011771号