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

k8s-mysql主从部署

一.环境信息

mysql版本 :8.0

k8s 版本1.22

使用nfs作为共享存储

二.配置mysql主节点yaml

apiVersion: v1
kind: ConfigMap
metadata:name: mysql-master-confignamespace: mysqllabels:app: mysql-master-config
data: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=utf8lower_case_table_names=1sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONcollation-server=utf8_unicode_ciskip-character-set-client-handshakeskip-name-resolvepid-file        = /var/run/mysqld/mysqld.pidsocket          = /var/run/mysqld/mysqld.sockdatadir         = /var/lib/mysqlsecure-file-priv= NULL# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0# 主从同步server-id = 1log-bin = mysql-binsync_binlog = 1binlog_checksum = nonebinlog_format = mixedslave-skip-errors = allevent_scheduler = 1max_allowed_packet = 64M# Custom config should go here!includedir /etc/mysql/conf.d/
---
# headless service
apiVersion: v1
kind: Service
metadata:name: mysql-master-svcnamespace: mysqllabels:app: mysql-master-svc
spec:clusterIP: Noneports:- name: master-portport: 3306selector:app: mysql-master
---
# NodePort service
apiVersion: v1
kind: Service
metadata:name: mysql-master-nodeportnamespace: mysqllabels:app: mysql-master-nodeport
spec:clusterIP:ports:- name: master-portport: 3306nodePort: 31306targetPort: 3306selector:app: mysql-mastertype: NodePorttarget-port:externalTrafficPolicy: Cluster
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: mysql-masternamespace: mysql
spec:serviceName: "mysql-master-svc"replicas: 1selector:matchLabels:app: mysql-mastertemplate:metadata:labels:app: mysql-masterspec:containers:- name: mysql-masterimage: mysql:8.0.20ports:- containerPort: 3306name: master-portenv:- name: MYSQL_ROOT_PASSWORDvalue: "root"- name: TZvalue: "Asia/Shanghai"volumeMounts:- name: mycnfmountPath: /etc/mysql/my.cnfsubPath: my.cnf- name: mysql-master-datamountPath: /var/lib/mysqlvolumes:- name: mycnfconfigMap:name: mysql-master-config- name: mysql-master-datanfs:server: 192.168.110.190 path: /data/data/mysql-master

三.配置mysql从节点yaml

apiVersion: v1
kind: ConfigMap
metadata:name: mysql-slave-confignamespace: mysqllabels:app: mysql-slave-config
data: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=utf8lower_case_table_names=1sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONcollation-server=utf8_unicode_ciskip-character-set-client-handshakeskip-name-resolvepid-file        = /var/run/mysqld/mysqld.pidsocket          = /var/run/mysqld/mysqld.sockdatadir         = /var/lib/mysqlsecure-file-priv= NULL# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0# 主从同步server-id = 2log-bin = mysql-binsync_binlog = 1binlog_checksum = nonebinlog_format = mixedslave-skip-errors = allevent_scheduler = 1max_allowed_packet = 64Mread-only=1# Custom config should go here!includedir /etc/mysql/conf.d/
---
# headless service
apiVersion: v1
kind: Service
metadata:name: mysql-slave-svcnamespace: mysqllabels:app: mysql-slave-svc
spec:clusterIP: Noneports:- name: slave-portport: 3306selector:app: mysql-slave
---
# NodePort service
apiVersion: v1
kind: Service
metadata:name: mysql-slave-nodeportnamespace: mysqllabels:app: mysql-slave-nodeport
spec:clusterIP:ports:- name: slave-portport: 3306nodePort: 31307targetPort: 3306selector:app: mysql-slavetype: NodePorttarget-port:externalTrafficPolicy: Cluster
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: mysql-slavenamespace: mysql
spec:serviceName: "mysql-slave-svc"replicas: 1selector:matchLabels:app: mysql-slavetemplate:metadata:labels:app: mysql-slavespec:containers:- name: mysql-slaveimage: mysql:8.0.20ports:- containerPort: 3306name: slave-portenv:- name: MYSQL_ROOT_PASSWORDvalue: "root"- name: TZvalue: "Asia/Shanghai"volumeMounts:- name: mycnfmountPath: /etc/mysql/my.cnfsubPath: my.cnf- name: mysql-slave-datamountPath: /var/lib/mysqlvolumes:- name: mycnfconfigMap:name: mysql-slave-config- name: mysql-slave-datanfs:server: 192.168.110.190 path: /data/data/mysql-slave

三、主从配置

主节点操作

获取mysql的内部ip 

kubectl get svc -n mysql

1.登录主节点

MySQL mysql -h 192.168.40.12 -P 31306 -u root -proot

show master status;

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000004 |      152 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
2.创建从节点数据同步用户
CREATE USER 'replica'@'%' IDENTIFIED WITH mysql_native_password BY 'replica123';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
FLUSH PRIVILEGES;
 

 从节点操作

1.登录从节点
mysql -h 192.168.110.190 -P 31307  -u root -proot
2.同步指向主节点
CHANGE MASTER TO MASTER_HOST='mysql-master-svc',MASTER_USER='replica',MASTER_PASSWORD='replica123',MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=152,MASTER_PORT=3306;
3.开启同步
start slave;

相关文章:

  • 部署kubesphere报错
  • 【运维】如何更换Ubuntu默认的Python版本,update-alternatives如何使用
  • C++从入门到精通(最详细教程,12万总结,带你掌握c++知识,涵盖大量知识点)
  • 3、前端本地环境搭建
  • 门面模式Api网关(SpringCloudGateway)
  • C++【STL】改造红黑树简单模拟实现set map(带你了解set map的底层实现结构)
  • c语言基础篇B
  • ORA-12519 TNS:no appropriate service handler found
  • el-date-picker设置结束时间为23:59:59
  • Hudi Spark Sql Procedures 回滚 Hudi 表数据
  • 项目-基于LangChain的ChatPDF系统
  • calico node一直not ready
  • 前端UI框架Element Plus 和 Ant Design Vue哪个好
  • 大模型微调工具LLaMA-Factory docker安装、大模型lora微调训练
  • 通用Mapper基础学习
  • 2017-08-04 前端日报
  • angular组件开发
  • FineReport中如何实现自动滚屏效果
  • Hexo+码云+git快速搭建免费的静态Blog
  • HTTP那些事
  • Javascript弹出层-初探
  • Linux链接文件
  • PHP面试之三:MySQL数据库
  • SpringCloud集成分布式事务LCN (一)
  • Spring框架之我见(三)——IOC、AOP
  • Theano - 导数
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 大型网站性能监测、分析与优化常见问题QA
  • 浮现式设计
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 猴子数据域名防封接口降低小说被封的风险
  • 基于webpack 的 vue 多页架构
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 全栈开发——Linux
  • 双管齐下,VMware的容器新战略
  • 详解NodeJs流之一
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • Spring Batch JSON 支持
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $$$$GB2312-80区位编码表$$$$
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (译) 函数式 JS #1:简介
  • (转)IOS中获取各种文件的目录路径的方法
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net wcf memory gates checking failed