问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

服务器集群的创建群集

发布网友 发布时间:2022-04-24 21:01

我来回答

2个回答

懂视网 时间:2022-05-03 01:36

介绍

1.概念:MHA master high availability,由日本DeNA公司开发,解决mysql故障切换可以做到0-30秒,而且在故障切换过程中,能最大限度保障数据的一致性,实现真正的高可用.

2.组成:管理节点(MHA manager),管理所有数据库服务器,可以部署于一台独立的主机,也可以与某台数据库服务器共用一台主机;数据节点(MHA node),运行在每台存储数据的服务器上.

3.原理:由manager探测集群中的master节点; 当master故障时,manager自动将拥有最新数据的从库提升为新的master.

技术图片

二,搭建MHA群集

1.拓扑图

技术图片

2.部署环境

- 准备3台数据库服务器4.51,4.52,4.53,配置为一主多从结构(4.51为主库,4.52和4.53为从库),并且相互之间可以用root无密码登录.

-实现无密码登录的方式:(3台服务器上都需要重复4.51的动作)

 例,在主机4.51上操作:#ssh-keygen -f /root/.ssh_rsa -N ‘’   //生成秘钥

                      #for i in 51 52 53   //拷贝秘钥到其它主机

                      do

                          ssh-copy-id root@192.168.4.$i

                      done

- 准备2台虚拟机:主机4.57做管理节点manager,主机4.50做客户端client.

- 在主机4.50,4.51,4.52,4.53,4.57上安装系统自带的软件perl-*

- 管理节点4.57可以用root用户无密码登录3台数据库服务器4.51,4.52,4.53.

- 所有主机安装共享的perl软件包(从真机上scp文件夹mha-soft-student->cd进入文件夹->yum安装perl-* )

- rpm -qa|grep perl|wc -l //查看安装的perl软件包数量是否为382个

3.安装管理节点的软件

#cd mha-soft-student/  进入文件夹

cd mha-soft-student]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm //安装连接服务器节点的软件

# tar -xvf mha4mysql-manager-0.56.tar.gz      //解压管理软件包

# cd mha4mysql-manager-0.56                //进入文件夹

mha4mysql-manager-0.56]# perl Makefile.PL  //指定目标文件,检查安装环境

mha4mysql-manager-0.56]# make           //编译源码

mha4mysql-manager-0.56]# make install    //编译并安装

#ls /root/perl5/bin/masterha_*              //查看安装的管理集群的命令

4.编写主配置文件app1.cnf

# mkdir /etc/mha  //创建新目录,以存储配置文件(不在系统默认配置文件的目录下操作)

#cd mha-soft-student   //进入文件夹

mha-soft-student]# cp mha4mysql-manager-0.56/samples/conf/app1.cnf  /etc/mha/                     //将系统配置文件拷贝到新建目录/etc/mha

mha-soft-student]# vim /etc/mha/app1.cnf  //编辑配置文件

[server default]               //管理服务器的默认配置

manager_workdir=/etc/mha         //工作目录

manager_log=/etc/mha/manager.log        //工作日志

master_ip_failover_script=/etc/mha/master_ip_failover   //故障切换脚本

ssh_user=root               //访问ssh服务的用户

ssh_port=22                 //ssh服务端口

repl_user=repluser           //主库同步到从库的授权用户

repl_password=123qqq...A   //主库同步到从库的授权密码

user=root                    //manager登录数据库服务器使用的用户

password=123qqq...A        //manager登录数据库服务器使用的密码

[server1]                   //指定第1台数据库服务器

hostname=192.168.4.51   //数据库服务器IP地址

port=3306                 //服务端口

candidate_master=1       //竞选主机,当主库故障时,其它的从库参入新主库的竞选

[server2]                  //指定第2台数据库服务器

hostname=192.168.4.52  //数据库服务器IP地址

port=3306                //服务端口

candidate_master=1

[server3]                  //指定第3台数据库服务器

hostname=192.168.4.53  //数据库服务器IP地址

port=3306                //服务端口

candidate_master=1      //竞选主机,当主库故障时,其它的从库参入新主库的竞选

5.在管理节点4.57上创建故障切换脚本master_ip_failover

#vim/root/mha-soft-student/mha4mysql-manager-0.56/samples/scripts/master_ip_failover

添加如下内容:

my $vip = ‘192.168.4.100/24‘;  #定义VIP 

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

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

my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";  //释放VIP地址   

# chmod +x /etc/mha/master_ip_failover   //赋予权限

6.在主库4.51上部署vip

# ifconfig eth0:1 192.168.4.100    //设置VIP

# ifconfig eth0:1     //查看VIP,谁是主库,谁就拥有VIP

client ~]# ping -c2 192.168.4.100  //客户端ping一下连接状态

7.在从库4.52,4.53上配置数据节点

[root@db51 mha-soft-student]# for i in 51 52 53  //安装连接节点的软件

 > do

>ssh 192.168.4.$i "yum -y install /root/mha-soft-student/mha4mysql-node-0.56-0.el6.noarch.rpm"

> done

mysql> grant replication slave on *.* to repluser@"%" identified by "123qqq...A";  //在从库4.52,4.53上授权用户repluser及密码

mysql> grant all on *.* to root@"%" identified by "123qqq...A"; //在3台数据库4.57上授权管理节点监控数据库时使用的连接用户及密码

8.主库加载master,slave模块

[mysqld]

log-bin=db51    //启用log-bin日志

server_id=51

plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"  //加载模块

rpl_semi_sync_master_enabled=1  //启用master模块

rpl_semi_sync_slave_enabled=1    //启用slave模块

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

#systemctl restart mysqld   //重启,加载配置

9.从库4.52加载master,slave模块

[mysqld]

server_id=52

log-bin=master52    //启用log-bin日志

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

plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"   //加载模块

rpl_semi_sync_master_enabled=1    //启用master模块

rpl_semi_sync_slave_enabled=1     //启用slave模块

#systemctl restart mysqld    //重启,加载配置

10.从库4.53加载master,slave模块

[mysqld]

server_id=53

log_bin=master53    //启用log-bin日志

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

plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"   //加载模块

rpl_semi_sync_master_enabled=1   //启用master模块

rpl_semi_sync_slave_enabled=1    //启用slave模块

#systemctl restart mysqld

11.测试一下数据库主从是否同步

mysql-uroot -p123qqq...A -e ‘insert into db1.t1 values(6,”wangwu”,30)’ //在主库4.51上插入数据

[root@db51 ~]# for i in 52 53   //查看从库是否同步数据

> do

> ssh root@192.168.4.$i ‘mysql -uroot -p123qqq...A -e "select * from db1.t1"‘

> done

三,测试MHA群集

1.在管理节点上测试ssh配置

[root@db57 ~]# masterha_check_ssh --conf=/etc/mha/app1.cnf

Thu Jun 20 15:30:08 2019 - [info] All SSH connection tests passed successfully.

2.在管理节点上测试主从同步

[root@db57 ~]# masterha_check_repl --conf=/etc/mha/app1.cnf

MySQL Replication Health is OK

3.启动masterha_manager服务

[root@db57 ~]# masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf  --ignore_last_failover

--remove_dead_master_conf //主库故障时,删除管理节点配置文件中的server主机

--ignore_last_failover //软件默认故障发生时,有一个切换时间.加载该选项可以实现时间点无缝切换.

4.在主库4.51添加访问数据的连接用户及密码,并同步到4.52和4.53

mysql> create database db9;

mysql> create table db9.a(id int,name char(10));

mysql> grant select,insert on db9.* to yaya55@"%" identified by ‘123qqq...A‘;

# mysql -uroot -p123qqq...A -e ‘select host,user from mysql.user where user="yaya55";‘  //分别在4.52和4.53查看授权的用户yaya55

5.客户端登录插入数据

[root@client ~]# mysql -h192.168.4.100 -uroot -p123qqq...A

mysql> insert into db9.a values(1,"lisi");

mysql> insert into db9.a values(2,"wangwu");

mysql> select * from db9.a;

+------+--------+

| id   | name   |

+------+--------+

|    1 | lisi   |

|    2 | wangwu |

+------+--------+

2 rows in set (0.00 sec)

# mysql -uroot -p123qqq...A -e ‘select * from db9.a’ //分别在4.52和4.53上查看插入的数据

6.测试高可用

思路:停止4.51的mysql服务->管理节点4.57会监控到master4.51发生故障,并停止监控服务,触发故障脚本master_ip_failover在2台从库中竞选出新的master主机,数据库服务不会停止->客户端连接到vip,依然可以访问数据库,做读写操作.

6.1停止主库4.51的mysql服务

[root@db51 ~]# systemctl stop mysqld

6.2客户端再次登录vip

[root@client ~]# mysql -h192.168.4.100 -uroot -p123qqq...A

6.3插入数据,并查看

mysql> insert into db9.a values(3,"jack");

mysql> select * from db9.a;  //在主机4.52和4.53上查看插入的数据

6.4 配置文件/etc /mha/aqq1.cnf中的[server1]容器被删除,即主机4.51被踢出了服务序列,具体见下图:

技术图片

7.将down机的4.51重新添加入集群服务序列

7.1启动数据库4.51

#systemctl start mysqld

7.2把4.51配置为当前集群的从服务器

7.2.1把新主库4.52的数据备份,并在4.51上恢复,以确保与主服务器数据保持一致.

[root@db52 ~]# mysqldump -uroot -p123qqq...A --master-data db9 > db9.sql //主库备份数据

[root@db52 ~]# scp db9.sql root@192.168.4.51:/root/  //上传数据给4.51

[root@db51 ~]# mysql -uroot -p123qqq...A db9 < /root/db9.sql  //在主机4.51上恢复数据

7.2.2定义从库信息,启动slave进程,查看状态

mysql> change master to

  ->master_host="192.168.4.52",master_user="repluser",master_password="123qqq...A",

-> master_log_file="master52.000002",master_log_pos=154;

//定义从库信息

mysql> start slave;  

[root@db51 ~]# mysql -uroot -p123qqq...A -e "show slave statusG"|head -13

//查看已经定义的从库信息

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.4.52

                  Master_User: repluser

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: master52.000002

          Read_Master_Log_Pos: 154

               Relay_Log_File: db51-relay-bin.000002

                Relay_Log_Pos: 319

        Relay_Master_Log_File: master52.000002

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

7.3 将主机4.51添加到集群配置文件中

7.3.1停止管理节点4.57的监控服务

[root@db57 ~]# masterha_stop --conf=/etc/mha/app1.cnf

7.3.2添加主机4.51的server到集群配置文件/etc/mha/app1.cnf

[server1]

candidate_master=1

hostname=192.168.4.51

port=3306

7.3.3管理节点做启动前的ssh和repl检测

[root@db57 ~]# masterha_check_ssh --conf=/etc/mha/app1.cnf

[info] All SSH connection tests passed successfully.

[root@db57 ~]# masterha_check_repl --conf=/etc/mha/app1.cnf

MySQL Replication Health is OK.

7.3.4启动管理节点,监控数据库服务器

[root@db57 ~]# masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover

[root@db57 ~]# masterha_check_status --conf=/etc/mha/app1.cnf

app1 (pid:1991) is running(0:PING_OK), master:192.168.4.52

四,总结

必须配置实现ssh无密码登录(数据库服务器之间,管理节点与数据库服务器之间)

必须配置主从同步结构

必须设置VIP地址

down机的服务器需要人为配置为集群从服务器,才能重新添加到集群服务序列.

down机的服务器不能自动同步down机期间的数据(缺点)

在主从同步结构中,没有从服务器时,不能实现故障切换.

 结束.

 

数据库_MHA群集搭建

标签:虚拟   删除   ***   系统配置   读写   状态   绑定   拷贝   top   

热心网友 时间:2022-05-02 22:44

在服务器群集产品中含有用来在服务器上安装群集软件和创建新群集的群集安装实用工具。创建新群集时,首先在选择作为群集的第一个成员的计算机上运行该实用工具。第一步是确定群集名称并创建群集数据库和初始的群集成员列表来定义新群集。 Windows server 2003 群集新增了一个群集管理设置向导以及使用 cluster.exe命令行界面创建( 包括从远程创建 )群集的功能。
创建群集的第二步是,添加可供所有群集成员使用的共用数据存储设备。这样,创建的新群集将带有一个节点、自己的本地数据存储设备以及群集共用资源 —— 通常是磁盘或数据存储和连接介质资源。
创建群集的最后一步是,在另外将要成为群集成员的每一台计算机上运行安装实用工具。每当将新节点添加到群集中时,新节点都会自动从群集的原始成员获得现有群集数据库的副本。当节点加入或形成群集时,群集服务会更新该节点私有的配置数据库副本。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
黄山区中通快递派件时间 今天早上五点的中通快递从合肥中转部运往黄山市最快什么时候到达目的地... 从郑州往安徽黄山要寄一件衣服,用什么方式好呢?还有就是如果用快递的... 从徐州出发2天一夜自驾游哪里好_徐州周边2日自驾游!合适的推荐下_百度... 喝茶时加糖有助缓解工作压力 喝茶 可以放糖吗? 喝茶时到底能不能在茶里面加“糖”? 喝茶加糖不营养?茶应该这么喝 solidworks flow simulation 问题,请各位大侠解答,谢谢! 三十首正能量歌曲有哪些 天津雕塑厂都有那些? server cluster是什么 服务器集群的集群技术的分类 天津意韵合泰雕塑设计有限公司怎么样? 中雕(天津)雕塑有限公司怎么样? 天津哪里有做真人雕塑的,就像春晚冯巩小品里的那种 天津雕塑厂哪家好 [求助]如何更换群集服务器Cluster IP地址? windows群集(cluster)和网络负载均衡(NLB)各自的特点及用处是什么? m8000服务器 domain之间怎么做cluster 如何区别node,cluster,subsystem,Lpar这几个概念? 相机滤镜直径和焦段什么样的好? Cluster的功能是什么 相机滤镜有哪些,其作用是什么? 手机照相滤镜有什么作用 摄影常用滤镜有哪些 拍照怎么用滤镜 斯马特生化盘为什么高度不一致 浙江大学分析仪器研究中心隶属哪个系 苏州同芯微流控技术有限公司怎么样? 天津中天雕塑景观工程有限公司怎么样? 什么是集群? 如果使用磁盘阵列实现服务器双机热备,服务器应该配置几块网卡? 集群服务器的介绍 服务器集群,负载均衡,分布式等问题 计算机集群 专家进 单眼皮的女生是否输在了颜值的起跑线上? 单眼皮女生用什么方法才能让眼睛超有神? 很多单眼皮的女生都要割双眼皮,难道单眼皮不好看吗? 为什么我觉得单眼皮女生好清纯 单眼皮女生怎么打扮才能让自己的眼睛看起来比较大? 单眼皮的女生应不应该做双眼皮? 单眼皮的眼妆痛处大概只有单眼皮女生才懂,有哪些是单眼皮专属眼妆? 单眼皮女孩,是不是所有单眼皮割成双眼皮都会好看? 怎样能让单眼皮女生眼睛显得大一些! 赞美诗这里没有疲惫原唱 求一首泰语歌曲的歌词 《真的不知道》 我想要《这里的黎明静悄悄》里面所有的歌曲 兄弟你的家就在这里 这首歌叫什么名字 谢谢 这首是什么歌啊?