rbd-db数据迁移至外部数据库

部署外部数据库

  • 安装Docker
 export VERSION=19.03 && curl -fsSL http://rainbond-pkg.oss-cn-shanghai.aliyuncs.com/releases/docker/install-docker.sh | bash -s docker
 systemctl start docker
  • 运行数据库
mkdir -p /opt/rainbond/rbd-db/data/ && docker run --name rbd-db --restart=always -p 3306:3306  -e MYSQL_ALLOW_EMPTY_PASSWORD="yes" -v /opt/rainbond/rbd-db/data:/var/lib/mysql -i registry.cn-hangzhou.aliyuncs.com/goodrain/rbd-db:8.0.19

数据库部署过程仅供参考,可根据自身需求选择数据库部署方式。

相关要求

外部数据库版本要求:MySQL5.7/8.0

Rainbond数据库需要一些特殊配置,配置文件参考如下

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# 服务端默认utf8编码
character-set-server=utf8mb4
# 默认存储引擎
default-storage-engine=INNODB

# Compatible with versions before 8.0
default_authentication_plugin=mysql_native_password
skip-host-cache
skip-name-resolve

[client]
#设置客户端编码
default-character-set=utf8mb4
[mysql]
# 设置mysql客户端默认编码
default-character-set=utf8mb4

迁移数据

注意:数据备份之后请勿在平台上继续进行操作,以免造成数据不一致

  • 获取原来的数据库密码
kubectl exec -it -n rbd-system rbd-db-0 -- env|grep MYSQL_ROOT_PASSWORD
  • 替换变量 MYSQL_ROOT_PASSWORD 后,备份数据库并确认数据是否完整(含有console及region两个库)
kubectl exec  -it  rbd-db-0 -n rbd-system  --  mysqldump -p$MYSQL_ROOT_PASSWORD --all-databases > all.sql
  • 在新的数据库中导入数据

示例命令

mysql -uroot -p数据库密码 < all.sql

修改数据库连接地址

数据导入后,修改Rainbond组件连接数据库主机的IP即可。

  • rbd-app-ui
kubectl edit -n rbd-system deploy rbd-app-ui

    spec:
      containers:
      - env:
        - name: MYSQL_HOST
          value: 172.24.206.76
  • rbd-api
kubectl edit -n rbd-system deploy rbd-api

    spec:
      containers:
      - args:
        - --mysql=root:31771251@tcp(172.24.206.76:3306)/region
  • rbd-chaos
kubectl edit -n rbd-system ds rbd-chaos

      containers:
      - args:
        - --hostIP=$(POD_IP)
        - --mysql=root:31771251@tcp(172.24.206.76:3306)/region
  • rbd-worker
kubectl edit -n rbd-system deploy rbd-worker
    spec:
      containers:
      - args:
        - --mysql=root:31771251@tcp(172.24.206.76:3306)/region
  • rbd-eventlog
kubectl edit -n rbd-system sts  rbd-eventlog

    spec:
      containers:
      - args:
        - --db.url=root:31771251@tcp(172.24.206.76:3306)/region

验证

1.查看Rainbond组件是否处于Running状态

$ kubectl get pod -n rbd-system
NAME                                         READY   STATUS      RESTARTS   AGE
dashboard-metrics-scraper-754cdcbbb6-pckfj   1/1     Running     1          28h
kubernetes-dashboard-57b897f8df-8hkrv        1/1     Running     1          28h
nfs-provisioner-0                            1/1     Running     1          28h
rainbond-operator-0                          2/2     Running     2          28h
rbd-api-564f456468-4w9xj                     1/1     Running     1          28h
rbd-app-ui-64c7c55995-svg56                  1/1     Running     1          28h
rbd-app-ui-migrations-k5jwd                  0/1     Completed   0          28h
rbd-chaos-htwr2                              1/1     Running     1          28h
rbd-db-0                                     2/2     Running     2          28h
rbd-etcd-0                                   1/1     Running     1          28h
rbd-eventlog-0                               1/1     Running     1          28h
rbd-gateway-sz7wf                            1/1     Running     1          28h
rbd-hub-85b7b94846-kbffc                     1/1     Running     1          28h
rbd-monitor-0                                1/1     Running     1          28h
rbd-mq-989c5549c-8p8n4                       1/1     Running     1          28h
rbd-node-5c887                               1/1     Running     1          23h
rbd-node-bndzh                               1/1     Running     1          28h
rbd-node-s2mnc                               1/1     Running     1          22h
rbd-repo-0                                   1/1     Running     1          28h
rbd-webcli-84969b7fc5-zm7tw                  1/1     Running     1          28h
rbd-worker-78b6dc8fc4-rxd7p                  1/1     Running     1          28h

2.登录平台查看应用数量,组件数量是否和迁移前一致

数据迁移完毕删除rbd-db服务,到此完成数据迁移

 kubectl delete rbdcomponents.rainbond.io rbd-db -n rbd-system
原文地址:https://www.cnblogs.com/Aaron-23/p/14120530.html