如何搭建基于kubernates 权威指南的Mysql多主机群

工作日志(6)
1、Persona XtraDB Cluster介绍:
&&&&&& Persona XtraDB Cluster集群是由HPE公司提出的基于Mysql的多主数据库集群,该集群主要是通过容器的方式实现Mysql集群的部署,并且能够依托Kubernates实现对集群节点的管理。
(1)集群的主要特点
&&&&&& &Persona XtraDB Cluster集群的特点实现的是多主服务器协同工作,能够实现多节点共享和单独提供服务的能力。从而减少了因为master节点宕机造成的数据库运行效率低下或者无法提供服务的问题。根据官方资料,其拓扑结构及其特点如下图所示:
&&& 依据上图中的拓扑结构和特点,Percona XtraDB Cluster与原有的数据库相比,也存在比较大的优缺点:
2、PXC的部署过程
&&&&&& ①创建Cluster服务
&&&&&& 由于PXC(Percona XtraDB Cluster)主要是基于Kubernates进行部署,因此需要在Kubernates环境下创建相应的服务和Pod。当然基于k8s创建服务和Pod等主要是在k8s集群的master节点中完成。首先需要为PXC创建统一的集群服务。在此之前需要下载PXC的镜像,并且部署到自己的镜像服务器上,我们这边采用的私有服务器地址是:10.1.24.90:5000,这个地址在后续创建服务中会用到。我们创建配置脚本文件为:pxc-cluster-service.yaml
。其具体的脚本文件如下图所示:
如上图所示,我们在k8s中创建了一个名称叫做pxc-cluster的服务,端口号是3306
通过如下命令,执行上述脚本:
$ Kubectl create -f ./pxc-cluster-service.yaml
执行上述脚本以后,提示创建服务成功。通过如下命令,可以查看系统中是否已经启动了相关的服务
$ kubectl get svc --all-namespaces
通过上述命令以后,我们可以查看到如下状态:
如上图所示,我们发现刚才创建的cluster服务已经启动。
②创建Cluster的node1节点
&&&&&&&在Kubernates系统中创建完成pxc-cluster服务以后,我们就开始着手创建集群的每个节点了。当然在k8s中创建的服务,自然是通过pod方式实现。因此每次添加新的节点都是通过配置脚本的方式来创建的,并且需要为每一个节点起一个名称。
&&&&&& 特别需要注意的是,创建节点的时候Service和RC需要同时创建,如果仅有Service而无Endpoint的话,后续的SSL过程会失败,那么创建的节点也会自动停止,导致创建的pod停止,会被RC不断的重启。
&&&&&& 因此在创建配置脚本过程中,需要创建两个部分:Service和RC,具体的源代码如下所示:
Service部分:
apiVersion: v1
kind: Service
name: pxc-node1
node: pxc-node1
- port: 3306
name: mysql
- port: 4444
name: state-snapshot-transfer
- port: 4567
name: replication-traffic
- port: 4568
name: incremental-state-transfer
node: pxc-node1
上述部分是配置脚本的Service部分,在k8s集群中创建了一个pxc的节点服务,名称为pxc-node1,端口和pxc-cluster服务统一为3306,数据库名称为mysql,并且创建了另外三个端口:stat-snapshot-transfer(4444)、replication-traffic(4567)、incremental-stat-transfer(4568)
apiVersion: v1
kind: ReplicationController
name: pxc-node1
replicas: 1
node: pxc-node1
unit: pxc-cluster
containers:
- resources:
image: 10.1.24.90:5000/percona_xtradb_cluster_5_6
name: pxc-node1
- containerPort: 3306
- containerPort: 4444
- containerPort: 4567
- containerPort: 4568
- name: GALERA_CLUSTER
value: &true&
- name: WSREP_CLUSTER_ADDRESS
value: gcomm://
- name: WSREP_SST_USER
value: sst
- name: WSREP_SST_PASSWORD
value: sst
- name: MYSQL_ROOT_PASSWORD
value: root
上述部分是配置脚本的RC部分,在k8s中创建了一个pxc-node的RC,其中副本数为1,可以根据需求修改为其他数字。RC的名称同样是pxc-node1,说明此节点的副本是1个。并且创建Pod所需要的镜像,正如从之前上传的私库镜像服务器上下载镜像文件。而所创建的pod在配置脚本中归属的单元为pxc-cluster集群中。而在创建的环境中也同时创建的mysql的环境变量,包括:root用户和密码,SST用户和密码等等。
&&&& 执行如下命令,创建node1的pod:
$ kubectl create -f ./pxc-node1.yaml
执行上述命令以后,执行如下命令,可以查看创建的pod是否启动:
$ kubectl get pods
通过上图,我们发现在k8s系统中,我们启动的pod有我们刚刚创建好的pod。说明节点创建成功。
通过上述方法,我们可以成功创建node1,node2,node3等等,当然需要修改配置文件的名称以及相关service和RC的名称。
通过这种方法可以组建一个基于Kubernates的mysql集群。
3、验证mysql部署情况
执行如下命令,连接PXC数据库集群。
$ kubectl exec -ti &POD-ID& --mysql-u root -proot -h pxc-cluster
其中POD-ID就是上述查询到的POD的名称。比如本文创建的POD节点有四个,分别是:
pxc-node1-rkwj8pxc-node2-a6uswpxc-node3-oky8epxc-node4-6q6bz
那么选择其中一个pod都可以。
执行上述命令以后,其结果如下图所示:
说明已经成功连接到mysql数据库中。
执行如下脚本,具体查看一下集群的节点数有几个:
$ mysql& show status like 'wsrep_cluster_size';
执行上述命令后,可以查看到如下图所示:
如上图所示,具体的集群的节点数有4个,这跟我们之前创建的4个节点吻合。说明我们创建的四个节点成功。
如果删除其中一个节点pod,k8s系统都会自动拉起一个节点。但是重新查看mysql中的节点数状态会发现,新拉起的节点并不能够识别。需要将其他创建的节点都删掉重新创建才能正常识别。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:20503次
排名:千里之外
原创:11篇
转载:27篇
(2)(3)(2)(2)(12)(5)(6)(2)(4)MYSQL集群搭建指引文档_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
MYSQL集群搭建指引文档
|0|0|文档简介
软件工程师|
总评分4.3|
浏览量5433
&&MYSQL集群搭建指引文档
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢如何搭建基于Kubernates的Mysql主从集群
1、Mysql主从模式介绍
Mysql主从模式是基于Mysql集群的分布式部署来实现的,其中在集群中,Master节点主要负责数据的分发和slave节点的管理。因此Master节点主要负责数据的写入和分发。而slave节点主要负责数据的读取。基本的master和slave的分工作业,如下图所示:
在主从模式下的Mysql数据复制实现的一台服务充当主服务器,其他一台或者多台服务器充当从服务器。这得益于Mysql支持单向、异步的数据复制。此时主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器的日志中读取的最后一次成功更新的位置。从服务器接受从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。其数据在主从服务器之间的复制流程如下图所示:
根据上述流程图所示,从服务器创建两个进程:
(1)I/O进程:负责读取主服务器的二进制日志文件的数据,并将数据写入到从服务器的中继日志(Relay log)中;
(2)SQL进程:负责读取中继日志中的数据,并且将中继操作返回给从服务器。
在进行Mysql数据复制过程中,为了避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突,所有的表更新都是在主服务器实现的,并且实现的是单向复制。从上述流程图来看,所有的写操作都是单向实现的。
单向复制有利于健壮性、速度和管理:
主服务器/从服务器设置增加了健壮性。主服务器出现问题时,可以切换到从服务器做备份;通过在主服务器和从服务器之间切分处理用户查询的负荷,可以得到更好的用户响应时间。SELECT查询可以发送到从服务器以降低主服务器的查询处理负荷。但修改数据的语句仍然应该在主服务器上执行,以便主服务器和从服务器保持同步。如果非更新查询为主,该负载均衡策略很有效,但一般是更新查询;使用复制的另一个好处是可以食用一个从服务器之行备份,而不悔干扰主服务器。在备份过程中主服务器可以继续处理更新。 MySQL提供了的同步功能,这对我们实现数据库的容灾、备份、恢复、负载均衡等都是有极大帮助的。
具体的MySQL主从复制原理和数据库备至方法,可以参考一下《MySQL主从复制的原理及配置方法》:
点击打开链接
2、基于Kubernates的MySQL主从模式部署方法
在Kubernates环境下通过创建Service和Pod的方式实现MySQL主从模式集群的部署。
(1)创建master
根据上一章节的master和slave方式,首先在Kubernates环境中也需要创建master和slave的service。依据K8s创建master服务的配置脚本如下:
apiVersion: v1
kind: Service
name: -master
name: mysql-master
- port: 3306
name: mysql-master
通过上述在K8s环境中创建一个名为mysql-master的服务器,通过如下命令,启动上述服务:
$ kubectl create -f ./mysql-master-service.yaml
执行完上述命令,通过下述命令,查看创建的服务是否成功:
$ kubectl get s --all-namace
通过上图,我们发现创建的master服务已经创建成功了。
编写master容器创建的配置脚本:
piVersion: v1
name: mysql-master
name: mysql-master
nodeName: 10.1.24.137
containers:
- name: mysql-master
image: 10.1.24.90:5000/mysql-master:5.7
- name: MYSQL_ROOT_PASSWORD
value: &root&
- name: MYSQL_REPLICATION_USER
value: &repl&
- name: MYSQL_REPLICATION_PASSWORD
value: &repl&
containerPort: 3306
hostPort: 1026
通过上述配置脚本,创建一个名叫mysql-master的容器,并且从10.1.24.90:5000服务器上下载容器镜像。配置环境变量,包括:数据库的用户和密码,以及容器端口和主机端口等。
执行如下命令,创建容器:
$ kubectl create -f ./mysql-master-pod.yaml
执行完成上述命令后,执行如下命令,查看容器是否创建成功:
$ kubectl get pods
如上图所示,发现在k8s环境中已经存在了名为mysql-master的容器,说明创建成功。
(2)创建slave
创建完成master以后,接下来创建slave。首先和上述过程一样,需要创建服务。其slave服务的配置脚本如下所示:
piVersion: v1
kind: Service
name: mysql-slave
name: mysql-slave
- port: 3306
name: mysql-slave
然后执行如下命令,创建服务:
$ kubectl create -f ./mysql-slave_service.yaml
执行成功上述命令后,通过执行如下命令,查看服务是否已经创建成功:
$ kubectl get svc --all-namespaces
通过上图,我们发现名为mysql-slave的服务已经创建成功。
接下来,我们创建slave的容器,其配置脚本如下所示:
apiVersion: v1
kind: ReplicationController
name: mysql-slave
name: mysql-slave
replicas: 3
name: mysql-slave
name: mysql-slave
name: mysql-slave
containers:
- name: mysql-slave
image: 10.1.24.90:5000/mysql-slave:5.7
- name: MYSQL_ROOT_PASSWORD
value: &root&
- name: MYSQL_REPLICATION_USER
value: &repl&
- name: MYSQL_REPLICATION_PASSWORD
value: &repl&
- name: MYSQL_MASTER_SERVICE_HOST
value: mysql-master
- containerPort: 3306
通过上述脚本,我们需要创建一个名为mysql-slave的容器,其副本数为3,通过10.1.24.90:5000下载镜像,拉起容器。同样设置数据库的用户名和密码等等参数。
通过执行如下命令,创建slave的容器:
$ kubectl create -f ./mysql-slave-rc.yaml
执行完上述命令后,通过执行下述命令,查看slave容器创建情况:
$ kubectl get pods
通过上图我们发现通过Kubernates,我们创建了三个slave容器副本。分别是:mysql-slave-16acg、mysql-slave-4iola、mysql-slave-83v13的容器。
这样我们通过Kubernates就成功创建了master和slave的节点,从而形成1个master主服务器和3个slave从服务器的mysql主从服务器集群。
3、验证MySQL主从服务器集群部署情况
经过上述的集群部署,下面我们来验证集群是否已经可以成功运行了。
通过执行如下命令,访问数据库:
$ kubectl exec -ti mysql-master -- mysql -u root -proot
通过上述命令,我们通过root用户以及密码root登陆到mysql的主服务器节点上。
通过上图,我们发现已经成功登陆到主服务器数据库中。
通过执行如下命令,查看数据库节点的情况:
执行结果如下图所示:
通过上图,我们发现执行结果是在该主服务器下面连接这三台slave从服务器器。这与我们之前配置和创建的slave副本是吻合的。
至此表明,我们成功创建了基于Kubernates的MySQL主从服务集群。可以通过端口3306实现对数据库的访问和操作。Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群_服务器应用_Linux公社-Linux系统门户网站
你好,游客
Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群
来源:Linux社区&
作者:mrxuri
MySQL Cluster 是 MySQL 适合于分布式计算环境的高实用、高冗余版本。它采用了 NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。
开发者官方网站 www..com在这篇文章中,我会叙述如何 在
12.04 LTS 构建高可用 MySQL 集群
1. SQL Cluster 虚拟主机要创建一个功能齐全的集群,至少需要3台主机才可以完成。其中一个主机作为管理节点,另外两个做数据节点。如果数据节点脱机,群集仍然可以工作,但是一旦管理节点出现问题,将导致集群无法正常工作,所以在可能的情况下,建立两个管理节点。在我的例子中,我将使用二个管理节点的集群这个例子中一共使用了 5 台主机,系统架构如下图所示
虚拟机群平台& &  VMware ESXi 4.1虚拟机操作系统& & Ubuntu 12.04.3 LTS (Precise Pangolin) 64-bit所有虚拟机都在同一 192.168.67.0/24 网络地址段当中,请根据你的网络情况来具体配置 IP 地址,在开始之前请确保所有主机网络连接设置正常
2. 安装管理节点首先,我们需要安装的 MySQL 集群的管理节点。我们将开始与 MySQL-MGM-1,配置完成后按照相同的步骤配置第二个管理节点,如果只设定一个管理节点,那么继续下一步的配置在开始配置前,请访问 /downloads/cluster/#downloads 确认当前安装文档的版本信息. 这里我所使用的 MySQL Cluster 版本是 7.3.3首先,我们把 MySQL Cluster 安装包下载到管理主机上。进入到 /usr/src 文件夹并创建 mysql-mgm 目录
mkdir /usr/src/mysql-mgmcd /usr/src/mysql-mgm
完成这一步后,在 MySQL 的官方网站下载最新的安装源代码,并解压软件包wget /Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64.tar.gz tar xvfz mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64.tar.gz
进入解压缩后的文件夹,然后移动二进制文件cd mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64 cp bin/ndb_mgm /usr/bincp bin/ndb_mgmd /usr/bin
更改目录的权限,并可以选择删除下载的源文件chmod 755 /usr/bin/ndb_mg* cd /usr/src rm -rf /usr/src/mysql-mgm
接下来,我们创建管理节点配置文件,在 /var/lib/mysql-cluster/ 文件夹中,名字叫做 config.ini ,这个文件夹事先不存在,创建它mkdir /var/lib/mysql-cluster
在 config.ini 文件创建完成后,使用你喜欢的文本编辑器编辑此文件,内容类似于这样[NDBD DEFAULT] NoOfReplicas=2 DataMemory=80M IndexMemory=18M [MYSQLD DEFAULT] [NDB_MGMD DEFAULT] DataDir=/var/lib/mysql-cluster[TCP DEFAULT] # Section for the cluster management node [NDB_MGMD] NodeId=1 # IP address of the first management node (this system) HostName=192.168.67.10 [NDB_MGMD] NodeId=2 #IP address of the second management node HostName=192.168.67.11 # Section for the storage nodes [NDBD] # IP address of the first storage node HostName=192.168.67.12 DataDir= /var/lib/mysql-cluster[NDBD] # IP address of the second storage node HostName=192.168.67.13 DataDir=/var/lib/mysql-cluster# one [MYSQLD] per storage node [MYSQLD] [MYSQLD]
所有主机都定义在这个里,即使我们只安装第一个。请注意,管理主机节点需要设定 NodeId,而 NDBD 节点不需要设定.完成这步操作后,可以用下面的命令启动管理节点ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/
完成这步操作后, 你可以通过下面的命令向 init.d 中添加一个条目,以自动启动程序echo "ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/" & /etc/init.d/ndb_mgmdchmod 755 /etc/init.d/ndb_mgmd
如果一切顺利,第二个管理节点上遵循相同的步骤,并使用相同的配置。请不要改变的节点配置文件中的 ID你可以使用 ndb_mgm 命令来验证管理节点的运行,(只需要在终端中输入 ndb_mgm ) ,并通过键入 show,启动配置实用程序。此时 NDBD 节点和 MySQL 节点处于断开状态,需要将所有节点配置完成才可以输出正确的状态。
更多详情见请继续阅读下一页的精彩内容:
推荐阅读:
搭建基于Corosync+DRBD的高可用MySQL集群
Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群
Heartbeat+MySQL+NFS 实现高可用(HA)的MySQL集群
集群(第10期)_MySQL关系数据库
相关资讯 & & &
& (01月21日)
& (01月21日)
& (01月23日)
& (01月21日)
& (02/01/:24)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款主机大师(Apache版),搭建Apache+多PHP+MySQL+PhpMyAdmin很方便_护卫神吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:9贴子:
主机大师(Apache版),搭建Apache+多PHP+MySQL+PhpMyAdmin很方便
软件名:护卫神·主机大师(Apache版) (又叫“护卫神·Apache建站大师”)版本号:V1.4.0下载点:运行环境:Windows主流操作系统均可支持功能点:
1、搭建Apache+多PHP+MySQL+PhpMyAdmin+FileZilla FTP;
2、自带主机管理系统,方便管理多个网站,每个网站可以绑定域名、设置不同的PHP版本等;
3、软件支持伪静态功能;
4、PHP支持PHP5.2/5.3/5.4/5.5/5.6等版本。组件版本:
1、Apache:V2.2.22
2、PHP:V5.2.17/5.3.28/5.4.41/5.5.38/5.6.25 (均为32bit)
3、PhpMyAdmin:V4.0.6
4、MySQL:V5.5.19(32bit)
5、FileZilla FTP:V0.9.41
6、Memcached:V1.4.13(默认未开启,需要请在PHP管理中心开启)
7、MyODBC:V5.2.6
软件界面截图:
2、安装模块选择
3、正在执行安装
4、软件启动界面
5、软件主界面
6、新建/编辑网站
7、数据库管理界面
8、数据库编辑界面
更多信息请点击:
缺牙要及时修复,揭秘种植牙如何做到几十年不掉?
主机大师(Apache版)是基于Apache平台的网站和环境工具;如果需要Nginx和IIS版,请到护卫神官网下载即可。
贴吧热议榜
使用签名档&&
保存至快速回贴

我要回帖

更多关于 kubernates 总结 的文章

 

随机推荐