当前位置:网站首页>容器化|在 S3 备份恢复 RadonDB MySQL 集群数据
容器化|在 S3 备份恢复 RadonDB MySQL 集群数据
2022-07-30 05:08:00 【RadonDB】
作者:程润科、钱芬
视频:钱芬
上一篇文章我们演示了如何快速实现 MySQL 高可用集群部署,以及部署集群的校验和卸载方式。本文将演示如何对集群进行备份和恢复。
部署版本为 RadonDB MySQL Kubernetes 2.1.3。
环境准备
首先准备一套 Kubernetes 集群,过程略。然后创建一套 RadonDB MySQL 集群。
步骤 1:下载源码
$ git clone https://github.com/radondb/radondb-mysql-kubernetes.git步骤 2:安装 Operator
以下指定 release 名为 test , 创建一个名为 test-mysql-operator 的 Deployment。。
$ helm install test charts/mysql-operator步骤 3:配置备份信息
Kubernetes Secret 资源信息需提前准备。文章及操作视频中的资源环境为青云云平台的 qingstor 对象存储。其他平台的密钥及 S3 存储服务创建过程类似,请另行参考。
创建 API 密钥
登录青云云平台官网,点击 产品与服务 -> API 密钥;进入入 API 密钥页面,点击 创建 API 密钥,输入名称后下载 s3-access-key 、 s3-secret-key 明文信息。
创建 s3-bucket
点击 产品与服务 -> 对象存储;进入对象存储页面,点击 创建 Bucket,输入 bucket 名称后即可获得 bucket 明文信息:
- s3-endpoint: http://s3.sh1a.qingstor.com
- s3-access-key:VNXYHYHQUXZKUVZFGFRY
- s3-secret-key:0zw7JKkbAAdlQKHPjTHWtoFGGQRvnQ5SJRc5P69r
- s3-bucket: radondb-mysql-bucket s3-xxxx 的值是使用 base64 算法加密的,你可以这样获得。(此处对s3-xxx信息进行脱敏处理)。
$ echo -n "http://s3.sh1a.qingstor.com"|base64创建 Kubernetes Secret 资源
创建backup_secret.yaml文件用来存放 S3 对象存储相关信息。(此处对s3-xxx信息进行脱敏处理)。
kind: SecretapiVersion: v1metadata:name: sample-backup-secretnamespace: defaultdata:s3-endpoint: aHR0cDovL3MzLnNoMWEucWluZ3N0b3IuY29ts3-access-key: Vk5YWUhZSFFVWFpLVVZaRkdGUlk=s3-secret-key: MHp3N0pLa2JBQWRsUUtIUGpUSFd0b0ZHR1FSdm5RNVNKUmM1UDY5cg==s3-bucket: cmFkb25kYi1teXNxbC1idWNrZXQ=type: Opaque然后在 kubernetes 中执行创建加密配置。
$ kubectl create -f config/samples/backup_secret.yaml步骤 4:创建及启动集群
请在mysql_v1a1pha1_mysqlcluster.yaml 文件中添加 backupSecretName 属性。
spec:replicas: 3mysqlVersion: "5.7"backupSecretName: sample-backup-secret...执行以下指令,即创建 RadonDB MySQL 集群。
$ kubectl apply -f config/samples/mysql_v1alpha1_mysqlcluster.yaml 备份恢复
将集群数据备份到 S3 存储
创建备份文件 mysql_v1a1pha1_backup.yaml 内容如下。
apiVersion: mysql.radondb.com/v1alpha1kind: Backupmetadata:name: backup-sample1spec:# Add fields herehostname: sample-mysql-0clustname: sample| name | function |
|---|---|
| hostname | pod name in cluser |
| clustname | cluster name |
待集群运行成功后,执行以下指令开始备份。
$ kubectl apply -f config/samples/mysql_v1alpha1_backup.yaml备份完成后可在 S3 查看对应的备份文件。
从 S3 备份中恢复集群
检测你的 S3 bucket,获取你备份的目录,比如:backup_2021720827,并且将设置为 yaml 文件的 restoreFrom 属性中。
...spec:replicas: 3mysqlVersion: "5.7"backupSecretName: sample-backup-secretrestoreFrom: "backup_2021720827"...此时执行以下指令:
$ kubectl apply -f config/samples/mysql_v1alpha1_mysqlcluster.yaml 恢复完成,已经从名为 backup_2021720827 的 S3 备份中恢复一个集群。
卸载
卸载过程详见《部署文档》 的卸载部分。
推荐阅读
边栏推荐
- WPF study notes "WPF Layout Basics"
- 解决报错SyntaxError: (unicode error) ‘utf-8‘ codec can‘t decode byte 0xb7 in position 0: invalid start b
- IGBT wafers used in photovoltaic inverters
- protobuf 中复合数据类型的读写
- 22. 为什么需要消息队列?使用消息队列有什么好处?
- 1315_Use the LOOPBACK simulation mode to test whether the pyserial installation is successful
- [Vitis] Code implementation of ZCU102 development board PS-side control PL-side reset
- Recursive Optimization of Fibonacci Sequences "Memo Recursion"
- 05 Detailed explanation of the global configuration file application.properties
- std::vector中保存指针时用法
猜你喜欢

Small program npm package--API Promise

小程序使用npm包定制全局样式

WPF study notes "WPF Layout Basics"

1. Get data - requests.get()

Perspective transformation matrix of image perspective correction should be matrix (single)/findHomography with getPerspectiveTransformd difference

ThinkPHP high imitation blue play cloud network disk system source code / docking easy payment system program

GO language study notes one

七、自定义配置

Hexagon_V65_Programmers_Reference_Manual (11)

Golang eight-legged text finishing (continuous handling)
随机推荐
Verify that the addShutdownHook hook takes effect
[C language] Program environment and preprocessing
小程序npm包--API Promise化
gnss rtcm rtklib Ntrip...
Naive Bayes Classification
坪山区关于开展2022年度科技创新专项资金申报工作的通知
动态规划问题(完结篇)
SaaS多租户数据隔离的三种解决方案
Codeforces Round #809 (Div. 2) A~D
Catch That Cow (detailed)
DLL说明(1)
Stimulsoft ReportsJS and DashboardsJS. 2022.3.3
String Problem (Part 1)
Discourse 自定义头部链接(Custom Header Links)
字符串问题(下)
Hexagon_V65_Programmers_Reference_Manual (14)
如何让 (a == 1 && a == 2 && a == 3) 的值为true?
Golang channel implementation principle
mysql无法远程连接 Can‘t connect to MySQL server on ‘xxx.xxx.xxx.xxx‘ (10060 “Unknown error“)
Shi Xingguo, founder of Hyperchain, was interviewed by 21st Century Business Herald to interpret Shanghai's new NFT regulations and digital development