Mysql高可用架构——MHA

MHA(Master High Availability)什么是数据库的高可用性呢??数据库主机中我们会有做成主从关系的或者其他关系型数据库,如果主挂了,不会影响数据的访问,假如是一主三从架构,主库挂了,但主库能被从库ssh上去的情况下,MHA从三个从库中选择同步最接近的作为新主,然后新主和s2,s3都ssh到原主上通过binlog补上还没有同步的数据,io_thread读取到binlog位置,传到save_binary_logs,然后回放,达到s1,s2,s3和原主一致。

我们就用四台主机来模拟生产环境中的配置。

MHA172.18.254.136
Master172.18.254.175
Slave1172.18.254.176
Slave2172.18.254.103

首先来配置主从关系

在Master上配置

1,安装mariadb并启动服务

[root@localhost张大帅哥 ~]# yum install -y mariadb-server
[root@localhost张大帅哥 ~]# systemctl start mariadb.service

2,配置配置文件

[root@localhost张大帅哥 ~]# vim /etc/my.cnf
    
[mysqld]
server_id=1    #指定为主
datadir=/mariadb/data    #数据文件位置
log_bin=/mariadb/logbin/log_bin    二进制文件位置
innodb_file_per_table
binlog_format=row
skip_name_resolve
socket=/var/lib/mysql/mysql.sock

3,创建数据库文件目录并更改权限

[root@localhost张大帅哥 ~]# mkdir -p /mariadb/{data,logbin}
[root@localhost张大帅哥 ~]# chown mysql.mysql -R /mariadb/

4,重启数据库,并写授权用户

[root@localhost张大帅哥 ~]# systemctl restart mariadb.service 
[root@localhost张大帅哥 ~]# mysqlMariaDB [(none)]> show master status;
+----------------+----------+--------------+------------------+
| File           | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------+----------+--------------+------------------+
| log_bin.000003 |      245 |              |                  |
+----------------+----------+--------------+------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> grant replication slave on *.* to repluser@'172.18.254.%' identified by 'centos';

5,生成秘钥实现免密登录

[root@localhost张大帅哥 ~]# cd .ssh/
[root@localhost张大帅哥 .ssh]# ssh-keygen
[root@localhost张大帅哥 .ssh]# ssh-copy-id -i id_rsa.pub root@172.18.254.136:/root/.ssh/
[root@localhost张大帅哥 .ssh]# ssh-copy-id -i id_rsa.pub root@172.18.254.176:/root/.ssh/
[root@localhost张大帅哥 .ssh]# ssh-copy-id -i id_rsa.pub root@172.18.254.103:/root/.ssh/

6,关闭ssh连接时的应答

[root@localhost张大帅哥 ~]# vim /etc/ssh/ssh_config 
   StrictHostKeyChecking no

7,关闭防火墙和selinux

[root@localhost张大帅哥 ~]# systemctl stop firewalld.service 
[root@localhost张大帅哥 ~]# setenforce 0

在Slave1上配置

1,同上第一步,安装启动数据库

2,编辑配置文件

[root@localhost张大帅哥 ~]# vim /etc/my.cnf
[mysqld]
server_id=2
datadir=/mariadb/data
log_bin=/mariadb/logbin/log_bin
read_only=1
socket=/var/lib/mysql/mysql.sock
relay_log_purge=0
skip_name_resolve=1

3,同上第三步,创建目录并更改权限

4,重启数据库,指定自己的主(那一长串可用help change master to来查看然后复制出来修改)

[root@localhost张大帅哥 ~]# systemctl restart mariadb.service
[root@localhost张大帅哥 ~]# mysql

MariaDB [(none)]> CHANGE MASTER TO   MASTER_HOST='172.18.254.175',   MASTER_USER='repluser',   MASTER_PASSWORD='centos',   MASTER_PORT=3306,   MASTER_LOG_FILE='log_bin.000003',   MASTER_LOG_POS=245,   MASTER_CONNECT_RETRY=10;

MariaDB [(none)]> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

5,同上面第5步,生成密钥并拷给另外三台机器

6,同上面第6步,关闭连接时的应答

7,也同上

在Slave2上配置

跟在Slave1上的配置一摸一样,在这里不再重写一遍

在MHA上配置

1,配置数据库,不过配置文件不用指定主从

配置文件

[root@localhost张大帅哥 ~]# vim /etc/my.cnf

[mysqld]
datadir=/mariadb/data
log_bin=/mariadb/logbin/log_bin
innodb_file_per_table
socket=/var/lib/mysql/mysql.sock

2,创建MHA管理账号,连接数据库,之后创建用户

MariaDB [(none)]> grant all on *.* to mhauser@'172.18.254.%' identified by 'centos';

3,安装MHA管理节点包,和MHA节点(上面三台机器需要安装MHA节点包)

MHA节点管理包    mha4mysql-manager-0.56-0.el6.noarch.rpm

节点包  mha4mysql-node-0.56-0.el6.noarch.rpm

可百度下载最新版。

4,创建目录并编辑管理端配置文件

[root@localhost张大帅哥 ~]# mkdir /etc/mha/
[root@localhost张大帅哥 ~]# vim /etc/mha/app1.conf 

[server default]
user=mhauser
password=centos
manager_workdir=/data/mastermha/app1/
manager_log=/data/mastermha/app1/manager.log
master_binlog_dir=/mariadb/logbin
remote_workdir=/data/mastermha/app1/
ssh_user=root
repl_user=repluser
repl_password=centos
ping_interval=1

[server1]
hostname=172.18.254.175
candidate_master=1
[server2]
hostname=172.18.254.176
candidate_master=1
[server3]
hostname=172.18.254.103

5,验证SSH连接及MHA管理

[root@localhost张大帅哥 ~]# masterha_check_ssh --conf=/etc/mha/app1.conf
[root@localhost张大帅哥 ~]# masterha_check_repl --conf=/etc/mha/app1.conf

可能会出现错误

解决:在Master上创建mhauser用户

6,运行MHA

[root@localhost张大帅哥 ~]#  nohup masterha_manager --conf=/etc/mha/app1.conf > mharun.log &

测试

模拟故障:直接停掉主Master的mysql服务,可看到主的切换。

模拟修复故障:启动主的mysql服务

这时候主什么也不算,不算主也不算从,也就是不在这个集群中了,我们可以

[root@localhost张大帅哥 ~]# vim /etc/my.cnf
#增加以下两行
read_only=ON
relay_log_purge=0
[root@localhost张大帅哥 ~]# systemctl restart mariadb.service

把Master作为从再次加入到集群中

[root@localhost张大帅哥 ~]# systemctl restart mariadb.service

Master [(none)]> CHANGE MASTER TO
    ->   MASTER_HOST='172.18.254.176',
    ->   MASTER_USER='repluser',
    ->   MASTER_PASSWORD='centos',
    ->   MASTER_PORT=3306,
    ->   MASTER_LOG_FILE='bin_log.000003',
    ->   MASTER_LOG_POS=245,
    ->   MASTER_CONNECT_RETRY=10;
Query OK, 0 rows affected (0.05 sec)

Master [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)

至此,模拟完成

注:这些机器的时间必须一致,可以安装ntp-server和ntpclient来使时间一致

内容概要:本文系统梳理了2025年数学前沿领域的研究动态与发展趋势,涵盖代数几何、数论、微分几何、拓扑学、偏微分方程、数学物理等多个核心方向,并介绍了当前国际数学研究的三大主流趋势:代数几何与数论、分析与偏微分方程、几何拓扑与表示论。文中重点报道了青年数学家王虹成功证明三维挂谷猜想的重大突破,以及韦东奕在偏微分方程与几何分析方面的研究成果,展现了中国数学界的崛起态势。同时,文档还涉及数学基础研究、应用数学、数学教育、期刊评价体系及国际数学强国格局等内容,引用大量视频、文章和权威资源,呈现数学学科的全貌与发展前景。; 适合人群:具备一定数学基础的本科生、研究生及科研工作者,关注数学前沿发展的教师、科技爱好者以及从事人工智能、物理、工程等相关领域并需数学支撑的专业人士。; 使用场景及目标:①了解2025年数学领域的重要突破与研究热点,如挂谷猜想的证明、朗兰兹纲领、拓扑数据分析等;②把握数学各分支的前沿方向与交叉应用,服务于科研选题、学术规划或跨学科研究;③获取权威学习资源与经典文献推荐,辅助数学学习与教学实践。; 阅读建议:此文档为信息聚合型资料,建议结合所列视频、书籍和论文深入拓展学习,重点关注核心突破案例(如王虹、韦东奕)与主流研究方向的演进脉络,宜以批判性思维梳理知识体系,避免碎片化阅读。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值