迁移 Rancher 1 内部数据库至外部数据库

前言

   近期公司要从阿里云青岛节点迁移到张家口节点,张家口节点早几个月购买了几台服务器,并搭建和部署了rancher环境,在迁移过程中,发现新环境rancher采用的是内置数据库方式,为了方便后期维护,于是将内部数据库迁移至外部数据库,发文记录下具体步骤。

步骤

查看容器内部mysql版本

进入rancher容器,查看容器内部mysql版本

进入容器

script
1
docker exec -it <container_name_of_original_server> /bin/bash

查看内部mysql版本

script
1
mysql -v

停止正在运行的rancher容器

script
1
docker stop <container_name_of_original_server>

复制容器数据目录

将数据库文件复制到服务器容器之外。

script
1
docker cp <container_name_of_original_server>:/var/lib/mysql <path on host>

创建并启动mysql镜像

创建并启动mysql镜像,并指定数据文件路径为上一步复制出来的文件目录。

script
1
docker run --name mysql -v <path on host>:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<MYSQL_ROOT_PASSWORD> mysql:<容器内部MYSQL版本>

创建新的数据库和用户

script
1
2
3
4
5

CREATE DATABASE IF NOT EXISTS cattle COLLATE = 'utf8_general_ci' CHARACTER SET = 'utf8';
> GRANT ALL ON cattle.* TO 'cattle'@'%' IDENTIFIED BY 'cattle';
> GRANT ALL ON cattle.* TO 'cattle'@'localhost' IDENTIFIED BY 'cattle';

外部数据库方式创建rancher镜像

script
1
2
docker run -d --restart=unless-stopped -p 8080:8080 rancher/server \
--db-host myhost.example.com --db-port 3306 --db-user username --db-pass password --db-name cattle

注:rancher会自动建表。

导入数据到使用的外部数据库

停止运行的rancher容器,连接刚才创建的mysql数据库,用户名/密码:cattle/cattle,将数据导入至使用的外部数据库中。

注意:保留databasechangelogdatabasechangeloglock 表和表内数据。否则rancher还会执行建表操作。

启动rancher容器,迁移完成

script
1
docker start <container_name_of_original_server>

迁移 Rancher 1 内部数据库至外部数据库

https://pingfangushi.com/posts/0/

作者

SanLi

发布于

2020-11-30

更新于

2021-07-08

许可协议