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

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
性能测试 PTS,5000VUM额度
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 【4月更文挑战第9天】提升数据安全与性能,掌握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的配置选项,以满足你的特定需求,并构建稳健的云原生应用。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
MySQL 8.0:filesort 性能退化的问题分析
用户将 RDS MySQL 实例从 5.6 升级到 8.0 后,发现相同 SQL 的执行时间增长了十几倍。本文就该问题逐步展开排查,并最终定位根因。
|
6天前
|
关系型数据库 MySQL 数据安全/隐私保护
docker应用部署---MySQL的部署配置
这篇文章介绍了如何使用Docker部署MySQL数据库,包括搜索和拉取MySQL镜像、创建容器并设置端口映射和目录映射、进入容器操作MySQL,以及如何使用外部机器连接容器中的MySQL。
docker应用部署---MySQL的部署配置
|
3天前
|
存储 关系型数据库 MySQL
MySQL索引失效及避免策略:优化查询性能的关键
MySQL索引失效及避免策略:优化查询性能的关键
15 3
|
3天前
|
缓存 关系型数据库 MySQL
MySQL数据库优化:提升性能和扩展性的关键技巧
MySQL数据库优化:提升性能和扩展性的关键技巧
10 2
|
1月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
1月前
|
存储 关系型数据库 MySQL
使用Docker快速部署Mysql服务器
本文介绍了如何使用Docker快速部署MySQL服务器,包括下载官方MySQL镜像、启动容器、设置密码、连接MySQL服务器以及注意事项。
140 18
|
3天前
|
存储 缓存 NoSQL
深入探究Redis的AOF持久化:保障数据安全与恢复性能的关键机制
深入探究Redis的AOF持久化:保障数据安全与恢复性能的关键机制
12 0
|
3天前
|
监控 关系型数据库 MySQL
如何优化MySQL数据库的索引以提升性能?
如何优化MySQL数据库的索引以提升性能?
11 0
|
2月前
|
前端开发 C# 设计模式
“深度剖析WPF开发中的设计模式应用:以MVVM为核心,手把手教你重构代码结构,实现软件工程的最佳实践与高效协作”
【8月更文挑战第31天】设计模式是在软件工程中解决常见问题的成熟方案。在WPF开发中,合理应用如MVC、MVVM及工厂模式等能显著提升代码质量和可维护性。本文通过具体案例,详细解析了这些模式的实际应用,特别是MVVM模式如何通过分离UI逻辑与业务逻辑,实现视图与模型的松耦合,从而优化代码结构并提高开发效率。通过示例代码展示了从模型定义、视图模型管理到视图展示的全过程,帮助读者更好地理解并应用这些模式。
57 0
|
16天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
下一篇
无影云桌面