美文网首页
MHA +MYSQL 高可用主从搭建方案

MHA +MYSQL 高可用主从搭建方案

作者: 三石_5f43 | 来源:发表于2020-06-24 10:01 被阅读0次

MHA +MYSQL 高可用主从搭建方案

一、环境及软件版本

  • 服务器:centos 7 4台

  • mysql 版本: mysql-5.7.29

  • MHA-manager: mha4mysql-manager-0.58-0.el7

  • MHA-node: mha4mysql-node-0.58-0.el7

二、部署架构图

1592123563473.png

三、环境搭建

mysql主从架构搭建

1、 mysql 安装步骤

1) 下载mysql tar 包
wget  https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.29-el7-x86_64.tar.gz

tar -zxvf  mysql-5.7.29-el7-x86_64.tar.gz
2) 编辑 /etc/profile 配置mysql 环境
#MYSQL CONFIGURATION

MYSQL_HOME=/usr/local/mysql5.7.29
PATH=$PATH:$MYSQL_HOME/bin:$MYSQL_HOME/sbin

export  HADOOP_HOME  PATH
3) 实例化 mysql db
cd /usr/local/mysql5.7.29/bin/

./mysqld --initialize --user=mysql --datadir=/usr/local/mysql5.7.29/data --basedir=/usr/local/mysql5.7.29
4) 编辑/etc/my.cnf 文件

======================== 主 - master 配置 start =======================

[mysqld]

lower_case_table_names=1
#binlog enable
log_bin=mybinlog

sync-binlog=1
#config ignore binlog record db
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys

binlog_format = ROW 

log-error=/var/log/mysqld.log

pid-file=/usr/local/mysql5.7.29/data/mysqld.pid

#These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql5.7.29

datadir = /usr/local/mysql5.7.29/data

user=mysql
#port = .....
server_id = 100000
#socket = .....
#Semi-synchronous replication
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000`

======================== 主 - master 配置 ending =======================

从 - slave 配置

======================== 从 - slave配置 start=======================

[mysqld]
lower_case_table_names=1
#enable binlog
log_bin=mybinlog

sync-binlog=1
#binlog record ignore datasources config
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys

binlog_format = ROW

log-error=/var/log/mysqld.log
pid-file=/usr/local/mysql5.7.29/data/mysqld.pid

#These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql5.7.29

datadir = /usr/local/mysql5.7.29/data
user=mysql
#port = .....
server_id = 200001

relay_log=myrelaylog
read_only=1

relay_log_recovery=1

#Semi-synchronous replication enable
rpl_semi_sync_slave_enabled=1

relay_log_purge=0 

======================== 从 - slave配置 ending=======================

<u>注意: server_id 不可重复</u>

5、启动mysql 服务

`1)创建软连接`

ln -s /usr/local/mysql5.7.29/support-files/mysql.server    /etc/init.d/mysql

`2) 启动服务`

service mysql start


2 、主从mysql服务搭建

1、 master 设置
 #授予slave 权限
 GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'admin';
 grant REPLICATION CLIENT,REPLICATION SLAVE on *.* to root@'slave01' identified by 'admin';

 grant REPLICATION CLIENT,REPLICATION SLAVE on *.* to root@'slave02' identified by 'admin';

 flush privileges;
2、 slave 配置部分
GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'admin';
flush privileges;


#设置要同步的master 信息
change master to master_host='192.168.1.106', MASTER_PORT=3306 ,master_user='root',master_password='admin', master_log_file='mybinlog.000012',master_log_pos=154;

#启动slave
start slave;

半同步复制机制配置

1、 主库设置部分

是否支持插件动态安装
select @@have_dynamic_loading;

显示已经安装的插件
show plugins;

安装rpl_semi_sync_master 插件
install plugin rpl_semi_sync_master soname 'semisync_master.so';


查看半同步相关参数
show variables like '%semi%';


设置相关参数  启用和超时时间设置

set global rpl_semi_sync_master_enabled=1;
set global rpl_semi_sync_master_timeout=1000;

2、从库设置部分

安装插件
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';

查看变量并修改

show variables like '%semi%'
set global rpl_semi_sync_slave_enabled=1;


重启slave

stop slave;
start slave;

MHA manager 和 node 服务搭建

1、mha manager 节点安装配置细节

1) 下载最新的epel 源
wget http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm
rpm -ivh epel-release-7-12.noarch.rpm
2) 下载mha manager 和node 依赖包
wget https://qiniu.wsfnk.com/mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
wget https://qiniu.wsfnk.com/mha4mysql-node-0.58-0.el7.centos.noarch.rpm
3) 安装 node 和 manager, 及相关依赖包
yum install  -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager 

rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm
rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm 
4) 配置节点ssh 互信
ssh-keygen -t rsa 
ssh-copy-id -i ~/.ssh/id_rsa.pub master
ssh-copy-id -i ~/.ssh/id_rsa.pub slave01
ssh-copy-id -i ~/.ssh/id_rsa.pub slave02
5) 创建masterha 目录
mkdir /usr/local/masterha /usr/local/masterha/app1  
mkdir /etc/masterha 
6) 创建masterha 配置文件 app1.cnf, 路径 /etc/masterha/app1.cnf
   [server default]
   
   # mysql 访问用户名密码
   user=root 
   password=admin
   
   # ssh免密钥登录的帐号名
   ssh_user=root  
   
   # mysql复制帐号 密码
   repl_user=root  
   repl_password=admin  
   
   # ping间隔,用来检测master是否正常,默认是3秒,尝试三次没有回应的时候自动进行failover
   ping_interval=1   
   
   # 数据目录
   manager_workdir=/usr/local/masterha/app1  
   
   # 日志文件
   manager_log=/usr/local/masterha/manager.log  
   
   # 另外2台机子在运行时候需要创建的目录,注意ssh-keygen帐号的权限问题
   remote_workdir=/usr/local/masterha/app1  
   
   # binlog目录,不指定会报错
   master_binlog_dir=/usr/local/mysql5.7.29/data


​    
   master_ip_failover_script=/usr/local/masterha/scripts/master_ip_failover
   master_ip_online_change_script=/usr/local/masterha/scripts/master_ip_online_change
   #shutdown_script=/usr/local/masterha/scripts/power_manager  192.168.1.105


​    
   [server1] 
   # master机宕掉后,优先启用这台作为新master
   hostname=192.168.1.102
   candidate_master=1  
   
   # 默认情况下如果一个slave落后master 100M的relay logs的话,MHA将不会选择该slave作为 一个新的master,因为对于这个slave的恢复需要花费很长时间,通过设置check_repl_delay=0,MHA触发切换在选择一个>新的master的时候将会忽略复制延时,这个参数对于设置了candidate_master=1的主机非常有用,因为这个候选主在切换的过程中一定是新的master
   check_repl_delay=0  
   
   [server2] 
   hostname=192.168.1.104
   candidate_master=1 
   # 一定不会选这个机器为master,根据情况设置
   #no_master=1  
   
   # port默认是3306,如果是其他的,需要在这里指定,否则会报错  
   # port=3306  
   
   [server3] 
   hostname=192.168.1.106
   candidate_master=1
7) 检查ssh 通信是否正常
masterha_check_ssh --conf=/etc/masterha/app1.cnf 
1592127137037.png
8) 主从复制健康检查
masterha_check_repl --conf=/etc/masterha/app1.cnf
1592127295960.png
9 ) 出现的问题
问题1: Can't exec "mysqlbinlog": 没有那个文件或目录 at /usr/share/perl5/vendor_perl/MHA/BinlogManager.pm line 106.

解决: ln -s /usr/local/mysql5.7.29/bin/mysqlbinlog  /usr/sbin/


问题2: mysql command failed with rc 127:0!

解决:ln -s /usr/local/mysql5.7.29/bin/mysql /usr/sbin/

2、mha node 节点 (master , slave01 , slave02 都为node 节点) 配置安装细节

1)安装依赖包
yum install perl-DBD-MySQL
2) 安装node
 rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm

相关文章

网友评论

      本文标题:MHA +MYSQL 高可用主从搭建方案

      本文链接:https://www.haomeiwen.com/subject/wjalfktx.html