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';

    show variables like '%semi%'; 
  2、使用命令 vi /etc/my.cnf 编辑主节点配置文件
    # 自动开启半同步复制
     rpl_semi_sync_master_enabled=ON
     rpl_semi_sync_master_timeout=1000 
   3、重启主库MySQL服务  systemctl restart mysqld 
  4、从节点登录MySQL执行
     install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
  5、使用命令 vi /etc/my.cnf 编辑主节点配置文件
    rpl_semi_sync_slave_enabled=ON 
  6、重启从库MySQL服务  systemctl restart mysqld 
  7、查看日志是否开始半同步复制  cat /var/log/mysqld.log 如出现  Start semi-sync binlog_dump to slave 表明半同步开启成功 
  

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日志是否自动完成主库切换

posted @ 2021-08-17 20:07  十二A~  阅读(284)  评论(0)    收藏  举报