一、KubeSphere

上篇文章我们介绍了KubeSphere 多租户场景的实现,本篇文章我们借助KubeSphere 搭建mysql的主从结构,下面是上篇文章的地址:

https://blog.csdn.net/qq_43692950/article/details/122784211

在实验开始前,请确保已经安装完成了k8skubesphere 环境:
在这里插入图片描述

二、mysql 主节点搭建

创建 PVC 存储卷

首先创建主节点的存储卷 PVC,存储主节点产生的数据文件:
在这里插入图片描述
给配制文件起个名称及描述:
在这里插入图片描述

选择 存储的模式及大小,然后下一步再创建 就 创建好主节点的PVC了:
在这里插入图片描述
在这里插入图片描述

创建 my.cnf 配制字典

在这里插入图片描述
为配制起了名字,然后下一步,点添加数据:
在这里插入图片描述
键可以写 my.cnf 具有标识性,值可以填入以下内容,注意修改为你自己的数据库名称:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

server_id=1
log-bin=mysql-bin
#是否只读  0=false   1=true
read-only=0

#需要同步的数据库
binlog-do-db=test_db
#binlog-do-db=test_db1

#排除同步的数据库
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=performance_schema
replicate-ignore-db=information_schema

在这里插入图片描述
然后创建:
在这里插入图片描述

创建 mysql master 服务

在这里插入图片描述
选择有状态服务,可以利用headless 生成一个稳定的域名在k8s集群中使用:
在这里插入图片描述
同样为服务起个名称:
在这里插入图片描述
下面镜像我们选择 mysql:5.7 的版本,使用默认的端口:
在这里插入图片描述
下面可以对cpu及内存进行限制,主要看你服务的配制,下面添加root用户密码的环境变量:MYSQL_ROOT_PASSWORD

密码可以通过引用保密字典的方式,这里直接写出来了。
在这里插入图片描述
然后下一步选择挂在存储卷:
在这里插入图片描述
挂在的PVC就是上面创建的PVC,读写模式,挂载目录为:/var/lib/mysql
在这里插入图片描述
然后还需要挂在my.cnf 配制文件:

在这里插入图片描述
还是选择上面创建的配制字典,挂在目录为 /etc/mysql 下的 my.cnf 文件:
在这里插入图片描述
然后下一步,点击创建即可创建mysql 服务:
在这里插入图片描述
可以点击进入,其中容器列表中,可以进入容器的终端:
在这里插入图片描述
在这里即可进入刚才创建的mysql中:
在这里插入图片描述
上面说到有状态会通过headless创建了一个稳定的域名,在服务详情中即可看到:
在这里插入图片描述
域名为 mysql-master.test-project 这个需要记录下来,后面需要使用。

三、mysql 从节点搭建

从节点搭建和上面主节点搭建过程一致,先创建一个从节点的PVC,然后在创建一个从节点的my.cnf的配制字典,同样创建有状态的服务,并选择mysql:5.7版本的镜像,并引用从节点的PVC和从节点的my.cnf配制字典:

PVC 存储卷:

在这里插入图片描述

my.cnf 配制字典:

在这里插入图片描述
配制内容,和主节点只有server_id 不同:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

server_id=2
log-bin=mysql-bin
#是否只读  0=false   1=true
read-only=1


#需要同步的表数据
binlog-do-db=test_db
#binlog-do-db=test_db1

#排除同步的表数据
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=performance_schema
replicate-ignore-db=information_schema

创建 slave 服务:

在这里插入图片描述

三、mysql 主从配制

主节点配制

首先进入主节点的终端,进入 mysql 中,为从节点创建一个用户:

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'slave123';

在这里插入图片描述
查看主节点的状态,其中File 列需要记录下来:

SHOW MASTER STATUS;

在这里插入图片描述
这里是 mysql-bin.000003 后面从节点要同步这个日志文件:

从节点配制

进入从节点的终端,再进入mysql 中,首先加入主节点的同步:

CHANGE MASTER TO MASTER_HOST='mysql-master.test-project',MASTER_USER='slave',MASTER_PASSWORD='slave123',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=0,MASTER_PORT=3306;

注意这里的 mysql-master.test-projectmysql-bin.000003 ,都是上面主节点中的:
在这里插入图片描述
开始同步:

start slave;

在这里插入图片描述

查看同步的状态:

show slave status\G;

在这里插入图片描述
已经开启同步了,下面进行测试下主从同步是否正常:

四、测试主从

首先在主节点创建 test_db 数据库,及 test_table 表,并写入一些测试数据:

create database test_db;
CREATE TABLE `test_table`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `test_db`.`test_table`(`id`, `name`) VALUES (1, 'test1');
INSERT INTO `test_db`.`test_table`(`id`, `name`) VALUES (2, 'test2');

在从节点进行查看:

在这里插入图片描述
在这里插入图片描述
喜欢的小伙伴可以关注我的个人微信公众号,获取更多学习资料!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐