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/my.cnf
log_bin=master51
server_id=51
:wq
登录授权从服务器用户:
grant replication slave on *.* to repluster@"密码" identified by "密码”;
52从数据服务器
·/etc/my.cnf
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/app1.cnf /etc/mha
vim /etc/mha/app1.cnf
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
安装软件
创建授权用户
优化数据库
cd mha-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/my.cnf 在[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/my.cnf
log_bin=master52|53
:wq
测试mha
57管理主机:
masterha_check_ssh --conf=/etc/mha/app1.cnf 检查ssh
masterha_check_repl --conf=/etc/mha/app1.cnf 检查从服务复制主从正常
masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover(无8小时内第二次限制切换)
masterha_check_status --conf=/etc/mha/app1.cnf
masterha_stop --conf=/etc/mha/app1.cnf
主数据会同步: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/app1.cnf --remove_dead_master_conf --ignore_last_failover
masterha_check_status --conf=/etc/mha/app1.cnf
如何恢复宕机的数据库服务器
启动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/app1.cnf 添加宕机的数据库信息加入选举
[server1]
candidate_master=1
hostname=192.168.4.51
port=3305
:wq
masterha_check_repl --conf=/etc/mha/app1.cnf
检查主从同步
masterha_stop --conf=/etc/mha/app1.cnf
masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover
select * from gamedb.t1;
PXC
介绍:percona xtraDB cluster 简称pxc
galera cluster 是codership公司开发的开源软件
为mysql存储数据提供高可用的集群解决方案
官网http://galeracluster.com
mha高可用:必须是主从结构,ssh免密码登录,必须有vip
恢复故障的主服务器:手动同步数据,配置为当前主服务的从库,手动添加
pxc特点:
数据强一致性,多线程复制,无同步延时,没有主从切换操作,
无需使用虚拟ip,支持故障节点自动加入,无需手动拷贝数据,配置简单
相应端口服务端口:
3306 数据库服务端口
4444 sst端口
4567 集群通讯端口
4568 ist 端口
sst state snapshot transfer 全量同步
ist incremental 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/
配置文件说明:
mysqld.cnf //数据库服务运行参数配置文件
mysql.stafe.cnf //mysql进程参数配置文件无需修改使用默认配置即可
wsrep.cnf //pxc集群配置文件
cd /etc/percona-xtradb-cluster.conf.d/
vim ./mysqld.cnf 在[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 //日志文件保留天数
修改wsrep.cnf
vim wsrep.cnf 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密码
故障:只需重启
mysql高可用集群MHA,PXC相关推荐
- mysql高可用集群——MHA架构
目录 1.下载 2.搭建mha 2.1 系统配置 2.2 架构 2.3 添加ssh公钥信任 2.4 安装mha节点 2.5 manager配置文件 2.6 检查 2.7 启动manager进程 2.8 ...
- 企业主流MySQL高可用集群
选型 10款常见MySQL高可用方案选型解读 MYSQL(高可用方案) 目前最流行的是:主从复制.基于Galera的方案 企业主流MySQL高可用集群 了解 MySQL 集群之前,先看看单节点数据库的 ...
- heartbeat+DRBD+mysql高可用集群实战
heartbeat+DRBD+mysql高可用集群实战 四台主机 主机名 IP地址 用途 dbm128 ...
- mysql1.7(mysql优化,mysql-mmm软件介绍,mysql高可用集群。)
一,mysql优化. 1. 1mysql服务工作过程 mysql服务由8个功能组件组成: 1,管理工具 把软件包安装后,提供的命令. #mv /etc/my.cnf /etc/my.cnf.ba ...
- MYSQL高可用集群架构——MHA架构
MHA高可用集群 文章目录 一.MHA 简介: 二.部署 MHA: 第一步:三台主从服务器安装 mysql 第二步:修改 mysql 的主配置文件:/etc/my.cnf ,注意三台服务器的 serv ...
- 企业中MySQL高可用集群架构三部曲之MM+keepalived
各位老铁们,老张与大家又见面了.看到各位在博客里面给我的留言和访问量的情况,我很是欣慰,也谢谢大家对我的认可.我写这些博客,就是想把自己对于MySQL数据库的一些看法和自己平时的实战经验分享出来,我们 ...
- nfs mysql_heatbeat-gui实现基于nfs的mysql高可用集群
一.简述HA高可用集群 高可用集群就是当集群中的一个节点发生各种软硬件及人为故障时,集群中的其他节点能够自动接管故障节点的资源并向外提供服务.以实现减少业务中断时间,为用户提供更可靠,更高效的服务. ...
- 双vip的MySQL高可用集群
目录 一.mysql集群的搭建 IP地址规划: 使用ansible给从服务器安装mysql 1.使用master与所有从服务器建立SSH免密通道,然后添加到mysqld组到hosts文件里面 2.使用 ...
- gelera mysql_基于Galera的MySQL高可用集群
MySQL的高可用方案 我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据 ...
最新文章
- CVPR2020:三维实例分割与目标检测
- [转]CentOS 5.5下FTP安装及配置
- 汇总|目标检测中的数据增强、backbone、head、neck、损失函数
- HTML5 音频audio 和视频video实用基础教程
- 从“执行新过程新增5%的工作量”看新过程引入
- Tomcat相关 -- 内存设置
- WIN32:API串口通讯实例教程
- java oracle时间格式转换_oracle时间格式转换问题 ORA-01810: format code appears twice--转...
- 精解闪电网络如何打开BTC支付时代 | 火星总编时刻No.7
- hadoop集群搭建(3)
- 批量解析域名为IP地址的shell脚本和python脚本
- 微信支付记录删除后怎么恢复?赶紧收藏这两个小技巧
- 微信打不开文件怎么办
- 杭电ACM-LCY算法进阶培训班-专题训练(矩阵快速幂)
- 2020-2021年度第2学期课程回顾总结
- C/C++基础 sleep()、usleep()、nanosleep()的用法
- 学生表、班级表、成绩表
- colorkey口红怎么样_colorkey口红推荐什么颜色
- LINE chatbot机器人开发
- EDA 电子设计自动化VHDL系列课程7 – 分频器和计数器