当前位置:Gxlcms > 数据库问题 > MySQL高可用

MySQL高可用

时间:2021-07-01 10:21:17 帮助过:6人阅读

MHA原理图

技术图片

MHA的manager和node包下载地址

https://github.com/yoshinorim/mha4mysql-manager/wiki/Downloads

MHA的实现及配置

最少准备4台机器

主节点配置

[root@localhost ~]# yum install mha4mysql-node-0.56-0.el6.noarch.rpm -y  #主从节点需要安装mha的node包
[root@localhost ~]# vim /etc/my.cnf  
[mysqld]
server-id=17
log-bin
skip-name-resolve      #防止mha连接时,把IP反向解析成名字
[root@localhost ~]# systemctl restart mariadb
[root@localhost ~]# mysql
MariaDB [(none)]> grant replication slave on *.* to repluser@‘192.168.38.%‘ identified by ‘centos‘;   #创建复制用的账号
MariaDB [(none)]> grant all on *.* to mhauser@‘192.168.38.%‘ identified by ‘centos‘;   #创建mha用于管理的账号,提升从为主;主节点创建的账号会同步到从节点

slave1配置

[root@slave1 ~]# yum install mha4mysql-node-0.56-0.el6.noarch.rpm -y
[root@slave1 ~]# vim /etc/my.cnf
[mysqld]
server-id=27
log-bin      #从节点会提升为主节点,二进制日志必须开启
read-only     #当从节点提升为主节点,mha会把read-only属性在mysql中关闭
relay-log-purge=0    #不清空中继日志,mha会把统计日志同步到其他slave上
skip-name-resolve
[root@slave1 ~]# systemctl restart mariadb
[root@slave1 ~]# mysql
MariaDB [(none)]> CHANGE MASTER TO    #指定主节点信息
   -> MASTER_HOST=‘192.168.38.37‘,
   -> MASTER_USER=‘repluser‘,        
   -> MASTER_PASSWORD=‘centos‘,
   -> MASTER_PORT=3306,
   -> MASTER_LOG_FILE=‘mariadb-bin.000001‘,
   -> MASTER_LOG_POS=245;
MariaDB [(none)]> start slave;

slave2配置

[root@slave2 ~]# yum install mha*.rpm -y 
[root@slave2 ~]# vim /etc/my.cnf
[mysqld]
server-id=37
log-bin
read-only
relay-log-purge=0
skip-name-resolve
[root@slave2 ~]# systemctl restart mariadb
[root@slave2 ~]# mysql
MariaDB [(none)]> CHANGE MASTER TO
   -> MASTER_HOST=‘192.168.38.37‘,
   -> MASTER_USER=‘repluser‘,
   -> MASTER_PASSWORD=‘centos‘,
   -> MASTER_PORT=3306,
   -> MASTER_LOG_FILE=‘mariadb-bin.000001‘,
   -> MASTER_LOG_POS=245;
MariaDB [(none)]> start slave;

MHA-manager管理机配置

需要准备的包:

mha4mysql-manager-0.56-0.el6.noarch.rpm   
mha4mysql-node-0.56-0.el6.noarch.rpm
安装mha4mysql-manager包时,需要开启epel源,manager有的依赖包需要从epel源上下载

配置:

[root@mha-manager ~]# ssh-keygen    #生成公钥私钥对,mha是基于ssh协议,连接节点进行相关操作的,所以需要基于Key验证
[root@mha-manager ~]# cd .ssh/
[root@mha-manager .ssh]# ssh-copy-id 127.0.0.1   #把公钥发送到本机的.ssh/authorized_keys文件中
[root@mha-manager ~]# scp -rp .ssh 192.168.38.37:/root/  #把本机的.ssh目录保留属性发送到远程主机的root目录下
[root@mha-manager ~] #scp -rp .ssh 192.168.38.47:/root/
[root@mha-manager ~] #scp -rp .ssh 192.168.38.57:/root/  #mha-manager可以基于key验证连接三个节点,并且4台机器之间可以相互连接
[root@mha-manager ~]# yum install mha*.rpm -y   #安装mha-manager和node包 
[root@mha-manager ~]# vim /etc/mha.conf    #编辑mha配置文件
[server default]
user=mhauser       #指定mysql创建的管理账号,用于提生主节点
password=centos
manager_workdir=/data/mastermha/app1/    #存放manager生成的文件
manager_log=/data/mastermha/app1/manager.log   #指定日志目录,这些目录会自动生成
remote_workdir=/data/mastermha/app1/   #远程节点生成的数据存放目录
ssh_user=root      #ssh连接主节点的用户
repl_user=repluser   #指定mysql复制用户
repl_password=centos
ping_interval=1    #1秒钟发送一次监控报文

[server1]
hostname=192.168.38.37     #mha会自动识别主从
[server2]
hostname=192.168.38.47
candidate_master=1       #优先提升为主节点;如果不指定,系统会自动根据同步进度,自行提升主节点
[server3]
hostname=192.168.38.57

#一个高可用集群用一个配置文件
[root@mha-manager ~]# masterha_check_ssh --conf=/etc/mha.conf   #检查mha的ssh连接,读取配置文件
[root@mha-manager ~]# masterha_check_repl --conf=/etc/mha.conf   #检测配置文件中列出的服务器列表,识别主从及检测复制等信息
[root@mha-manager ~]# masterha_manager --conf=/etc/mha.conf      #执行mha,mha默认是前端执行,不能关闭终端窗口,工作中需要放到后端;并且mha检查到一次故障,提升完主节点之后,就会退出mha进程

注意:

MHA把从节点提升为主节点,用管理账号连接从节点,删除里面的主从复制信息,关闭slave线程,关闭read_only等属性;

MariaDB [(none)]> select @@read_only;     #从节点提升为主节点
+-------------+
| @@read_only |
+-------------+
|           0 |
+-------------+
MariaDB [(none)]> show slave status\G
Empty set (0.00 sec)

MySQL高可用

标签:mysql复制   systemctl   相关   nlog   集群   git   检查   数据   date   

人气教程排行