Mariadb高可用MHA相关知识点及搭建

目录

一、概述

二、组成

(一)MHA manager         管理节点

(二)MHA node                数据节点

三、特点

四、工作原理

五、搭建时的环境说明

(一)需要准备四台虚拟机,而且每台虚拟机都要关闭Networkmanager以及开机不自启,关闭防火墙开机以及不自启,关闭selinux,静态配置IP(相关操作详见http://t.csdn.cn/vH97M)

(二)为了思路清晰,简单明了,将四台虚拟机改为以下操作:

 六、实验步骤

(一)配置ssh免密登录

1、配置mgt(192.168.115.128)

2、配置master(192.168.115.130)

3、配置slave1(192.168.115.131)

4、配置slave2(192.168.115.132)

5、 设置主机名免密登录(配置mgt)

 6、测试

(二)安装mariadb数据库

 (三)实现一主两从的主从复制

1、配置master(192.168.115.130)

2、配置slave1(192.168.115.131)

3、配置slave2(192.168.115.132)

(四)MHA安装      #所有节点安装表示四个虚拟机都安装

1、所有节点安装perl环境

2、所有节点安装node

3、验证

 4、安装manager(只在虚拟机mgt上解压)

(五)故障恢复


一、概述

(一)MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。

(二)MHA 的出现就是解决MySQL 单点的问题。

(三)MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。

(四)MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正意义上的高可用。

二、组成

(一)MHA manager         管理节点

 1、MHA Manager 可以单独部署在一台独立的机器上,管理多个 master-slave 集群;也可以部署

在一台 slave 节点上。
2、MHA Manager 会定时探测集群中的 master 节点。当 master 出现故障时,它可以自动将最新

数据的 slave 提升为新的 master, 然后将所有其他的 slave 重新指向新的 master。整个故障转移

过程对应用程序完全透明。

(二)MHA node                数据节点

MHA Node 运行在每台 MySQL 服务器上。

三、特点

(一)自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失

(二)使用半同步复制,可以大大降低数据丢失的风险,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性

(三)目前MHA支持一主多从架构,最少三台服务,即一主两从

四、工作原理

(一)从宕机崩溃的master 保存二进制日志事件(binlog events);

(二)识别含有最新的更新slave日志

(三)应用差异的中继日志(relay log)到其他的slave

(四)应用从master保存的二进制日志事件

(五)提升一个slave为新的master

(六)使其他的slave连接新的master进行复制

五、搭建时的环境说明

(一)需要准备四台虚拟机,而且每台虚拟机都要关闭Networkmanager以及开机不自启,关闭防火墙开机以及不自启,关闭selinux,静态配置IP(相关操作详见http://t.csdn.cn/vH97M)

(二)为了思路清晰,简单明了,将四台虚拟机改为以下操作:

Mariadb高可用MHA相关知识点及搭建_第1张图片

 六、实验步骤

(一)配置ssh免密登录

1、配置mgt(192.168.115.128)

命令:ssh-keygen                     #生成密钥

for i in 130 131 132;do ssh-copy-id [email protected].$i;done         #上传密钥

2、配置master(192.168.115.130)

命令:ssh-keygen                     #生成密钥

for i in 128 131 132;do ssh-copy-id [email protected].$i;done          #上传密钥

3、配置slave1(192.168.115.131)

命令:ssh-keygen                     #生成密钥

for i in 130 128 132;do ssh-copy-id [email protected].$i;done        #上传密钥

4、配置slave2(192.168.115.132)

命令:ssh-keygen                     #生成密钥

for i in 130 131 128;do ssh-copy-id [email protected].$i;done        #上传密钥

5、 设置主机名免密登录(配置mgt)

命令:vim  /etc/hosts

192.168.115.128    mgt

192.168.115.130    master

192.168.115.131    slave1

192.168.115.132    slave2

#将以上四条内容写入/etc/hosts文件中

scp  /etc/hosts  192.168.168.115.130:/etc/

scp  /etc/hosts  192.168.168.115.131:/etc/

scp  /etc/hosts  192.168.168.115.132:/etc/

#以上三条命令是将本地机器上的 /etc/hosts文件分别拷贝到 IP 地址为 192.168.168.115.130、192.168.168.115.131、192.168.168.115.132 的远程机器上的/etc/目录下,这样就可以实现主机名免密登录。

Mariadb高可用MHA相关知识点及搭建_第2张图片 补充说明

 6、测试

在四台主机上分别测试IP地址以及主机名能否实现免密登录。

(二)安装mariadb数据库

命令:for i in 130 131 132;do ssh 192.168.115.$i yum install -y mariadb mariadb-server  mariadb;done

注意:除了IP为192.168.115.128的主机不装mariadb  mariadb-server外,其他都得装

 (三)实现一主两从的主从复制

1、配置master(192.168.115.130)

①修改配置文件/etc/my.cnf

server-id=20

log-bin=master-bin

log-slave-updates=true

#注意:该配置需要写到 [mysqld]区域内

② 启动master服务器

命令:systemctl  restart  mariadb

③授予用户myslave在从服务器上执行复制操作的权限。

命令:

mysql -e "grant replication slave on *.* to 'myslave'@'192.168.115.%' identified by '123.com';"

④查看用户myslave权限

mysql  -e  “show  grants  for   'myslave'@'192.168.115.%';”

⑤授予用户mha所用的权限

命令:

mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.%' identified by '123.com';"

mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.128' identified by '123.com';"

mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.131' identified by '123.com';"

mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.132' identified by '123.com';"

⑥查看master的日志信息

命令:mysql -e "show master status;"

Mariadb高可用MHA相关知识点及搭建_第3张图片

2、配置slave1(192.168.115.131)

①修改配置文件/etc/my.cnf

server-id=30

log-bin=master-bin

relay-log=relay-log-bin

relay-log-index=relay-log-bin.index

#注意:该配置需要写到 [mysqld]区域内

② 启动master服务器

命令:systemctl  restart  mariadb

③授予用户myslave在从服务器上执行复制操作的权限。

命令:

mysql -e "grant replication slave on *.* to 'myslave'@'192.168.115.%' identified by '123.com';"

④查看用户myslave权限

mysql  -e  “show  grants  for   'myslave'@'192.168.115.%';”

#因为主master宕机,slave1会提升为主库,所以,才会有③和④的操作

⑤指定master

命令:

mysql -e "change master to master_host='192.168.115.130',master_
user='myslave',master_password='123.com',master_log_file='master-bin.000001',master_log_pos=969;"

Mariadb高可用MHA相关知识点及搭建_第4张图片

⑥开启slave

命令:mysql  -e  “slave  start;”

⑦查看slave状态

mysql  -e  “show  slave  status\G;”

Mariadb高可用MHA相关知识点及搭建_第5张图片

⑧验证主从复制

在Master中创建数据库jx:create database jx;

在Slave中查看数据库:show databases;

⑨授予用户mha所用的权限

命令:

mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.%' identified by '123.com';"

mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.128' identified by '123.com';"

mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.130' identified by '123.com';"

mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.132' identified by '123.com';"

3、配置slave2(192.168.115.132)

①修改配置文件/etc/my.cnf

server-id=40

log-bin=master-bin

relay-log=relay-log-bin

relay-log-index=relay-log-bin.index

#注意:该配置需要写到 [mysqld]区域内

②启动master服务器

命令:systemctl  restart  mariadb

③指定master

命令:

mysql -e "change master to master_host='192.168.115.130',master_
user='myslave',master_password='123.com',master_log_file='master-bin.000003',master_log_pos=1166;"

④开启slave

命令:mysql  -e  “slave  start;”

Mariadb高可用MHA相关知识点及搭建_第6张图片

⑤查看slave状态

mysql  -e  “show  slave  status\G;”

Mariadb高可用MHA相关知识点及搭建_第7张图片

⑥验证主从复制

在Master中创建数据库jx:create database jx;

在Slave中查看数据库:show databases;

⑦授予用户mha所用的权限

命令:

mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.%' identified by '123.com';"

mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.128' identified by '123.com';"

mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.130' identified by '123.com';"

mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.131' identified by '123.com';"

(四)MHA安装      #所有节点安装表示四个虚拟机都安装

1、所有节点安装perl环境

命令:

①yum install  -y epel-release

②yum -y install perl-DBD-MySQL perl-ExtUtils-MakeMaker perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes perl-CPAN

2、所有节点安装node

Mariadb高可用MHA相关知识点及搭建_第8张图片

 Mariadb高可用MHA相关知识点及搭建_第9张图片

命令:

①tar xf mha4mysql-node-0.57.tar.gz

②cd mha4mysql-node-0.57

③perl Makefile.PL && make && make install

Mariadb高可用MHA相关知识点及搭建_第10张图片

3、验证

①cd /usr/local/bin

②看到脚本就OK
   Mariadb高可用MHA相关知识点及搭建_第11张图片

 4、安装manager(只在虚拟机mgt上解压)

①解压:tar xf mha4mysql-manager-0.57.tar.gz

②编译安装

cd /root/mha4mysql-manager-0.57

perl Makefile.PL && make && make install

Mariadb高可用MHA相关知识点及搭建_第12张图片

③复制脚本到/usr/local/bin/

cp sample/scripts/master_ip_failover /usr/local/bin/

cp sample/scripts/master_ip_online_change     /usr/local/bin/

Mariadb高可用MHA相关知识点及搭建_第13张图片

Mariadb高可用MHA相关知识点及搭建_第14张图片 master_ip_failover脚本说明 Mariadb高可用MHA相关知识点及搭建_第15张图片 master_ip_online_change脚本说明

 ④脚本说明

master_ip_failover    自动切换时 VIP 管理的脚本

master_ip_online_change    在线切换时 vip 的管理

power_manager    故障发生后关闭主机的脚本

send_report    因故障切换后发送报警的脚本

⑤修改脚本master_ip_failover

Mariadb高可用MHA相关知识点及搭建_第16张图片

 ⑥创建文件并修改文件

mkdir /etc/masterha

vim /etc/masterha/app1.cnf

[server default]
manager_log=/var/log/masterha/app1/manager.log
manager_workdir=/var/log/masterha/app1
master_binlog_dir=/var/lib/mysql/
master_ip_failover_script=/usr/local/bin/master_ip_failover
master_ip_online_change_script=/usr/local/bin/master_ip_online_change
password=123.com
ping_interval=1
remote_workdir=/tmp
repl_password=123.com
repl_user=myslave
secondary_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.115.131 -s 192.168.115.132
shutdown_script=""
ssh_user=root
user=mha

[server1]
hostname=192.168.115.130
port=3306

[server2]
candidate_master=1
check_repl_delay=0
hostname=192.168.115.131
port=3306

[server3]
hostname=192.168.115.132
port=3306

⑦测试MHA

命令:masterha_check_ssh --conf=/etc/masterha/app1.cnf

Mariadb高可用MHA相关知识点及搭建_第17张图片

masterha_check_repl --conf=/etc/masterha/app1.cnf

Mariadb高可用MHA相关知识点及搭建_第18张图片

出现的错误:

Mariadb高可用MHA相关知识点及搭建_第19张图片

 解决办法:

Mariadb高可用MHA相关知识点及搭建_第20张图片

 若上述还无法解决,就执行下步操作:

vim master_ip_failover将FTXME_xxx;给注释掉

Mariadb高可用MHA相关知识点及搭建_第21张图片

⑧启动命令

nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &

#启动时masterIP异常,需要工程手动配置VIP

⑨测试

停用master的mariadb服务

(五)故障恢复

1、修改app1.cnf启动配置文件          添加master主机配置信息

2、分别在slave上重新指定master主机及binlog日志同步信息

你可能感兴趣的:(mariadb,mysql,数据库)