提升數(shù)據(jù)安全與性能,掌握Helm一鍵部署MySQL 8.0主從技巧
在云原生應(yīng)用開發(fā)中,數(shù)據(jù)庫(kù)的高可用性和數(shù)據(jù)一致性是至關(guān)重要的。MySQL作為一種常用的關(guān)系型數(shù)據(jù)庫(kù),在云原生環(huán)境中的部署和管理也變得愈發(fā)重要。本教程將介紹如何使用Helm一鍵部署MySQL 8.0的主從復(fù)制架構(gòu),以實(shí)現(xiàn)數(shù)據(jù)庫(kù)的高可用和數(shù)據(jù)備份。
架構(gòu)圖
準(zhǔn)備工作
在先前的文中,我們?cè)敿?xì)介紹了如何利用Helm管理Kubernetes(K8S)集群,相信這已經(jīng)使大家對(duì)Helm的基本使用有了初步的了解。在開始之前,確保你已經(jīng)安裝了以下工具:
- Kubernetes集群
- Helm包管理器
安裝Helm Chart
首先,添加MySQL的Helm倉(cāng)庫(kù),執(zhí)行如下命令:
helm repo add bitnami https://charts.bitnami.com/bitnami
然后,執(zhí)行下面的命令更新本地倉(cāng)庫(kù)索引:
helm repo update
搜索MySQL的版本
通過(guò)下面的命令,在倉(cāng)庫(kù)搜索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...
配置主從復(fù)制
MySQL Helm Chart提供了簡(jiǎn)單的配置選項(xiàng)來(lái)設(shè)置主從復(fù)制。你可以通過(guò)以下方式配置:
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
執(zhí)行上述命令后,會(huì)返回一下結(jié)果,如下圖:
等待幾分鐘之后,執(zhí)行如下命令即可查看部署的情況:
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>
驗(yàn)證主從同步
(1) 執(zhí)行如下命令,安裝客戶端軟件。
apt install mysql-client -y
(2) 執(zhí)行下面的命令,驗(yàn)證主節(jié)點(diǎn)
# 登錄主容器
mysql -uroot -h192.168.1.7 -pmysql
# 查看主從狀態(tài)
# 查看File和Position的值,在從庫(kù)配置中會(huì)顯示。
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) 執(zhí)行下面的命令,驗(yàn)證從節(jié)點(diǎn)
# 登錄從容器
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
遇到的問(wèn)題總結(jié)
(1) 執(zhí)行完部署命令后,提示"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
通過(guò)上述提示信息是由于resources的資源沒(méi)有設(shè)置。
下載MySQL包到本地
通過(guò)下面的命令把MySQL包下載到本地。
controlplane $ helm pull bitnami/mysql --version=10.1.1
controlplane $ ls
filesystem get_helm.sh mysql-10.1.1.tgz snap
controlplane $
執(zhí)行下面的命令解壓下載好的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
修改完之后保存退出,執(zhí)行如下命令重新部署。
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
執(zhí)行完上述的命令后,剛才那個(gè)警告就消失了。如下圖:
寫到最后
通過(guò)本教程,你學(xué)習(xí)了如何使用Helm一鍵部署MySQL 8.0的主從復(fù)制架構(gòu)。這為你提供了一個(gè)簡(jiǎn)單而強(qiáng)大的方法來(lái)部署可擴(kuò)展的、高可用的MySQL數(shù)據(jù)庫(kù)集群,并確保了數(shù)據(jù)的備份和一致性。繼續(xù)探索更多Helm Chart的配置選項(xiàng),以滿足你的特定需求,并構(gòu)建穩(wěn)健的云原生應(yīng)用。