我正在将我的 MySQL 数据库从裸机设置迁移到 Kubernetes。所以我导出了一个大小约为 8.9GB 的 MySQL 转储,并将 MySQL 转储上传到我的 Kubernetes 主节点上。使用命令插入转储
kubectl exec -it [podname] -n [namespace] -- mysql -u [db user] -p[password] [db name] < [name of the dump].sql
插入速度非常慢,因此我一一导入表以观察其行为。一个 1.8GB 的转储需要 5 个多小时才能完成。
SELECT 命令本身需要 0.013 秒来选择 1000 个条目。批量数据的 INSERT INTO 最多可能需要 72 秒到 120 秒。
我通过互联网搜索,发现 MySQL 转储插入容器的速度很慢。
有没有人有同样的经历?并且可以给我一些加快转储导入速度的线索吗?
我的集群的一些细节
MySQL Pod version: MySQL version 5.7
Kubernetes Version: v1.20.9
File System: btrfs
MySQL Pod 使用 pod 部署进行部署,db 被转储到定义的 pvc 中。
Pod 的 YAML 配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysqldb01
spec:
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
replicas: 1
selector:
matchLabels:
app: mysqldb01
template:
metadata:
labels:
app: mysqldb01
spec:
schedulerName: stork
containers:
- name: mysql
image: mysql:5.7
imagePullPolicy: "Always"
env:
- name: MYSQL_ROOT_PASSWORD
value: xxxxxxxxxxxxxxxxxxxxxxxxx
args:
- --lower_case_table_names=1
ports:
- containerPort: 3306
volumeMounts:
- mountPath: /var/lib/mysql
name: mysql-data
- name: mysql-custom-config
mountPath: /etc/mysql/mysql.conf.d/custom.my.cnf
subPath: my.custom.conf
volumes:
- name: mysql-data
persistentVolumeClaim:
claimName: px-mysql-db01-pvc
- name: mysql-custom-config
configMap:
name: mysql-custom-config
一个master节点和三个worker节点安装了rancher。
Kubernetes 安装使用
curl https://releases.rancher.com/install-docker/20.10.sh | sh
提前致谢。