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

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

 六、实验步骤

(一)配置ssh免密登录

1、配置mgt(192.168.115.128)

命令:ssh-keygen                     #生成密钥

for i in 130 131 132;do ssh-copy-id root@192.168.115.$i;done         #上传密钥

2、配置master(192.168.115.130)

命令:ssh-keygen                     #生成密钥

for i in 128 131 132;do ssh-copy-id root@192.168.115.$i;done          #上传密钥

3、配置slave1(192.168.115.131)

命令:ssh-keygen                     #生成密钥

for i in 130 128 132;do ssh-copy-id root@192.168.115.$i;done        #上传密钥

4、配置slave2(192.168.115.132)

命令:ssh-keygen                     #生成密钥

for i in 130 131 128;do ssh-copy-id root@192.168.115.$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/目录下,这样就可以实现主机名免密登录。

补充说明

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

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

⑥开启slave

命令:mysql  -e  “slave  start;”

⑦查看slave状态

mysql  -e  “show  slave  status\G;”

⑧验证主从复制

在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;”

⑤查看slave状态

mysql  -e  “show  slave  status\G;”

⑥验证主从复制

在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

 

命令:

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

②cd mha4mysql-node-0.57

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

3、验证

①cd /usr/local/bin

②看到脚本就OK
   

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

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

②编译安装

cd /root/mha4mysql-manager-0.57

perl Makefile.PL && make && make install

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

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

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

master_ip_failover脚本说明
master_ip_online_change脚本说明

 ④脚本说明

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

master_ip_online_change    在线切换时 vip 的管理

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

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

⑤修改脚本master_ip_failover

 ⑥创建文件并修改文件

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

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

出现的错误:

 解决办法:

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

vim master_ip_failover将FTXME_xxx;给注释掉

⑧启动命令

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日志同步信息

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值