linux MHA 高可用集群

目录

概念

MHA高可用数据集群原理

高可用集群配置

免密登录


概念


高可用集群MHA

MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

MHA高可用数据集群原理


MHA(Master High Availability)是一个开源的MySQL高可用性解决方案,它可以自动监控MySQL主从复制的状态,并在主服务器出现故障时自动将从服务器提升为新的主服务器,从而实现MySQL的高可用性。

MHA的工作原理如下:

1. MHA会在主服务器和从服务器上安装一个agent,用于监控MySQL的状态。

2. 当主服务器出现故障时,MHA的监控agent会检测到主服务器的故障,并将从服务器提升为新的主服务器。

3. 在提升从服务器为新的主服务器之前,MHA会自动将从服务器上的MySQL数据与主服务器上的数据同步,以确保数据的一致性。

4. 当新的主服务器上线后,MHA会自动将其他从服务器切换到新的主服务器上,从而实现MySQL的高可用性。

总之,MHA通过自动监控MySQL主从复制的状态,并在主服务器出现故障时自动切换到新的主服务器,从而实现MySQL的高可用性。

高可用集群配置


首先为了更好的识别

命令行修改用户名:

hostnamectl set-hostname node1

bash:刷新主机名

管理器    :【manager】                            

主服务器 :【master】                   

从服务器 :【slave1】           

从服务器 :【slave1】      

免密登录


在四台服务器里使用vim打开/etc/hosts写入管理器、主服务器、从服务器ip加主机名

这样使用 ssh 登录时可以直接使用主机名进行登录

比如:ssh node1

192.168.1.126 node1
192.168.1.125 node2
192.168.1.106 node3
192.168.1.105 node4

 

 

四台虚拟机都要生成密钥

 ssh-keygen -t rsa

 ssh-keygen -t rsa

免密配置 复制密钥

【四台服务器都要指定node1】

ssh-copy-id -i .ssh/id_rsa.pub root@node1

ssh-copy-id -i .ssh/id_rsa.pub root@node1

在node1里将authorized_keysau文件发送给node2/3/4

【实现免密登录】

【注意!!!node1、2、3、4 都要互相验证免密登录】

scp .ssh/authorized_keys root@node2:.ssh

ssh node2 登录测试一下

scp .ssh/authorized_keys root@node3:.ssh

ssh node3 登录测试一下

scp .ssh/authorized_keys root@node4:.ssh

ssh node4 登录测试一下

打开node2【主服务器】

在node2里下载 epel-release源

 yum -y install epel-release

【要把yum里的CentOS-Base.repo源拿出来之后再安装】

把准备好的MySQL源码包拉倒系统

输入命令安装:

yum -y install mariadb mariadb-server

进入到目录找到这个包并安装:

rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

vim打开MySQL配置文件

写入

server-id = 1 【指定MySQL服务器的唯一标识符,用于主从复制中区分不同的服务器】

log-bin = master-log 【启用二进制日志,用于主从复制中记录所有的数据库更新操作】

relay-log = relay-log 【指定中继日志的名称,用于主从复制中从服务器接收主服务器的更新操                                          作】

skip_name_resolve 【禁用DNS解析,可以提高MySQL服务器的性能】

【总的来说,这些配置参数是用于设置MySQL主从复制的,其中`server-id`、`log-bin`和`relay-log`是必须的参数,而`skip_name_resolve`是可选的,用于提高性能】

要写到 [MySQL] 下

【写完配置之后 保存退出 然后输入:systemctl restart mariadb 表示重启mysql】

登录到MySQL输入:

grant replication slave on *.* to ‘slave’@'%' identified by '123'; 

【授权用户给从库使用】

【意思是授予一个名为 "slave" 的用户在所有数据库和所有表上作为从服务器进行复制的权限,并设置密码为 "123"。其中 "%" 表示该用户可以从任何主机连接到 MySQL 服务器。】

 grant all on *.* to ‘mha’@'%' identified by '123';

【授权用户给manager管理master使用】

【意思是授予用户mha在所有数据库中的所有表的所有权限,并设置密码为123。%表示可以从任何IP地址连接到MySQL服务器】

输入命令:

 show master status;

【查看当前数据库的主服务器状态】

进入node3【从服务器】

把准备好的源码包拖到node3

输入命令:安装mariadb

 yum -y install mariadb mariadb-server epel-release

【MariaDB是一个开源的关系型数据库管理系统,类似于MySQL】

输入命令安装:

 rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

然后vim进入MySQL主配置文件

vim /etc/my.cnf

写入:

server-id = 2 【表示服务器的唯一标识】                 

relay-log = relay-log【分别表示中继日志和二进制日志的文件名】         

log-bin = master-log【分别表示中继日志和二进制日志的文件名】         

read_only = ON【表示从服务器是否只读】               

relay_log_purge = 0【表示是否自动清理中继日志】           

skip_name_resolve【表示是否跳过 DNS 解析】               

log_slave_updates = 1【表示是否记录从服务器上执行的更新操作】

【保存退出 并重启MySQL】.

输入重启命令:systemctl restart mariadb

要写到 [MySQL] 下

回到node2【主服务器】输入 show master status;查看数据库状态

打开node3【从服务器1】

登录到MySQL

输入:指定服务器【stop slave; 要前关闭服务之后再去指定】

change master to master_host='192.168.1.125',master_user='slave',master_password='123',master_log_file='master-log.000003',master_log_pos=517;

【- `master_host`: 指定主数据库的IP地址或主机名。】

【- `master_user`: 指定用于复制的用户名。】

【- `master_password`: 指定用于复制的密码。】

【- `master_log_file`: 指定主数据库的二进制日志文件名。】

【- `master_log_pos`: 指定从哪个位置开始复制主数据库的二进制日志。】

 指定完主服务器后 再开启服务

 start slave;

【用于启动一个从服务器(slave)与主服务器(master)进行数据同步】

 show slave status \G;

【用于查看当前数据库实例中的复制从服务器的状态。其中 "\G" 是将结果以更易读的格式输出,每个属性占一行,方便查看。该命令可以用于检查主从复制是否正常工作,以及查看从服务器的延迟情况等】

grant all on *.* to ‘slave’@'%' identified by '123';

【授权用户给manager管理slave使用】

【意思是授予用户 "slave" 在任何主机上对所有数据库、所有表的所有权限,并设置密码为 "123"。% 表示任何主机都可以连接该数据库】

进入node4【从服务器2】

将准备好的源码包拖进node4

输入命令安装:

 rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

输入命令:安装mariadb

 yum -y install mariadb mariadb-server epel-release

【MariaDB是一个开源的关系型数据库管理系统,类似于MySQL】

vim打开MySQL配置文件

vim /etc/my.cnf

写入:

server-id = 3【设置MySQL服务器的唯一标识符为3,用于主从复制中区分不同的服务器】           

relay-log = relay-log【设置中继日志的存储位置和文件名前缀】         

log-bin = master-log【启用二进制日志,用于记录所有修改数据库的操作,以便进行主从复制和                                      数据恢复】         

read_only = ON【设置MySQL服务器为只读模式,禁止对数据库进行写操作】               

relay_log_purge = 0【禁用中继日志自动清理功能,需要手动清理】           

skip_name_resolve【禁用DNS反解析,加快连接速度】               

log_slave_updates = 1【设置从服务器将接收到的修改操作也记录到自己的二进制日志中,以便                                           进行级联复制】

然后保存退出并重启MySQL

systemctl restart mariadb

 要写到 [MySQL] 下

登录到MySQL

输入:指定主服务器【指定前要关闭服务 stop slave;】

change master tomaster_host='192.168.1.125',master_user='slave',master_password='123',master_log_file='master-log.000003',master_log_pos=529;

指定完后再开启服务

start slave;

【用于启动一个从服务器(slave)与主服务器(master)进行数据同步】

show slave status \G;

【用于查看当前数据库实例中的复制从服务器的状态。其中 "\G" 是将结果以更易读的格式输出,每个属性占一行,方便查看。该命令可以用于检查主从复制是否正常工作,以及查看从服务器的延迟情况等】

grant all on *.* to ‘slave’@'%' identified by '123';

【授权用户给manager管理slave使用】

【意思是授予用户 "slave" 在任何主机上对所有数据库、所有表的所有权限,并设置密码为 "123"。% 表示任何主机都可以连接该数据库】

回到node1【管理器】

把准备的源码包拉进管理器

分别输入命令:安装MySQL

yum -y install mariadb mariadb-server epel-release

yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm mha4mysql-manager-0.56-0.el6.noarch.rpm

创建 mkdir /etc/mha_master

vim进入 /etc/mha_master/mha.cnf

写入:

[server default]

user=mha

password=123

manager_workdir=/etc/mha_master/app1

manager_log=/etc/mha_master/manager.log

remote_workdir=/mydata/mha_master/app1

ssh_user=root

repl_user=slave

repl_password=123

ping_interval=1

[server1]

hostname=192.168.174.125【主ip】

ssh_port=22

candidate_master=1

[server2]

hostname=192.168.174.106【第一个从ip】

ssh_port=22

candidate_master=1

[server3]

hostname=192.168.174.105【第二个从ip】

ssh_port=22

candidate_master=1

写完之后保存退出

输入:

masterha_check_ssh --conf=/etc/mha_master/mha.cnf

显示一下画面表示检测成功

再输入:检测MySQL复制集群是否OK

 masterha_check_repl --conf=/etc/mha_master/mha.cnf

如果最后一步出现报错!!!

可以输入命令:

grant all on *.* to ‘slave’@'%' identified by '123';

给主服务器、从服务器再次设置用户权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值