当前位置: 首页 > news >正文

wordpress get_commentsseo网站排名后退

wordpress get_comments,seo网站排名后退,国外平面设计欣赏网站,设计类专业有哪些专业《k8s搭建一主三从的mysql8集群---无坑-CSDN博客》通过搭建一主三从,我们能理解到主节点只有1个,那么承担增删改主要还是主节点,如果你在从节点上去操作增删改操作,数据不会同步到其他节点。本章我们将实现多主(双主&a…

《k8s搭建一主三从的mysql8集群---无坑-CSDN博客》通过搭建一主三从,我们能理解到主节点只有1个,那么承担增删改主要还是主节点,如果你在从节点上去操作增删改操作,数据不会同步到其他节点。本章我们将实现多主(双主)集群。实现在多个节点上操作增删改,能同步其他节点

 一,环境准备

1.1 k8s集群服务器

ip角色系统主机名cpumem
192.168.40.129mastercentos7.9k8smaster48
192.168.40.130node1centos7.9k8snode148
192.168.40.131node2centos7.9k8snode248
192.168.40.132node3centos7.9k8snode348

k8s集群操作请参考《K8s安装部署(v1.28)--超详细(cri-docker作为运行时)-CSDN博客》 

1.2 nfs服务器器

ip角色系统主机名cpumem用图
192.168.40.129mastercentos7.9k8smaster48k8s主服务器

nfs服务器
192.168.40.130node1centos7.9k8snode148k8s的工作节点
需要装nfs软件
192.168.40.131node2centos7.9k8snode248k8s的工作节点
需要装nfs软件
192.168.40.132node3centos7.9k8snode348k8s的工作节点
需要装nfs软件

二,安装nfs服务

2.1  安装(所有节点)

因为需要在三个工作节点上连接nfs,所以工作节点上也要安装

yum install -y nfs-utils

2.2 暴露nfs目录(只暴露nfs主服务器)

要安装四台服务器。

直接在nfs服务器(k8s-master:192.168.40.129)当中创建这三个目录并写入 /etc/exports 文件夹中(创建的目录可以修改):

#创建nfs目录
mkdir -p /data/nfs/{mysql-master-01,mysql-master-02}
vi /etc/exports
#添加
/data/nfs/mysql-master-01 *(rw,sync,no_root_squash)
/data/nfs/mysql-master-02 *(rw,sync,no_root_squash)

如果目录不为空,需要清空

rm -rf /data/nfs/mysql-master-01/*
rm -rf /data/nfs/mysql-master-02/*

 2.3 开启nfs服务器

直接在主服务器(192.168.40.129)上启动nfs服务器。

systemctl enable --now nfs-server

 2.4 测试nfs服务

我们可以通过这行命令来检查目录是否暴露成功: 注意修改为自己的nfs服务器地址

showmount -e 192.168.40.129

 

三,搭建MySql集群

3.1 创建命名空间

创建一个命名空间来部署MySQL集群,当然你也可以使用默认的Default命名空间。这里就用 mysql-cluster 命名空间来搭建集群了,首先我们将这个命名空间创建出来:

创建yaml

kubectl create namespace mysql-cluster --dry-run=client -o yaml
apiVersion: v1
kind: Namespace
metadata:creationTimestamp: nullname: mysql-cluster
spec: {}
status: {}

 将上面内容 保存到mysql-ns.yaml中

 执行命令

kubectl apply -f mysql-ns.yaml

查看名称空间

kubectl get ns

3.2 创建MySQL密码的Secret

创建一个存储了MySQL密码的Secret,直接使用这行命令生成这个Secret的资源清单文件:
注意修改root的密码和命名空间,我的root密码设置为的是123456

kubectl create secret generic mysql-password --namespace=mysql-cluster --from-literal=mysql_root_password=123456 --dry-run=client -o=yaml
apiVersion: v1
data:mysql_root_password: MTIzNDU2
kind: Secret
metadata:creationTimestamp: nullname: mysql-passwordnamespace: mysql-cluster

将上述yaml内容保存到  mysql-secret.yaml 

kubectl apply -f  mysql-secret.yaml 

查看创建的密码

 kubectl get secret -n mysql-cluster

  

3.3 编写MySQL双主节点yaml 

3.3.1 主节点1 

   mysql-master-1.yaml  内容如下

apiVersion: v1
kind: PersistentVolume
metadata:name: mysql-master-01-nfs-pvnamespace: mysql-cluster
spec:capacity:storage: 1GiaccessModes:- ReadWriteManynfs:server: 192.168.40.129path: /data/nfs/mysql-master-01storageClassName: "nfs"---apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mysql-master-01-nfs-pvcnamespace: mysql-cluster
spec:accessModes:- ReadWriteManystorageClassName: "nfs"resources:requests:storage: 1GivolumeName: mysql-master-01-nfs-pv---
apiVersion: v1
kind: Service
metadata:name: mysql-master-svc-01namespace: mysql-clusterlabels:app: mysql-master
spec:ports:- port: 3306name: mysqltargetPort: 3306nodePort: 3306selector:app: mysql-mastertype: NodePortsessionAffinity: ClientIP---
apiVersion: v1
data:my.cnf: |[mysqld]server-id = 1# 开启gtidgtid_mode = ONenforce_gtid_consistency = 1# 设置自增ID初始值为2,每次自增量为2。即都是偶数2,4,6,8,...auto_increment_offset = 2auto_increment_increment = 2# 开启bin_log(默认是开启的,直接使用默认),模式为ROW,允许最大日志为1G#log_bin = mysql-bin#binlog_format = ROW#max_binlog_size = 1024M# 主节点master不需要写binlog的数据库binlog_ignore_db = mysqlbinlog_ignore_db = information_schemabinlog_ignore_db = performance_schemabinlog_ignore_db = sys# 从节点slave不进行数据同步的数据库replicate_ignore_db = mysqlreplicate_ignore_db = information_schemareplicate_ignore_db = performance_schemareplicate_ignore_db = sys# 中继日志(默认是开启的,直接使用默认)#relay_log = mysql-relay-bin# mysql5.7以后的版本不需要配置log-slave-updates=1# log-slave-updates = 1#[client]#socket           = /var/run/mysqld/mysqld.sock#!includedir /etc/mysql/conf.d/
kind: ConfigMap
metadata:creationTimestamp: nullname: mysql-master-01-cmnamespace: mysql-cluster---apiVersion: apps/v1
kind: StatefulSet
metadata:name: mysql-master-01namespace: mysql-cluster
spec:selector:matchLabels:app: mysql-masterserviceName: "mysql-master-svc-01"replicas: 1template:metadata:labels:app: mysql-masterspec:terminationGracePeriodSeconds: 10containers:- args:- --character-set-server=utf8mb4- --collation-server=utf8mb4_unicode_ci- --lower_case_table_names=1- --default-time_zone=+8:00name: mysql# image: docker.io/library/mysql:8.0.34image: registry.cn-shenzhen.aliyuncs.com/xiaohh-docker/mysql:8.0.34ports:- containerPort: 3306name: mysqlvolumeMounts:- name: mysql-datamountPath: /var/lib/mysql- name: mysql-confmountPath: /etc/my.cnfreadOnly: truesubPath: my.cnfenv:- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:key: mysql_root_passwordname: mysql-passwordvolumes:- name: mysql-datapersistentVolumeClaim:claimName: mysql-master-01-nfs-pvc- name: mysql-confconfigMap:name: mysql-master-01-cmitems:- key: my.cnfmode: 0644path: my.cnf

3.3.2 主节点2

主节点2 mysql-master-2.yaml 内容如下 

apiVersion: v1
kind: PersistentVolume
metadata:name: mysql-master-02-nfs-pvnamespace: mysql-cluster
spec:capacity:storage: 1GiaccessModes:- ReadWriteManynfs:server: 192.168.40.129path: /data/nfs/mysql-master-02storageClassName: "nfs"---apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mysql-master-02-nfs-pvcnamespace: mysql-cluster
spec:accessModes:- ReadWriteManystorageClassName: "nfs"resources:requests:storage: 1GivolumeName: mysql-master-02-nfs-pv---
apiVersion: v1
kind: Service
metadata:name: mysql-master-svc-02namespace: mysql-clusterlabels:app: mysql-master
spec:ports:- port: 3306name: mysqltargetPort: 3306nodePort: 3307selector:app: mysql-mastertype: NodePortsessionAffinity: ClientIP---
apiVersion: v1
data:my.cnf: |[mysqld]server-id = 2# 开启gtidgtid_mode = ONenforce_gtid_consistency = 1# 设置自增ID初始值为1,每次自增量为2。即都是偶数2,4,6,8,...auto_increment_offset = 1auto_increment_increment = 2# 开启bin_log(默认是开启的,直接使用默认),模式为ROW,允许最大日志为1G#log_bin = mysql-bin#binlog_format = ROW#max_binlog_size = 1024M# 主节点master不需要写binlog的数据库binlog_ignore_db = mysqlbinlog_ignore_db = information_schemabinlog_ignore_db = performance_schemabinlog_ignore_db = sys# 从节点slave不进行数据同步的数据库replicate_ignore_db = mysqlreplicate_ignore_db = information_schemareplicate_ignore_db = performance_schemareplicate_ignore_db = sys# 中继日志(默认是开启的,直接使用默认)#relay_log = mysql-relay-bin# mysql5.7以后的版本不需要配置log-slave-updates=1# log-slave-updates = 1#[client]#socket           = /var/run/mysqld/mysqld.sock#!includedir /etc/mysql/conf.d/
kind: ConfigMap
metadata:creationTimestamp: nullname: mysql-master-02-cmnamespace: mysql-cluster---apiVersion: apps/v1
kind: StatefulSet
metadata:name: mysql-master-02namespace: mysql-cluster
spec:selector:matchLabels:app: mysql-masterserviceName: "mysql-master-svc-02"replicas: 1template:metadata:labels:app: mysql-masterspec:terminationGracePeriodSeconds: 10containers:- args:- --character-set-server=utf8mb4- --collation-server=utf8mb4_unicode_ci- --lower_case_table_names=1- --default-time_zone=+8:00name: mysql# image: docker.io/library/mysql:8.0.34image: registry.cn-shenzhen.aliyuncs.com/xiaohh-docker/mysql:8.0.34ports:- containerPort: 3306name: mysqlvolumeMounts:- name: mysql-datamountPath: /var/lib/mysql- name: mysql-confmountPath: /etc/my.cnfreadOnly: truesubPath: my.cnfenv:- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:key: mysql_root_passwordname: mysql-passwordvolumes:- name: mysql-datapersistentVolumeClaim:claimName: mysql-master-02-nfs-pvc- name: mysql-confconfigMap:name: mysql-master-02-cmitems:- key: my.cnfmode: 0644path: my.cnf

3.3.3 配置注意点

  •  nfs 的地址、路径
  • msql的配置中 server-id 要不同,gtid_mode设置为on,enforce_gtid_consistency设置为1
[mysqld]server-id = 2# 开启gtidgtid_mode = ONenforce_gtid_consistency = 1
  • mysql的镜像地址 有需要改成能拉取到的镜像
  • service 的nodePort端口要设置不同(共用一个service的可以不变)

3.4 启动集群

3.4.1 启动

kubectl apply -f .

 

 3.4.2 k8s查看所有集群信息 

kubectl get all -n mysql-cluster -o wide

 3.4.3 进入主节点1

kubectl exec -itn mysql-cluster pod/mysql-master-01-0 -- mysql -uroot -p

输入密码·12345

加入集群命令

change master tomaster_host='mysql-master-02-0.mysql-master-svc-02.mysql-cluster.svc.cluster.local',master_port=3306,master_user='root',master_password='123456',master_auto_position=1,get_master_public_key=1;

需要注意下面的几个参数:

  • master_host: 这个参数是 节点2的 master的地址,(根据k8s的网络解析,pod名称.service名称.命名空间.svc.cluster.local 。我的是 mysql-master-02-0.mysql-master-svc-02.mysql-cluster.svc.cluster.local)
  • master_port: 主节点的mysql端口,我们没改默认是3306
  • master_user: 登录到主节点的mysql用户
  • master_password: 登录到主节点要用到的密码
  • get_master_public_key: 连接主mysql的公钥获取方式 根据上面参数,

如果要修改那么请按照自己的环境进行修改。 

 启动主从

#启动
start slave;
#查看副本状态
show replica status\G;

 

看到这两项都为yes表示正常           

Replica_IO_Running: Yes
Replica_SQL_Running: Yes 

3.4.4 进入主节点2

kubectl exec -itn mysql-cluster pod/mysql-master-02-0 -- mysql -uroot -p

输入密码·12345

加入集群命令

change master tomaster_host='mysql-master-01-0.mysql-master-svc-01.mysql-cluster.svc.cluster.local',master_port=3306,master_user='root',master_password='123456',master_auto_position=1,get_master_public_key=1;

需要注意下面的几个参数:

  • master_host: 这个参数是 节点1的 master的地址,(根据k8s的网络解析,pod名称.service名称.命名空间.svc.cluster.local 。我的是 mysql-master-01-0.mysql-master-svc-01.mysql-cluster.svc.cluster.local)
  • master_port: 主节点的mysql端口,我们没改默认是3306
  • master_user: 登录到主节点的mysql用户
  • master_password: 登录到主节点要用到的密码
  • get_master_public_key: 连接主mysql的公钥获取方式 根据上面参数,

如果要修改那么请按照自己的环境进行修改。 

 启动主从

#启动
start slave;
#查看副本状态
show replica status\G;

 

看到这两项都为yes表示正常           

Replica_IO_Running: Yes
Replica_SQL_Running: Yes 

四,测试集群

4.1 完整性测试

工具连接两个 是3306、3307,端口,

我们在在节点1上建库,建表


CREATE DATABASE `test_db`;
USE `test_db`;CREATE TABLE `user` (`user_id` BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '用户id',`username` VARCHAR(50) NOT NULL COMMENT '用户名',`age` TINYINT UNSIGNED DEFAULT 18 COMMENT '年龄',`gender` TINYINT UNSIGNED DEFAULT 2 COMMENT '性别;0=男,1=女,2=未知'
) COMMENT '用户表';

到节点2上查看,是否同步了 

 

我们在节点2上插入2条数据,看下是否能同步


INSERT INTO `user` (`username`, `age`, `gender`) VALUES ('oopxiajun', '18', '0');
INSERT INTO `user` (`username`, `age`, `gender`) VALUES ('01', '28', '0');

 

再去节点1上看下是否有这两条数据

已经成功同步。

 4.2 宕机其中一台测试

关闭 节点2 

kubectl delete -f mysql-master-2.yaml 

节点2已经连不上连不上了

这时我们在节点1插入一条数据

INSERT INTO `user` (`username`, `age`, `gender`) VALUES ('02宕机数据', '28', '0');

启动节点2

 kubectl apply  -f mysql-master-2.yaml 

 

 查看数据是否同步

这样我们架构就保证我们两台中一台能正常运行,业务就不会停止,发生故障的服务器恢复后可以自动同步数据。 

http://www.khdw.cn/news/8275.html

相关文章:

  • 常州网站建设百科营销软件
  • 怎么设置网页版浏览器站长工具seo综合查询问题
  • 做碳循环的网站青岛网站权重提升
  • 洛阳市建设厅网站佛山网站建设公司
  • 深圳市门户网站建设营销策略范文
  • 长网页网站知名seo公司
  • 网站建设的步骤百度云官网
  • 最新免费网站收录提交入口seo自动发布外链工具
  • 黄骅做网站最新国内新闻重大事件
  • 毕业设计做 什么网站好数据分析师35岁以后怎么办
  • 好看的网站首页设计发广告平台有哪些免费
  • 网站模板可以自己做吗品牌型网站设计推荐
  • 个人做新闻网站做广告推广哪个平台好
  • 海口网站设计武汉搜索引擎排名优化
  • 网站制作+资讯运营推广seo招聘
  • 大望路网站建设公司百度网盘搜索引擎入口哪里
  • 汕头生态建设典型案例seo企业培训班
  • 怎么查网站备案桂平网络推广
  • 衡水建立网站网站推广营销的步骤
  • 建设网站教程论坛吸引人的软文标题例子
  • 万网网站到期后续费一年多少钱在线培训系统
  • 中国智慧城市建设门户网站建网站建设
  • 网站设计做什么的手机百度搜索引擎入口
  • 阿里云服务器如何做两个网站免费下载官方百度
  • 南做网站零基础学什么技术好
  • 企业网站有哪些优点关键词优化策略
  • seo站长工具平台长沙官网seo服务
  • 中国建设银行网站上不去网络营销职业规划300字
  • 做网站内容管理器要吗下载百度语音导航地图
  • 网站建设设计制网站查找工具