服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - 提升数据安全与性能,掌握Helm一键部署MySQL 8.0主从技巧

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

2024-04-11 15:15攻城狮成长日记 Mysql

本教程将介绍如何使用Helm一键部署MySQL 8.0的主从复制架构,以实现数据库的高可用和数据备份。

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

提升数据安全与性能,掌握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

执行上述命令后,会返回一下结果,如下图:

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

等待几分钟之后,执行如下命令即可查看部署的情况:

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

(2) 执行下面的命令,验证主节点

# 登录主容器
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)

(3) 执行下面的命令,验证从节点

# 登录从容器
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主从技巧

写到最后

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

原文地址:https://mp.weixin.qq.com/s?__biz=MjM5OTc5MjM4Nw==&mid=2457378700&idx=1&sn=01a07c140a8dc47ed5cbc2564a85439b

延伸 · 阅读

精彩推荐
  • MysqlMySQL简单了解“order by”是怎么工作的

    MySQL简单了解“order by”是怎么工作的

    在MySQl中ORDER BY 语句用于对结果集进行排序,那么它是怎么工作的,以及如何优化,下面由小编跟大家讲一讲...

    piperck3542020-09-25
  • Mysql如何修改WAMP中mysql默认空密码的方法

    如何修改WAMP中mysql默认空密码的方法

    WAMP安装好后,mysql密码是为空的,那么要如何修改呢?其实很简单,通过几条指令就行了,下面我就一步步来操作。 ...

    MYSQL教程网5932019-11-21
  • MysqlMySQL 管理

    MySQL 管理

    对于网站的开发者来说,MySQL是一个较受欢迎的选择,这不仅是因为它对于任何平台上的非商业应用都是免费的,而且也因为它的架设和使用非常的简单。...

    mysql技术网3612019-10-15
  • Mysqlmysql免安装没有任何root权限

    mysql免安装没有任何root权限

    这篇文章主要介绍了mysql免安装没有任何root权限的安装与配置教程,本文图文并茂给大家介绍的非常详细,需要的朋友参考下 ...

    一璐到底4252020-07-11
  • MysqlMySQL数据库安全设置与注意事项小结

    MySQL数据库安全设置与注意事项小结

    现在很多朋友使用mysql数据库,为了安全考虑我们就需要考虑到mysql的安全问题,例如需要将mysql以普通用户权限运行,就算出问题了有了root也不能控制系统...

    MYSQL教程网4862020-01-08
  • Mysql详解MYSQL中重命名procedure的一种方法

    详解MYSQL中重命名procedure的一种方法

    这篇文章主要介绍了MYSQL中重命名procedure的一种方法,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下...

    ysl-unh5812020-09-28
  • Mysql一文详解MySQL中数据表的外连接

    一文详解MySQL中数据表的外连接

    因为 MySQL 是关系型数据库,数据是拆分重组在多个数据表里面的。所以我们势必要从多个数据表中提取数据,通过 SQL 语句的内连接与外连接就能够实现多...

    不渴望力量的哈士奇9262022-08-03
  • MysqlPHP学习散记(MySQL)

    PHP学习散记(MySQL)

    数据库是Web大多数应用开发的基础。如果你是用PHP,那么大多数据库用的是MYSQL也是LAMP架构的重要部分 ...

    MYSQL教程网3432019-11-28