MHA及PXC

MHA (Master High Availability)

建议配合半同步使用

MHA工作原理

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

  2. 识别含有新更新的slave

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

  4. 应用从master保存的二进制日志事件(binlog events)

  5. 提升一个slave为新的master

  6. 使其他的slave连接新的master进行复制

MHA实战实验

环境:MHA0.58 ;Mysql 5.7

 准备:所有机器之间实现key验证,*主从搭建略

1、管理节点安装两个包,其它安装node

#需要则安装依赖
yum -y install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes

yum -y install mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

yum -y install mha4mysql-node-0.58-0.el7.centos.noarch.rpm

 

2、管理节点建立配置文件

mkdir /etc/mastermha                #自定义
vim /etc/mastermha/app1.cnf        #自定义

[server default] 
user=mhauser        #用于远程连接MySQL所有节点的用户,需要有管理员的权限 
password=123456
manager_workdir=/data/mastermha/app1/ 
manager_log=/data/mastermha/app1/manager.log 
remote_workdir=/data/mastermha/app1/ 
ssh_user=root       #用于实现远程ssh基于KEY的连接,访问二进制日志 repl_user=repluser  #主从复制的用户信息 repl_password=magedu ping_interval=1     #健康性检查的时间间隔 #master_ip_failover_script=/usr/local/bin/master_ip_failover   #切换VIP的perl 脚本 #report_script=/usr/local/bin/sendmail.sh  #当执行 报警脚本 check_repl_delay=0   #默认如果slave中从库落后主库realylog100M,主库不会选择这个从库为新的master,因为这个从库进行恢复需要很长的时间.通过这个参数,mha触发主从切换的时候会忽略复制的延时,通过check_repl_delay=0这个参数,mha触发主从切换时会忽略复制的延时,对于设 置candidate_master=1的从库非常有用,这样确保这个从库一定能成为最新的master master_binlog_dir=/data/mysql/  #指定二进制日志存放的目录,mha4mysql-manager-0.58 必须指定,之前版本不需要指定 [server1] hostname=10.0.0.27 candidate_master=1     [server2] hostname=10.0.0.37 candidate_master=1   #设置为优先候选master,即使不是集群中事件最新的slave,也会优先当 master [server3] hostname=10.0.0.47

 

3、创建mha连接使用用户

grant all on *.* to mhauser@'10.0.0.%' identified by '123456'

 

 4、启动 MHA

#后台,默认前台
nohup masterha_manager --conf=/etc/masternha/app1.cnf &> /dev/null
#状态查看
masterha_check_status --conf=/etc/mastermha/app1.cnf

PXC (Percona XtraDB Cluster)

安装

#设置yum源
vim /etc/yum.repo.d/pxc.repo
[percona]
name=percona_repo
baseurl=https://mirrors.tuna.tsinghua.edu.cn/percona/release/$releasever/RPMS/$basearch
gpgcheck=0
enabled=1

scp /etc/yum.repos.d/pxc.repo 10.0.0.37:/etc/yum.repos.d/

配置

#配置范例
#grep -Ev "^#|^$"  /etc/percona-xtradb-cluster.conf.d/wsrep.cnf 
[mysqld] 
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so wsrep_cluster_address=gcomm://10.0.0.7,10.0.0.17,10.0.0.27 
binlog_format=ROW 
default_storage_engine=InnoDB 
wsrep_slave_threads= 8 
wsrep_log_conflicts 
innodb_autoinc_lock_mode=2         
wsrep_node_address=10.0.0.17          #各个节点,指定自已的IP 
wsrep_cluster_name=pxc-cluster 
wsrep_node_name=pxc-cluster-node-2    #各个节点,指定自已节点名称 
pxc_strict_mode=ENFORCING 
wsrep_sst_method=xtrabackup-v2 
wsrep_sst_auth="sstuser:s3cretPass"   #取消本行注释

 

启动

#启动第一个节点,其它节点与普通启动相同
systemctl start mysql@bootstrap.service
[root@centos7 ~]# ss -ntl
State      Recv-Q Send-Q            Local Address:Port            Peer Address:Port
LISTEN     0      128                           *:4567            *:*
LISTEN     0      100                   127.0.0.1:25              *:*
LISTEN     0      128                           *:22              *:*
LISTEN     0      100                       [::1]:25              [::]:*
LISTEN     0      80                         [::]:3306            [::]:*
LISTEN     0      128                        [::]:22              [::]:*

 

#获取初始密码,并修改
grep password /var/log/mysqld.log
2020-10-15T11:59:04.779773Z 1 [Note] A temporary password is generated for root@localhost: g;bjz(xu63lK

mysql -uroot -p'g;bjz(xu63lK'

mysql> alter user root@localhost identified by '123456';
#创建与wsrep.cnf内相同的权限用户
create user 'sstuser'@'localhost' identified by 's3cretPass';
grant reload,lock tables,process,replication client on *.* to 'sstuser'@'localhost';
#其它节点启动时会自动同步 mysql
> show variables like 'wsrep%'\G *************************** 1. row *************************** Variable_name: wsrep_OSU_method Value: TOI *************************** 2. row *************************** Variable_name: wsrep_RSU_commit_timeout Value: 5000 *************************** 3. row *************************** Variable_name: wsrep_auto_increment_control Value: ON *************************** 4. row *************************** Variable_name: wsrep_causal_reads Value: OFF
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

 

posted @ 2020-10-17 17:01  天际之上可有蓝天  阅读(613)  评论(0)    收藏  举报