作者: Ju4t
$ uname -a
Linux iZbp1gjcq5giipy5jzde7aZ 5.10.134-12.2.al8.aarch64 #1 SMP Thu Oct 27 02:19:04 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
# aarch64
# 安装 docker
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl start docker
# 安装 kubectl
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/arm64/kubectl
chmod +x ./kubectl
mv ./kubectl /usr/local/bin/kubectl
# 安装 minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64
sudo install minikube-linux-arm64 /usr/local/bin/minikube
# 安装 helm3
wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/PolarDB-X/helm-v3.5.1-linux-arm64.tar.gz
tar -zxvf helm-v3.5.1-linux-arm64.tar.gz
mv linux-arm64/helm /usr/local/bin/helm
# 安装 mysql
yum install -y mysql
非arm则 将arm64 换成 amd64,helm 到 https://github.com/helm/helm/releases 下载对应版本
# 新建账号galaxykube,并将galaxykube加入docker组中。minikube要求使用非root账号进行部署,所以您需要新建一个账号。
useradd -ms /bin/bash galaxykube
usermod -aG docker galaxykube
su galaxykube
cd
# 安装
minikube start --cpus 4 --memory 12288 --nodes=2 --image-mirror-country cn --registry-mirror=https://docker.mirrors.sjtug.sjtu.edu.cn --kubernetes-version 1.23.3
# 查看集群状态
kubectl cluster-info
# 部署 PolarDB-X Operator
kubectl create namespace polardbx-operator-system
helm repo add polardbx https://polardbx-charts.oss-cn-beijing.aliyuncs.com
helm install --namespace polardbx-operator-system polardbx-operator polardbx/polardbx-operator
kubectl get pods --namespace polardbx-operator-system
# 部署 PolarDB-X 集群
vim polardb-x.yaml
apiVersion: polardbx.aliyun.com/v1
kind: PolarDBXCluster
metadata:
name: polardb-x
spec:
topology:
nodes:
cdc:
replicas: 1
template:
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: 100m
memory: 500Mi
cn:
replicas: 1
template:
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: 100m
memory: 1Gi
dn:
replicas: 1
template:
engine: galaxy
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: 100m
memory: 500Mi
gms:
template:
engine: galaxy
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: 100m
memory: 500Mi
kubectl apply -f polardb-x.yaml
kubectl get polardbxCluster polardb-x -o wide -w
# 查看密码
kubectl get secret polardb-x -o jsonpath="{.data['polardbx_root']}" | base64 -d - | xargs echo "Password: "
# 转发端口
kubectl port-forward svc/polardb-x 3306
mysql -h127.0.0.1 -P3306 -upolardbx_root -p<PolarDB-X集群登录密码>
create database sysbench_test;
su galaxykube
cd
vim sysbench-prepare.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: sysbench-prepare-data-test
namespace: default
spec:
backoffLimit: 0
template:
spec:
restartPolicy: Never
containers:
- name: sysbench-prepare
image: minirplus/sysbench
env:
- name: POLARDB_X_USER
value: polardbx_root
- name: POLARDB_X_PASSWD
valueFrom:
secretKeyRef:
name: polardb-x
key: polardbx_root
command: [ 'sysbench' ]
args:
- --db-driver=mysql
- --mysql-host=$(POLARDB_X_SERVICE_HOST)
- --mysql-port=$(POLARDB_X_SERVICE_PORT)
- --mysql-user=$(POLARDB_X_USER)
- --mysql_password=$(POLARDB_X_PASSWD)
- --mysql-db=sysbench_test
- --mysql-table-engine=innodb
- --rand-init=on
- --max-requests=1
- --oltp-tables-count=1
- --report-interval=5
- --oltp-table-size=160000
- --oltp_skip_trx=on
- --oltp_auto_inc=off
- --oltp_secondary
- --oltp_range_size=5
- --mysql_table_options=dbpartition by hash(`id`)
- --num-threads=1
- --time=3600
- /usr/share/sysbench/tests/include/oltp_legacy/parallel_prepare.lua
- run
kubectl apply -f sysbench-prepare.yaml
kubectl get jobs
vim sysbench-oltp.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: sysbench-oltp-test
namespace: default
spec:
backoffLimit: 0
template:
spec:
restartPolicy: Never
containers:
- name: sysbench-oltp
image: minirplus/sysbench
env:
- name: POLARDB_X_USER
value: polardbx_root
- name: POLARDB_X_PASSWD
valueFrom:
secretKeyRef:
name: polardb-x
key: polardbx_root
command: [ 'sysbench' ]
args:
- --db-driver=mysql
- --mysql-host=$(POLARDB_X_SERVICE_HOST)
- --mysql-port=$(POLARDB_X_SERVICE_PORT)
- --mysql-user=$(POLARDB_X_USER)
- --mysql_password=$(POLARDB_X_PASSWD)
- --mysql-db=sysbench_test
- --mysql-table-engine=innodb
- --rand-init=on
- --max-requests=0
- --oltp-tables-count=1
- --report-interval=5
- --oltp-table-size=160000
- --oltp_skip_trx=on
- --oltp_auto_inc=off
- --oltp_secondary
- --oltp_range_size=5
- --mysql-ignore-errors=all
- --num-threads=32
- --time=3600
- /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua
- run
kubectl apply -f sysbench-oltp.yaml
kubectl get pods
kubectl logs -f 目标POD
[galaxykube@iZbp1gjcq5giipy5jzde7aZ ~]$ kubectl logs -f sysbench-oltp-test-vl86b
WARNING: --num-threads is deprecated, use --threads instead
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)
Running the test with following options:
Number of threads: 32
Report intermediate results every 5 second(s)
Initializing random number generator from current time
Initializing worker threads...
Threads started!
[ 5s ] thds: 32 tps: 16.99 qps: 373.49 (r/w/o: 300.91/71.98/0.60) lat (ms,95%): 3208.88 err/s: 0.00 reconn/s: 0.00
[ 10s ] thds: 32 tps: 55.40 qps: 989.86 (r/w/o: 769.45/220.41/0.00) lat (ms,95%): 831.46 err/s: 0.00 reconn/s: 0.00
[ 15s ] thds: 32 tps: 62.80 qps: 1127.83 (r/w/o: 877.43/250.41/0.00) lat (ms,95%): 669.89 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 32 tps: 83.80 qps: 1521.20 (r/w/o: 1184.00/337.00/0.20) lat (ms,95%): 520.62 err/s: 0.00 reconn/s: 0.00
[ 25s ] thds: 32 tps: 82.20 qps: 1483.12 (r/w/o: 1157.54/324.98/0.60) lat (ms,95%): 549.52 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 32 tps: 92.80 qps: 1657.84 (r/w/o: 1286.83/370.81/0.20) lat (ms,95%): 502.20 err/s: 0.00 reconn/s: 0.00
[ 35s ] thds: 32 tps: 102.00 qps: 1860.43 (r/w/o: 1443.42/416.21/0.80) lat (ms,95%): 419.45 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 32 tps: 104.40 qps: 1867.20 (r/w/o: 1455.00/412.00/0.20) lat (ms,95%): 404.61 err/s: 0.00 reconn/s: 0.00
[ 45s ] thds: 32 tps: 107.60 qps: 1945.43 (r/w/o: 1513.82/430.81/0.80) lat (ms,95%): 467.30 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 32 tps: 116.20 qps: 2085.41 (r/w/o: 1621.81/463.20/0.40) lat (ms,95%): 356.70 err/s: 0.00 reconn/s: 0.00
[ 55s ] thds: 32 tps: 106.00 qps: 1901.77 (r/w/o: 1479.78/421.79/0.20) lat (ms,95%): 450.77 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 32 tps: 115.20 qps: 2071.83 (r/w/o: 1612.02/459.41/0.40) lat (ms,95%): 369.77 err/s: 0.00 reconn/s: 0.00
[ 65s ] thds: 32 tps: 116.00 qps: 2107.41 (r/w/o: 1639.00/467.60/0.80) lat (ms,95%): 344.08 err/s: 0.00 reconn/s: 0.00
[ 70s ] thds: 32 tps: 106.20 qps: 1893.80 (r/w/o: 1470.80/422.20/0.80) lat (ms,95%): 411.96 err/s: 0.00 reconn/s: 0.00
[ 75s ] thds: 32 tps: 112.20 qps: 1998.96 (r/w/o: 1552.37/445.79/0.80) lat (ms,95%): 404.61 err/s: 0.00 reconn/s: 0.00
[ 80s ] thds: 32 tps: 113.40 qps: 2049.22 (r/w/o: 1595.02/453.80/0.40) lat (ms,95%): 344.08 err/s: 0.00 reconn/s: 0.00
[ 85s ] thds: 32 tps: 100.80 qps: 1823.82 (r/w/o: 1420.21/402.40/1.20) lat (ms,95%): 404.61 err/s: 0.00 reconn/s: 0.00
[ 90s ] thds: 32 tps: 114.18 qps: 2054.59 (r/w/o: 1595.88/457.71/1.00) lat (ms,95%): 369.77 err/s: 0.00 reconn/s: 0.00