MHA及PXC
MHA ()
建议配合半同步使用
MHA工作原理
-
从宕机崩溃的master保存二进制日志事件(binlog events)
-
识别含有新更新的slave
-
应用差异的中继日志(relay log)到其他的slave
-
应用从master保存的二进制日志事件(binlog events)
-
提升一个slave为新的master
-
使其他的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 (
安装
#设置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
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

浙公网安备 33010602011771号