部署和维护 / 备份和迁移
本文主要介绍如何备份和迁移 DataFlux Func 数据。
1. 数据库备份
DataFlux Func 会自动定期备份数据库为.sql
文件,并保存在 DataFlux Func 数据库备份目录 下。
本功能通过mysqldump
备份数据库,连接数据库的 MySQL 用户需要足够的权限才能正常备份,包括:
SELECT
RELOAD
LOCK TABLES
REPLICATION CLIENT
SHOW VIEW
PROCESS
自动备份的内容包含:
- 完整的数据库建表结构
- 除日志、操作记录外的所有数据
默认情况下,数据库备份文件保存位置如下:
环境 | 位置 |
---|---|
容器内 | /data/sqldump/ |
宿主机内 | {安装目录}/data/sqldump/ |
默认情况下,数据库备份文件每小时整点备份一次,最多保留 7 天(共 168 份),文件命名规则如下:
Text Only | |
---|---|
1 |
|
2. 导出 / 导入数据库
除了 DataFlux Func 自带的定期数据库备份,您也可以直接使用mysqldump
导出和导入数据。
2.1 导出数据
导出操作的参考命令如下:
Bash | |
---|---|
1 |
|
2.2 导入数据
导入操作的参考命令如下:
Bash | |
---|---|
1 |
|
3. 迁移数据库
如系统安装后通过了最初的单机验证阶段,需要将数据库切换至外部数据库(如:阿里云 RDS、Redis),可根据以下步骤进行操作:
当使用外部数据库时,应确保 MySQL 版本为 5.7 及以上,Redis 版本为 5.0 及以上
DataFlux Func 不支持集群部署的 Redis
3.1 确认环境
在外部数据库实例中创建数据库,且确保如下配置项:
innodb-large-prefix=on
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
3.2 导入数据
根据上文「数据库备份」找到最近的 MySQL 数据库备份文件,将其导入外部数据库
3.3 修改 DataFlux Func 配置
找到 DataFlux Func 配置 user-config.yaml
,并根据实际情况添加 / 修改以下字段内容:
YAML | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
3.4 修改 Docker Stack 配置
找到 Docker Stack 配置 docker-stack.yaml
,删除其中的 MySQL 和 Redis 相关部分(注释掉即可)
3.5 重启 DataFlux Func
根据 部署和维护 / 升级和重启 重启整个 DataFlux Func
4. 更换安装目录
某些情况下,可能会遇到原先安装 DataFlux Func 的磁盘容量不够,需要更换安装目录到新的大容量磁盘上。
那么,可以按照如下操作步骤进行安装目录的更换。
4.1 关停 DataFlux Func
- 使用
docker stack rm dataflux-func
命令,关停 DataFlux Func(此步骤可能需要一定时间) - 使用
docker ps
确认所有容器都已经退出
4.2 移动安装目录
使用cp {安装目录} {新安装目录}
命令,将 DataFlux Func 的整个安装目录拷贝至新的位置。
4.3 修改安装目录记录
打开/etc/dataflux-func
,将其中记录的安装目录更改为新的安装目录。
4.4 修改 Docker Stack 配置
找到 Docker Stack 配置 docker-stack.yaml
,将所有volumes
涉及安装目录的内容都改为新的安装目录,如:
Diff | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
- 使用
docker stack deploy dataflux-func -c {安装目录}/docker-stack.yaml --resolve-image never
重启所有服务
由于安装包中的镜像文件本身已经导入本地,加上 --resolve-image never 参数可以避免 Docker 在启动容器时进行无意义的镜像检查