700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > mysql高可用集群MHA PXC

mysql高可用集群MHA PXC

时间:2021-03-11 04:19:39

相关推荐

mysql高可用集群MHA PXC

MHA+MYSQL主从同步结构

MHA由日本dena公司youshimaton开发

是一套优秀的实现mysql高可用的解决方案

数据库的自动故障切换操作能做到在0-30秒内完成

MHA能确保在故障切换过程中最大限度保证数据的一致性,

以达到真正意义的高可用。

perl 编写

MHA组成:

MHA manager 管理节点

管理所有数据库的服务器

可以单独部署在一台独立的机器上

也可以部署在某台数据库服务器上

MHA Node 数据节点

存储数据的mysql服务器

运行在每台mysql服务器上

由manager定时探测集群中的master节点

当master故障时,manager自动将拥有最新数据的slave提升为新的master

实例:

客户端1台 管理机1台 数据库服务器3台一主两从

数据库:show master status; show slave status;

查看日志是否打开,是否是从服务器

重启mysqld

配置数据库之间可以互相无密码连接

ssh-keygen

ssh-copy-id root@ip

管理机无密码连接数据库群

ssh-keygen

ssh-copy-id root@ip

配置mysql一主多从

51主数据服务器

开启日志 /etc/f

log_bin=master51

server_id=51

:wq

登录授权从服务器用户:

grant replication slave on *.* torepluster@"密码" identified by "密码”;

52从数据服务器

·/etc/f

server_id=52

:wq

systemctl restart mysqld

登录指定主数据服务信息 show master status;看主数据服务器的日志指定日志文件和位置偏移量

change master to master_host="主ip" ,master_user="repluster",master_password="密码“,

master_log_file="master51.0001",master_log_pos=22;

start slave;

show slave status \G;

53主机和52主机一样

show master status;

show grants for repluster@"%";

show slave status \G;

57管理主机:

安装软件包

创建并编辑主配置文件

创建故障切换脚本并编辑

把vip地址指定给在当前的主服务器51

yum -y install perl*

rpm -ivh mha4.mysql-node-0.56-0.e16.noarch.rpm

yum -y install mha4.mysql-node-0.56-0.e16.noarch.rpm

tar -zxvf mha4.mysql-manager-0.56.tar.gz

perl Makefile.pl //需要yum list | grep -i " " 依赖包

make

make install

安装完成命令

masterha_check_ssh 检查mha的ssh配置状况

masterha_check_repl 检查mysql复制状况

masterha_manager启动mha

masterha_check_status 检测mha运行状态

masterha_stop 停止mha

模板文件:

mkdir /etc/mha

cp /var/ftp/upload/mha/mha4mysql-manager-0.56/samples/conf/f/etc/mha

vim /etc/mha/f

manager_workdir=/etc/mha

manager_log=/etc/mha/manager.log

master_ip_failover_script=/etc/mha/master_ip_failover 故障切换脚本,需拷贝模板

ssh_user=root

ssh_port=22

repl_user=用户名(主服务授予的从连接的用户名)

repl_password=密码

user=root 数据服务器授权用户登录监视

password=密码

[server1]

hostname=数据服务器ip地址

port=3306

candidate_master=1

[server2]

....

:wq

cp /var/.../samples/scripts/master_ip_failover /etc/mha/

vim /etc/mha/master_ip_failover 在35行my后

my $vip="192.168.4.100"; 定义vip地址

my $key="1"; 定义地址编号

my $ssh_start_vip="/sbin/ifconfig eth0:$key $vip"; 绑定vip

my $ssh_stop_vip="/sbin/ifconfig eth0:$key down"; 释放vip

:wq

chmod +x /etc/mha/master_ip_failover

51主服务器数据库

ifconfig eth0:1 192.168.4.100/24

ifconfig eth0:1

配置数据库服务器 51 52 53

安装软件

创建授权用户

优化数据库

cdmha-soft-student

都配yum -y install ./mha4mysql-node-0.56-noarch.rpm 节点

主配会同步给从:grant all on *.* to root@"%" identified by "密码";

select user,host from mysql.usrer;

多从服务器都要配置授权同步的用户:

grant replication slave on *.* to repluser@"%" identified by “密码”;

优化配置:

开通半同步复制:

数据都配以下:vim /etc/f 在[mysql]下

plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so

rpl_semi_sync_master_enabled=1

rpl_semi_sync_slave_enabled=1 //启用模块

relay_log_purge=0 //禁止自动删除日志文件

:wq

systemctl restart mysqld

开启从服务器bin-log日志

vim /etc/f

log_bin=master52|53

:wq

测试mha

57管理主机:

masterha_check_ssh --conf=/etc/mha/f 检查ssh

masterha_check_repl --conf=/etc/mha/f 检查从服务复制主从正常

masterha_manager --conf=/etc/mha/f --remove_dead_master_conf --ignore_last_failover(无8小时内第二次限制切换)

masterha_check_status --conf=/etc/mha/f

masterha_stop --conf=/etc/mha/f

主数据会同步:grant select,insert on gamedb.* to ya@"%" identified by "密码“;

create database gamedb;

create table gamedb.t1(id int);

客户端:mysql -hvip -uya -p密码 -e "mysql命令"

51主数据停止mysqld服务

客户端:mysql -hvip -uya -p密码 -e "mysql命令"

52:show slave status;

53:show slave status \G | grep -i "master_host"

57:masterha_manager --conf=/etc/mha/f --remove_dead_master_conf --ignore_last_failover

masterha_check_status --conf=/etc/mha/f

如何恢复宕机的数据库服务器

启动mysql宕机服务

show slave status;

当前主服务器数据完全备份:

mysqldump -uroot -p密码 --master-data(记录日志和偏移量) gamedb > /root/gamedb.sql

scp /root/gamedb.sql 宕机ip:/root/

宕机:mysql -uroot -p密码 gamedb < /root/gamedb.sql

grep master /root/gamedb.sql 日志和偏移量

宕机做从指定复制主服务器:

change master to master_host="192.168.4.52",master_user="repluser"

,master_password="密码",master_log_file=master.22,

master_log_pos=903;

start slave;

管理主机:vim /mha/f 添加宕机的数据库信息加入选举

[server1]

candidate_master=1

hostname=192.168.4.51

port=3305

:wq

masterha_check_repl --conf=/etc/mha/f

检查主从同步

masterha_stop --conf=/etc/mha/f

masterha_manager --conf=/etc/mha/f --remove_dead_master_conf --ignore_last_failover

select * from gamedb.t1;

PXC

介绍:percona xtraDB cluster 简称pxc

galera cluster 是codership公司开发的开源软件

为mysql存储数据提供高可用的集群解决方案

官网

mha高可用:必须是主从结构,ssh免密码登录,必须有vip

恢复故障的主服务器:手动同步数据,配置为当前主服务的从库,手动添加

pxc特点:

数据强一致性,多线程复制,无同步延时,没有主从切换操作,

无需使用虚拟ip,支持故障节点自动加入,无需手动拷贝数据,配置简单

相应端口服务端口:

3306 数据库服务端口

4444 sst端口

4567 集群通讯端口

4568 ist 端口

sststate snapshot transfer 全量同步

istincremental state transfer 增量同步

至少需要三台数据库服务器:克隆修改/etc/sysconfig/network-scripts/ifcfg-ens33网卡

3台服务器都要安装: 先下载

rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm //安装依赖

yum -y install percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm 在线热备程序

rpm -ivh qpress-1.1-14.11.x86_64.rpm 递归压缩包程序

tar -xvf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar

yum -y install Percona-XtraDB-Cluster-*.rpm

存放目录:ls /etc/percona-xtradb-cluster.conf.d/

配置文件说明:

f //数据库服务运行参数配置文件

f //mysql进程参数配置文件无需修改使用默认配置即可

f //pxc集群配置文件

cd /etc/percona-xtradb-cluster.conf.d/

vim ./f 在[mysqld] 3台都要配

server_id=数字本机位 //server-id 不允许重复

datadir=/var/lib/mysql //数据库目录

socket=/var/llib/mysql/mysql.sock //socker文件

log-error=/var/lib/mysqld.log //日志文件

pid-file=/var/run/mysql/mysqld.pid //pid文件

log-bin //启用binlog日志

log_slave_updates //启用链式复制

expire_logs_days=7 //日志文件保留天数

修改f

vim f 3台服务器都需要修改

8:wsrep_cluster_address=gcomm://xxxx,xxxx,xxxx 集群成员列表

25:wsrep_node_address=x.x.x.x //本机ip地址

27:wsrep_cluster_name=pxc-cluster //集群名称,3台必须相同

30:wsrep_node_name=本机名

39:wsrep_sst_auth="用户名sst:密码“ //sst数据同步授权用户

:wq

测试集群

启动服务:在1台服务器上执行即可71主机

添加用户:

systemctl start mysql@bootstrap.service //启动集群服务

grep pass /var/log/mysqld.log //查看数据库管理员初始登录密码

mysql -uroot -p”初始登录密码“ //使用初始登录密码

alter user root@"localhost" identified by "密码”;修改密码

grant reload,lock tables,replication client,process on *.* to stu@"localhost" identified by "密码“ ; //添加授权用户跟上面配置的wsrep用户密码一样

select user from mysql.user;

ls /var/lib/mysql

其他服务主机:只需启动数据库服务

systemctl start mysql //启动数据库服务pxc没有d

没有成功关闭防火墙和selinux,同时删掉 rm -rf /var/lib/mysq/*

重启

netstat -utnlp | grep 3306 //数据库服务端口

netstat -utnlp | grep 4567 //集群端口

查询集群信息

可以在任意一台数据库服务器上执行

mysql -uroot -p12345

show status like "%wsrep%";

查看wsrep_incoming_addresses , wsrep_cluster_size,wsrep_cluster_status primary,wsrep_connected

测试高可用

在任意一台服务器上添加访问数据的授权用户

任意一台服务器宕机不影响客户端连接

在客户端使用授权用户连接任意服务器数据库可以存储数据,且可以查到同样的数据

建表时,必须有主键字段

grant all on 库名.* to 用户@"%" identified by "密码“;

客户端:mysql -h数据库服务器ip地址 -u用户 -p密码

故障:只需重启

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。