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

准备工作,使用rainbond平台默认的rbd-db组件搭建外部数据库

  • 在数据库节点安装docker
  1. # 安装docker
  2. export VERSION=18.06 && curl -fsSL http://rainbond-pkg.oss-cn-shanghai.aliyuncs.com/releases/docker/install-docker.sh | bash -s docker
  3. # 启动docker
  4. systemctl start docker
  5. # 拉取rbd-db镜像
  6. docker pull rainbond/rbd-db:latest
  7. # 提前在数据库节点创建持久化目录
  8. mkdir -p /opt/rainbond/data/
  9. # 创建数据库配置文件目录
  10. mkdir -p /opt/rainbond/etc/
  11. # 启动数据库
  12. docker run --name rbd-db -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD="yes" -v /opt/rainbond/data/rbd-db:/data -v /opt/rainbond/etc/rbd-db:/etc/mysql -i rainbond/rbd-db:latest
  13. # 确认是否启动成功
  14. ss -lntp|grep :3306

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

  1. # 备份数据
  2. kubectl exec -it rbd-db-0 -n rbd-system -- mysqldump --all-databases > all.sql
  3. # 查看数据备份是否成功
  4. cat all.sql
  5. # 将数据拷贝到数据库目的迁移节点中
  6. scp all.sql 10.10.10.11:/tmp/
  • 在存储节点的Mysql导入数据
  1. # 查看rbd-db服务容器
  2. docker ps
  3. # 拷贝数据库备份文件到容器中
  4. docker cp /tmp/all.sql <CONTAINER ID>:/tmp
  5. # 进入容器
  6. docker exec -it <CONTAINER ID> bin/bash
  7. # 导入数据
  8. mysql -uroot -p < /tmp/all.sql
  9. flush privileges

修改数据库连接地址

在首个管理节点需要修改rbd-app-ui配置

  • 因数据已经导入,只需修改指向数据库主机的IP即可

修改rbd-app-ui组件连接地址

  1. kubectl edit deployment rbd-app-ui -n rbd-system
  2. containers:
  3. - env:
  4. - name: MYSQL_HOST
  5. value: rbd-db #修改此处的连接地址
  6. - name: MYSQL_PORT
  7. value: "3306"
  8. - name: MYSQL_USER
  9. value: rite
  10. - name: MYSQL_PASS
  11. value: e59e8773
  12. - name: MYSQL_DB
  13. value: console

修改rbd-api组件连接地址

  1. kubectl edit deployment rbd-api -n rbd-system
  2. containers:
  3. - args:
  4. ...
  5. - --mysql=mysql_user:mysql_pass@tcp(mysql_host:mysql_port)/region #修改mysql_host和mysql_port为新的地址和端口即可
  6. ...

修改rbd-chaos组件连接地址

  1. kubectl edit daemonsets rbd-chaos -n rbd-system
  2. containers:
  3. - args:
  4. ...
  5. - --mysql=mysql_user:mysql_pass@tcp(mysql_host:mysql_port)/region #修改mysql_host和mysql_port为新的地址和端口即可
  6. ...

修改rbd-worker组件连接地址

  1. kubectl edit deployments rbd-worker -n rbd-system
  2. containers:
  3. - args:
  4. ...
  5. - --mysql=mysql_user:mysql_pass@tcp(mysql_host:mysql_port)/region #修改mysql_host和mysql_port为新的地址和端口即可
  6. ...

修改rbd-eventlog组件连接地址

  1. kubectl edit deployments rbd-eventlog -n rbd-system
  2. containers:
  3. - args:
  4. ...
  5. - --db.url=mysql_user:mysql_pass@tcp(mysql_host:mysql_port)/region #修改mysql_host和mysql_port为新的地址和端口即可
  6. ...

最后查看集群状态

  1. grctl cluster

登录平台查看应用状态

数据迁移完毕停止rbd-db服务,到此完成数据迁移