免费做微信小程序,信息流优化师面试常见问题,徐州手机模板建站,青岛助创网络科技有限公司1:什么是MHA#xff1f; MHA#xff08;Master High Availability#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。
MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中#xff0c;MHA能做到0-30秒内自动完成故障切换操作。
MHA能在故障切…1:什么是MHA MHAMaster High Availability是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。
MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中MHA能做到0-30秒内自动完成故障切换操作。
MHA能在故障切换的过程中最大程度上保证数据的一致性以达到真正意义上的高可用。
2:MHA 的组成
MHA由两部分组成:MHAManager (管理节点) MHA Node (数据库节点)
MHA Manager 可以单独部署在一台独立的机器上管理多个master-slave集群也可以部署在一台 slave 节点上。
MHA Manager 会定时探测集群中的 master 节点。
当 master 出现故障时它可以自动将最新数据的 slave 提升为新的 master 然后将所有其他的 slave 重新指向新的 master。
3:MHA 的特点
自动故障切换过程中MHA从宕机的主服务器上保存二进制日志最大程度的保证数据不丢失
使用半同步复制可以大大降低数据丢失的风险如果只有一个slave已经收到了最新的二进制日 志MHA可以将最新的二进制日志应用于其他所有的slave服务器上因此可以保证所有节点的数 据一致性
目前MHA支持一主多从架构最少三台服务即一主两从
4.MHA工作原理
目前MHA主要支持一主多从的架构要搭建MHA,要求一个复制集群必须最少有3台数据库服务器 一主二从即一台充当Master台充当备用Master另一台充当从库。
MHA Node 运行在每台 MySQL 服务器上
MHAManager 会定时探测集群中的master 节点 当master 出现故障时它可以自动将最新数据的slave 提升为新的master
然后将所有其他的slave 重新指向新的masterVIP自动漂移到新的master。
整个故障转移过程对应用程序完全透明。
5.MHA部署实施
5.1:搭建主两从架构
准备虚拟机四台虚拟机172.25.254.10172.25.254.20172.25.254.30172.25.254.50
准备安装包MHA 172.25.254.50上与172.25.254.10,172.25.254.20,172.25.254.30做免密验证
[rootnode4 ~]# ssh-keygen 172.25.254.50上与172.25.254.10做免密验证 [rootnode4 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root172.25.254.10 输入密码172.25.254.10主机解析创建成功 172.25.254.50上与172.25.254.20做免密验证 [rootnode4 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root172.25.254.20 输入密码172.25.254.20主机解析创建成功 172.25.254.50上与172.25.254.30做免密验证 [rootnode4 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root172.25.254.30 输入密码172.25.254.30主机解析创建成功
确定本地解析是否存在 [rootnode4 ~]# vim /etc/hosts 5.2:创建半同步模式
还原102030主机的配置文件信息
172.25.254.10与172.25.254.20和172.25.254.30主机创建半同步模式 [rootnode1 ~]# vim /etc/my.cnf 停止数据库 [rootnode1 ~]# /etc/init.d/mysqld stop 清除mysql数据 [rootnode1 ~]# rm -fr /data/mysql/* 对数据库进行初始化 [rootnode1 ~]# mysqld --usermysql --initialize 启动数据库 [rootnode1 ~]# /etc/init.d/mysqld start 登录数据库输入自己的密码 [rootnode1 ~]# mysql -uroot -pLEfu9_uS*Bh 修改密码lee mysql alter user rootlocalhost identified by lee; 建立同步用户lee mysql CREATE USER repl% IDENTIFIED BY lee; 同意远程授权 mysql GRANT REPLICATION SLAVE ON *.* TO repl%; 开启半同步模式 mysql INSTALL PLUGIN rpl_semi_sync_master SONAME semisync_master.so; 打开半同步功能 mysql SET GLOBAL rpl_semi_sync_master_enabled 1; mysql SHOW MASTER STATUS; mysql SHOW VARIABLES LIKE rpl_semi_sync%; mysql SHOW STATUS LIKE Rpl_semi_sync%; 同理172.25.254.20也进行相应的配置 [rootnode2 ~]# vim /etc/my.cnf 停止数据库 [rootnode2 ~]# /etc/init.d/mysqld stop 清除mysql数据 [rootnode2 ~]# rm -fr /data/mysql/* 对数据库进行初始化 [rootnode2 ~]# mysqld --usermysql --initialize [rootnode2 ~]# /etc/init.d/mysqld start [rootnode2 ~]# mysql -uroot -pkird_l5Pkg#0 修改密码 mysql alter user rootlocalhost identified by lee; mysql CHANGE MASTER TO MASTER_HOST172.25.254.10, MASTER_USERrepl, MASTER_PASSWORDlee, MASTER_AUTO_POSITION1; 开启slave模式 mysql start slave; 加载半同步模块 mysql INSTALL PLUGIN rpl_semi_sync_master SONAME semisync_master.so; 打开半同步功能 mysql SET GLOBAL rpl_semi_sync_master_enabled 1; mysql STOP SLAVE IO_THREAD; mysql START SLAVE IO_THREAD; mysql SHOW STATUS LIKE Rpl_semi_sync%; mysql SHOW SLAVE STATUS\G 172.25.254.20与172.25.254.10主机建立半同步模式成功 172.25.254.30 [rootnode3 ~]# vim /etc/my.cnf 停止数据库 [rootnode2 ~]# /etc/init.d/mysqld stop 清除mysql数据 [rootnode2 ~]# rm -fr /data/mysql/* [rootnode3 ~]# mysql -uroot -p1;o0/rSwpg2L mysql alter user rootlocalhost identified by lee; mysql CHANGE MASTER TO MASTER_HOST172.25.254.10, MASTER_USERrepl, MASTER_PASSWORDlee, MASTER_AUTO_POSITION1; mysql INSTALL PLUGIN rpl_semi_sync_master SONAME semisync_master.so; mysql SET GLOBAL rpl_semi_sync_master_enabled 1; mysql start slave; mysql SHOW SLAVE STATUS\G 172.25.254.30与172.25.254.10建立半同步模式成功 5.3:安装MHA所需要的软件 [rootnode4 ~]# cd MHA-7/ [rootnode4 MHA-7]# yum install *.rpm 在172.25.254.50传递软件包到172.25.254.10172.25.254.20和172.25.254.30主机上 [rootnode4 MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root172.25.254.10:/root [rootnode4 MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root172.25.254.20:/root [rootnode4 MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root172.25.254.30:/root 172.25.254.10172.25.254.20和172.25.254.30主机上对传递的包进行安装 [rootnode1 ~]# yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm [rootnode2 ~]# yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm [rootnode3 ~]# yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm 172.25.254.50上生成配置文件并解压压缩包 [rootnode4 MHA-7]# mkdir /etc/masterha [rootnode4 MHA-7]# tar zxf mha4mysql-manager-0.58.tar.gz 将底下的文件app1.conf进行拷贝 [rootnode4 MHA-7]# cd mha4mysql-manager-0.58/ [rootnode4 mha4mysql-manager-0.58]# ls [rootnode4 mha4mysql-manager-0.58]# cd samples/conf [rootnode4 conf]# cat masterha_default.cnf app1.cnf /etc/masterha/app1.cnf 进入新拷贝的文件中修改配置文件 [rootnode4 conf]# vim /etc/masterha/app1.cnf 由于172.25.254.10172.25.254.20172.25.254.30主机不允许建立远程连接
由于创建主从复制172.25.254.10上建立远程连接就可以全部建立成功 mysql CREATE USER root% identified by lee; mysql grant ALL ON *.* to root%; 在172.25.254.50主机上进行检测将其底下文件传递到1020和30主机上 [rootnode4 ~]# cd .ssh/ [rootnode4 .ssh]# ls [rootnode4 ~]#scp id_rsa root172.25.254.10:/root/.ssh/ [rootnode4 ~]#scp id_rsa root172.25.254.20:/root/.ssh/ [rootnode4 ~]#scp id_rsa root172.25.254.30:/root/.ssh/ 检测网络及SSH免密验证 [rootnode4 ~]# masterha_check_ssh --conf/etc/masterha/app1.cnf 保证了连接完整性
检测数据主从复制情况 [rootnode4 ~]# masterha_check_repl --conf/etc/masterha/app1.cnf 数据主从复制没有问题
至此MHA的部署完成