KubeSphere - 搭建 mysql 主从复制结构

Posted 小毕超

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KubeSphere - 搭建 mysql 主从复制结构相关的知识,希望对你有一定的参考价值。

一、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');

在从节点进行查看:



喜欢的小伙伴可以关注我的个人微信公众号,获取更多学习资料!

以上是关于KubeSphere - 搭建 mysql 主从复制结构的主要内容,如果未能解决你的问题,请参考以下文章

Mysql基于GTID搭建主从同步

(六)从零开始搭建k8s集群——使用KubeSphere管理平台创建Mysql数据库容器服务

mysql主从服务器的配置

MySQL的主从复制(windows)

学习MySQL之主从复制与读写分离一篇就够了!(数据库并发能力的提升)

(八)从零开始搭建k8s集群——使用KubeSphere管理平台创建一个高可用的Nacos(2.0.4)集群服务