PolarDB-X 爲了方便用戶體驗,提供了免費的實驗環境,您可以在實驗環境裏體驗 PolarDB-X 的安裝部署和各種內核特性。除了免費的實驗,PolarDB-X 也提供免費的視頻課程,手把手教你玩轉 PolarDB-X 分佈式數據庫。
本期實驗將指導您如何對PolarDB-X進行備份恢復。
前置準備
假設已經根據前一講內容完成了PolarDB-X的搭建部署,使用PolarDB-X Operator安裝PolarDB-X,並且可以成功鏈接上PolarDB-X數據庫。
啓動轉賬業務
本步驟將指導您如何使用賬戶轉賬場景模擬業務流量。
1.執行如下命令,創建 transfer.yaml
vim transfer.yaml
2.按i鍵進入編輯模式,將如下代碼複製到文件中,然後按ECS退出編輯模式,輸入:wq後按下Enter鍵保存並退出。
---
apiVersion: v1
kind: ConfigMap
metadata:
name: transfer-test-polardbx-config
data:
config.toml: |
row_count = 100
initial_balance = 1000
verbose = true
enable_cts = false
for_polarx = true
[transfer_simple]
enabled = true
threads = 1
[read_latest]
enabled = false
threads = 1
---
apiVersion: batch/v1
kind: Job
metadata:
name: transfer-test-polardbx
spec:
backoffLimit: 4
template:
spec:
restartPolicy: Never
volumes:
- name: config-toml
configMap:
name: transfer-test-polardbx-config
items:
- key: config.toml
path: config.toml
initContainers:
- name: database-init
image: mysql:5.7
env:
- name: USER
value: polardbx_root
- name: PASSWD
valueFrom:
secretKeyRef:
name: polardb-x
key: polardbx_root
command:
- mysql
args:
- -h$(POLARDB_X_SERVICE_HOST)
- -P$(POLARDB_X_SERVICE_PORT)
- -u$(USER)
- -p$(PASSWD)
- -e
- drop database if exists transfer_test; create database transfer_test character set utf8;
- name: data-init
image: polardbx/transfer-test:latest
env:
- name: USER
value: polardbx_root
- name: PASSWD
valueFrom:
secretKeyRef:
name: polardb-x
key: polardbx_root
volumeMounts:
- mountPath: /config.toml
name: config-toml
subPath: config.toml
readOnly: true
command: [ "/transfer" ]
args:
- prepare
- -config=/config.toml
- -dsn=$(USER):$(PASSWD)@tcp($(POLARDB_X_SERVICE_HOST):$(POLARDB_X_SERVICE_PORT))/transfer_test
containers:
- name: test
image: polardbx/transfer-test
env:
- name: USER
value: polardbx_root
- name: PASSWD
valueFrom:
secretKeyRef:
name: polardb-x
key: polardbx_root
volumeMounts:
- mountPath: /config.toml
name: config-toml
subPath: config.toml
readOnly: true
command: [ "/transfer" ]
args:
- run
- -config=/config.toml
- -dsn=$(USER):$(PASSWD)@tcp($(POLARDB_X_SERVICE_HOST):$(POLARDB_X_SERVICE_PORT))/transfer_test
---
3.執行如下命令,開啓轉賬業務流量。
kubectl apply -f transfer.yaml
4.執行如下命令,等待轉賬業務pod變成Running狀態。
kubectl get pods -w
5.按Ctrl+C鍵,退出。
連接PolarDB-X驗證數據
本步驟將指導您如何連接通過K8s部署的PolarDB-X集羣。
1.執行如下命令,查看PolarDB-X集羣登錄密碼。
kubectl get secret polardb-x -o jsonpath="{.data['polardbx_root']}" | base64 -d - | xargs echo "Password: "
返回結果如下,您可以查看到PolarDB-X集羣登錄密碼。
2.執行如下命令,將PolarDB-X集羣端口轉發到3306端口。
說明:使用MySQL Client方式登錄通過k8s部署的PolarDB-X集羣前,您需要進行獲取PolarDB-X集羣登錄密碼和端口轉發。
kubectl port-forward svc/polardb-x 3306
3. 在實驗頁面,單擊右上角的+圖標,創建新的終端二。
4. 在終端二中,執行如下命令,連接PolarDB-X集羣。
說明:
- 您需要將<PolarDB-X集羣登錄密碼>替換爲實際獲取到的PolarDB-X集羣登錄密碼。
- 如遇到mysql: [Warning] Using a password on the command line interface can be insecure.ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0報錯,請您稍等一分鐘,重新轉發端口並連接PolarDB-X集羣即可。
mysql -h127.0.0.1 -P3306 -upolardbx_root -p<PolarDB-X集羣登錄密碼>
5. 執行如下SQL,驗證數據一致性。
use transfer_test; select sum(balance) from accounts;
6. 輸入exit並回車,退出mysql命令行。
備份PolarDB-X
本步驟介紹如何爲一個PolarDB-X創建備份集。
1.回到終端一,按CTRL+C停止port-forward命令。
2.配置備份集存儲方式。
說明:PolarDB-X 目前支持將備份集保存到 OSS、SFTP兩種方式。本實驗中,我們將備份集通過SFTP備份到實驗機器的指定目錄。
2.1 執行如下命令,創建備份集存儲的配置文件backup-storage-patch.yaml.
vim backup-storage-patch.yaml
2.2 按i鍵進入編輯模式,將如下代碼複製到文件中,並修改其中的host字段爲實驗創建資源的私網ip(如何獲取參考下圖) ,然後按ECS退出編輯模式,輸入:wq後按下Enter鍵保存並退出。
data:
config.yaml: |-
sinks:
- name: default
type: sftp
host: {修改爲實驗機器的ip}
port: 22
user: galaxykube
password: Polardbx123
rootPath: /home/galaxykube/backup/
2.3 執行如下命令,修改備份集存儲配置。
kubectl -n polardbx-operator-system patch configmap polardbx-hpfs-config --patch-file backup-storage-patch.yaml
2.4 執行如下命令重啓hpfs 組件,讓備份集存儲配置生效。
kubectl -n polardbx-operator-system rollout restart daemonsets polardbx-hpfs
3.爲 PolarDB-X 集羣進行備份。
3.1 執行如下命令,創建polardb-x-backup.yaml。
vim polardb-x-backup.yaml
3.2 按i鍵進入編輯模式,將如下代碼複製到文件中,然後按ECS退出編輯模式,輸入:wq後按下Enter鍵保存並退出。
apiVersion: polardbx.aliyun.com/v1
kind: PolarDBXBackup
metadata:
name: polardb-x-backup
spec:
cluster:
name: polardb-x
retentionTime: 240h
storageProvider:
storageName: SFTP
sink: default
3.3 執行如下命令創建PolarDBXBackup對象,並對PolarDB-X集羣進行備份。
kubectl apply -f polardb-x-backup.yaml
3.4 執行如下命令觀察備份狀態,等到Phase 變爲finished,即表示備份完成。
kubectl get pxb -w
3.5按Ctrl+C鍵,退出。
恢復PolarDB-X
本步驟介紹如何從備份集恢復出一個PolarDB-X集羣。
1.執行如下命令,停止業務流量並刪除當前PolarDB-X集羣。
kubectl delete job --all
kubectl delete pxc --all
2.執行如下命令,創建polardbx-restore.yaml。
vim polardbx-restore.yaml
3.按i鍵進入編輯模式,將如下代碼複製到文件中,然後按ECS退出編輯模式,輸入:wq後按下Enter鍵保存並退出。
apiVersion: polardbx.aliyun.com/v1
kind: PolarDBXCluster
metadata:
name: polardb-x-restore
spec:
topology:
nodes:
cn:
replicas: 1
template:
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: 100m
memory: 1Gi
dn:
template:
resources:
limits:
cpu: "1"
memory: 2Gi
requests:
cpu: 100m
memory: 1Gi
restore:
backupset: polardb-x-backup
4.執行如下命令,開始恢復PolarDB-X。
kubectl apply -f polardbx-restore.yaml
5. 執行如下命令,查看PolarDB-X集羣創建狀態。
kubectl get polardbxCluster polardb-x-restore -o wide -w
返回結果如下,請您耐心等待七分鐘左右,當PHASE顯示爲Running時,表示PolarDB-X集羣已經恢復完成。
PolarDB-X集羣已經恢復完成後,按Ctrl+C鍵,退出查看PolarDB-X集羣創建狀態。
6. 連接PolarDB-X集羣,驗證數據。
6.1 執行如下命令,查看PolarDB-X集羣登錄密碼。
kubectl get secret polardb-x-restore -o jsonpath="{.data['polardbx_root']}" | base64 -d - | xargs echo "Password: "
返回結果如下,您可以查看到PolarDB-X集羣登錄密碼。
6.2 執行如下命令,將PolarDB-X集羣端口轉發到3306端口。
說明:使用MySQL Client方式登錄通過k8s部署的PolarDB-X集羣前,您需要進行獲取PolarDB-X集羣登錄密碼和端口轉發。
kubectl port-forward svc/polardb-x-restore 3306
6.3 在實驗頁面,單擊右上角的+圖標,創建新的終端三。
6.4 在終端三種,執行如下命令,連接PolarDB-X集羣。
說明:
- 您需要將<PolarDB-X集羣登錄密碼>替換爲實際獲取到的PolarDB-X集羣登錄密碼。
- 如遇到mysql: [Warning] Using a password on the command line interface can be insecure.ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0報錯,請您稍等一分鐘,重新轉發端口並連接PolarDB-X集羣即可。
mysql -h127.0.0.1 -P3306 -upolardbx_root -p<PolarDB-X集羣登錄密碼>
6.5 執行如下SQL 驗證數據,確認所有賬戶的餘額總和仍是1000。
use transfer_test; select sum(balance) from accounts;
本文爲阿里雲原創內容,未經允許不得轉載。