提升数据安全与性能,掌握Helm一键部署MySQL 8.0主从技巧

在云原生应用开发中,数据库的高可用性和数据一致性是至关重要的。MySQL作为一种常用的关系型数据库,在云原生环境中的部署和管理也变得愈发重要。本教程将介绍如何使用Helm一键部署MySQL 8.0的主从复制架构,以实现数据库的高可用和数据备份。

架构图

准备工作

在先前的文中,我们详细介绍了如何利用Helm管理Kubernetes(K8S)集群,相信这已经使大家对Helm的基本使用有了初步的了解。在开始之前,确保你已经安装了以下工具:

  • Kubernetes集群
  • Helm包管理器

安装Helm Chart

首先,添加MySQL的Helm仓库,执行如下命令:

helm repo add bitnami https://charts.bitnami.com/bitnami

然后,执行下面的命令更新本地仓库索引:

helm repo update

搜索MySQL的版本

通过下面的命令,在仓库搜索MySQL的版本。

controlplane $ helm search repo mysql
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/mysql 10.1.1 8.0.36 MySQL is a fast, reliable, scalable, and easy t...
bitnami/phpmyadmin 16.0.1 5.2.1 phpMyAdmin is a free software tool written in P...
bitnami/mariadb 18.0.1 11.3.2 MariaDB is an open source, community-developed ...
bitnami/mariadb-galera 13.0.0 11.3.2 MariaDB Galera is a multi-primary database clus...

配置主从复制

MySQL Helm Chart提供了简单的配置选项来设置主从复制。你可以通过以下方式配置:

helm install mysql-cluster  \
--set auth.rootPassword='mysql' \
--set global.storageClass=local-path \
--set architecture=replication \
--set auth.password='mysql' \
--set secondary.replicaCount=1 \
--set auth.replicationPassword='replpass' \
-n mysql --create-namespace \
bitnami/mysql

执行上述命令后,会返回一下结果,如下图:等待几分钟之后,执行如下命令即可查看部署的情况:

controlplane $ k get pod -n mysql -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
mysql-cluster-primary-0 1/1 Running 0 5m45s 192.168.1.7 node01 <none> <none>
mysql-cluster-secondary-0 1/1 Running 0 5m45s 192.168.0.5 controlplane <none> <none>

验证主从同步

  1. 执行如下命令,安装客户端软件。
apt install mysql-client -y
  1. 执行下面的命令,验证主节点
# 登录主容器
mysql -uroot -h192.168.1.7 -pmysql

#
查看主从状态
# 查看File和Position的值,在从库配置中会显示。
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000003
Position: 157
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
  1. 执行下面的命令,验证从节点
# 登录从容器
mysql -uroot -h192.168.0.5 -pmysql
# 查看Slave_IO_Running和Slave_SQL_Running的值是否为Yes.
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for source to send event
Master_Host: mysql-cluster-primary
Master_User: replicator
Master_Port: 3306
Connect_Retry: 10
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 157
Relay_Log_File: mysql-relay-bin.000006
Relay_Log_Pos: 373
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

遇到的问题总结

  1. 执行完部署命令后,提示"resources" sections in the chart not set,如下:
WARNING: There are "resources" sections in the chart not set. Using "resourcesPreset" is not recommended for production. For production installations, please set the following values according to your workload needs:
- primary.resources
- secondary.resources

通过上述提示信息是由于resources的资源没有设置。

下载MySQL包到本地

通过下面的命令把MySQL包下载到本地。

controlplane $ helm pull bitnami/mysql --version=10.1.1
controlplane $ ls
filesystem get_helm.sh mysql-10.1.1.tgz snap
controlplane $

执行下面的命令解压下载好的MySQL包:

controlplane $ tar zxvf mysql-10.1.1.tgz 
mysql/Chart.yaml
mysql/Chart.lock
mysql/values.yaml
...省略...

修改mysql/values.yaml中的resources,如下:

  resources: 
requests:
cpu: 2
memory: 1024Mi
limits:
cpu: 2
memory: 1024Mi

修改完之后保存退出,执行如下命令重新部署。

helm install mysql-cluster  \
--set auth.rootPassword='mysql' \
--set global.storageClass=local-path \
--set architecture=replication \
--set auth.password='mysql' \
--set secondary.replicaCount=1 \
--set auth.replicationPassword='replpass' \
--set useBundledSystemChart=true \
-f /root/mysql/values.yaml \
-n mysql --create-namespace \
bitnami/mysql

执行完上述的命令后,刚才那个警告就消失了。如下图:

写到最后

通过本教程,你学习了如何使用Helm一键部署MySQL 8.0的主从复制架构。这为你提供了一个简单而强大的方法来部署可扩展的、高可用的MySQL数据库集群,并确保了数据的备份和一致性。继续探索更多Helm Chart的配置选项,以满足你的特定需求,并构建稳健的云原生应用。


相关推荐

  • 深圳团队研发的编程语言 MoonBit 在日本知名开发者社区 Zenn 爆火
  • 网易暴雪官宣合作;马云内部发帖肯定阿里一年改革;Android Studio整合Gemini 1.0 Pro | 极客头条
  • OpenAI 发布全新 GPT-4 Turbo with Vision,网友实测:编码不如旧版本!
  • 苹果曝“内鬼”猛料,索赔 18 万元:五年泄露至少 6 种机密,发送超 10000 条信息!
  • 通义实验室春季2025届实习生招聘正式启动
  • Let's Talk In AI:以我来时路,赠君沿途灯
  • NVIDIA 最新 AI 大模型管理部署与最佳实践研讨会
  • 技术分享|揭秘第三代指标平台的查询加速技术
  • 热搜榜一,奇安信全员无年终奖!
  • 高瓴投出一笔没想到的钱
  • 舒服了,学习了,踩到一个 Lombok 的坑!
  • 今日arXiv最热大模型论文:Dataverse,针对大模型的开源ETL工具,数据清洗不再难!
  • Google 发布 CodeGemma:7B 力压 CodeLLaMa-13B
  • 黑科技 !AI届的“指环王”,已接入ChatGPT和Gemini!一个戒指可操控手机和智能家居,韩国公司研发
  • 超越GPT-4V,苹果多模态大模型上新!
  • 「视觉版」GPT-4 Turbo重磅升级!ChatGPT 40条消息限制或取消
  • 刚刚,Mistral AI最新磁力链放出!8x22B MoE模型,281GB解禁
  • 物理学再失伟人!94岁诺奖得主、「上帝粒子」之父希格斯离世
  • 谷歌向微软英特尔全面宣战!首款自研Arm CPU,最强大模型公测,AI视频对垒Sora
  • 今日代码大赏 | Java 使用递归反转句子