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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/23799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL Doublewrite Buffer 有了解过吗?

引言:在数据库管理中,确保数据的完整性和一致性是至关重要的。然而,在持久化数据到磁盘的过程中,可能会遇到各种意外情况,如断电或系统崩溃,从而导致部分数据写入,而另一部分数据未能成功写入&a…

揭秘!如何从精益生产转向智能制造

企业在“工业4.0、智能制造、互联网”等概念满天飞的环境下迷失了方向,不知该如何下手,盲目跟风。 君不见,很多企业在“工业4.0、智能制造、互联网”等概念满天飞的环境下迷失了方向,不知该如何下手,盲目跟风&#xf…

D365 使用 X++ 设置采购行的财务维度组合

文章目录 前言一、代码 前言 使用 X 设置采购行的财务维度组合 一、代码 PurchLine purchLine;DimensionAttributeValueSetStorage dimensionAttributeValueSetStorage;DimensionAttributeValue dimensionAttributeValue;DimensionAt…

2024下《系统集成项目管理工程师》50个高频考点汇总!值得收藏

宝子们!5月软考考完了,终于可以考系统集成了! 整理了50个高频考点,涵盖全书90%考点,先把这个存下!再慢慢看书,边看书边背这个 1、信息安全的基本要素有: (1&#xff09…

迈入智能新纪元:智慧机房运维系统引领行业变革

在数字化飞速发展的今天,机房作为信息时代的“心脏”,其稳定运行对于企业的业务连续性至关重要。然而,传统的机房运维模式面临着诸多挑战,如响应速度慢、故障定位难、资源浪费大等问题。智慧机房运维系统,它将以智能化…

Java【问题 07】SSH不同版本使用jsch问题处理(7.4升级9.7及欧拉原生8.8)

SSH不同版本使用jsch问题处理 1.问题一2.问题二2.1 说明2.2 解决 3.问题三 1.问题一 # 1.系统 cat /etc/os-release # 系统信息 NAME"openEuler" VERSION"22.03 (LTS-SP1)" ID"openEuler" VERSION_ID"22.03" PRETTY_NAME"openEu…

nginx快速删除一行

使用光标定位到要删除的行,连续按两次键盘上的字母d,则可删除; 如果原先在编辑模式下,按esc键退出编辑模式,然后定位到要删除的位,按2次d,则可快速删除,删除后想继续编辑&#xff0…

延时任务工具类

自定义工具类 package com.sxfoundation.task;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.task.TaskRejectedException; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import org.spri…

重磅:吴恩达最新的机器学习书籍《Machine Learning Yearning》两年磨一剑

《Machine Learning Yearning》是吴恩达历时两年打磨而成的机器学习和深度学习实践宝典。这本书旨在为读者提供实战经验,以帮助他们在机器学习项目中取得成功。 吴恩达通过自身多年的实践经验,为读者提供了宝贵的指导,涵盖了从项目构建到调试…

AndroidX Navigation 反复创建Fragment问题修复

目录 解决办法如何使用参考文档解决办法 自定义 FragmentNavigator,替换系统的,系统对应的 FragmentNavigator Key 为 "fragment",代码如下,可直接拷贝使用。 import android.content.Context import android.util.Log import androidx.annotation.IdRes impor…

ts类型声明文件、内置声明文件

1. ts类型声明文件 在ts中以d.ts为后缀的文件就是类型声明文件,主要作用是为js模块提供类型信息支持,从而获得类型提示 1.1 第三方包用ts编写的,会自动生成一个 .d.ts文件,进行类型声明 1.2 有些包不是用ts编写的,在…

【HashMap】CAS的定义及优缺点

CAS(Compare-And-Swap,比较并交换)是一种原子操作,用于实现无锁(lock-free)的并发数据结构。它是现代处理器支持的一种硬件指令,能够保证在多线程环境下进行变量更新时的原子性。CAS 操作包含三…

LangChain真的好用吗?谈一下LangChain封装FAISS的一些坑

前言 最近在做一个知识库问答项目,就是现在大模型浪潮下比较火的 RAG 应用。LangChain 可以说是 RAG 最受欢迎的工具,因此我首选 LangChain 来快速构建我的应用。坦白来讲 LangChain 本身一套对于组件的定义已经让我感觉很复杂,为什么采用 f…

Java Web学习笔记6——盒子模型

视频标签&#xff1a;<video> src: 规定视频的URL controls&#xff1a;显示播放控件 width&#xff1a;播放器的宽度 height&#xff1a;播放器的高度 音频标签&#xff1a;<audio> src: 规定音频的URL controls: 显示播放控件 段落标签&#xff1a;<p&g…

npm yarn 更换国内源以及node历史版本下载地址

npm 更换国内源 npm config set registryhttps://registry.npmmirror.com npm config set electron_mirrorhttps://registry.npmmirror.com/electron/yarn 更换国内源 yarn config set registry https://registry.npmmirror.comnode历史版本下载地址 https://nodejs.org/dow…

Git版本控制:核心概念、操作与实践

Git是一种分布式版本控制系统&#xff0c;被广泛应用于软件开发过程中。本文将介绍Git的核心概念、常用操作以及最佳实践&#xff0c;帮助读者掌握Git的基本技巧&#xff0c;提高团队协作效率。 一、引言 在软件开发过程中&#xff0c;版本控制是至关重要的。它能帮助我们跟踪…

Flutter InAppWebView Unknown feature SUPPRESS_ERROR_PAGE

在使用InAppWebView的initialData加载html代码的时候,出现java.lang.RuntimeException: Unknown feature SUPPRESS_ERROR_PAGE的出错误 E/MethodChannel#flutter/platform_views(16853): Failed to handle method call E/MethodChannel#flutter/platform_views(16853):<

linux驱动学习(七)之混杂设备

需要板子一起学习的可以这里购买&#xff08;含资料&#xff09;&#xff1a;点击跳转 一、混杂设备 混杂设备也叫杂项设备&#xff0c;是对普通的字符设备(struct cdev)的一种封装,设计目的就是为了简化字符设备驱动设计的流程。具有以下特点&#xff1a; 1) 主设备号为10&a…

全面解析:渗压计数据如何预测地下水趋势

随着人们对水资源日益增长的需求和对环境保护意识的提升&#xff0c;地下水位的监测和预测成为了水利工程和环境科学领域的重要研究内容。渗压计作为一种能够测量土壤或岩石中孔隙水压力的仪器&#xff0c;在地下水位的监测中发挥着关键作用。本文将从渗压计的工作原理、安装方…

初探富文本之基于虚拟滚动的大型文档性能优化方案

初探富文本之基于虚拟滚动的大型文档性能优化方案 虚拟滚动是一种优化长列表性能的技术&#xff0c;其通过按需渲染列表项来提高浏览器运行效率。具体来说&#xff0c;虚拟滚动只渲染用户浏览器视口部分的文档数据&#xff0c;而不是整个文档结构&#xff0c;其核心实现根据可…