KubeSphere - 搭建 mysql 主从复制结构
Posted 小毕超
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KubeSphere - 搭建 mysql 主从复制结构相关的知识,希望对你有一定的参考价值。
一、KubeSphere
上篇文章我们介绍了KubeSphere
多租户场景的实现,本篇文章我们借助KubeSphere
搭建mysql
的主从结构,下面是上篇文章的地址:
在实验开始前,请确保已经安装完成了k8s
及 kubesphere
环境:
二、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-project
和 mysql-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 主从复制结构的主要内容,如果未能解决你的问题,请参考以下文章
(六)从零开始搭建k8s集群——使用KubeSphere管理平台创建Mysql数据库容器服务