首页 > 解决方案 > 我的 Kuberenetes MySQL Pod 的 MySQL Dump 导入速度超慢

问题描述

我正在将我的 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

提前致谢。

标签: mysqldockerkubernetesmysqldumpslow

解决方案


推荐阅读