跳轉至

部署和維護 / 備份和遷移

本文主要介紹如何備份和遷移 DataFlux Func 數據。

1. 數據庫備份

DataFlux Func 會自動定期備份數據庫為 .sql 文件,並保存在 DataFlux Func 數據庫備份目錄 下。

本功能通過 mysqldump 備份數據庫,連接數據庫的 MySQL 用户需要足夠的權限才能正常備份,包括:

  • SELECT
  • RELOAD
  • LOCK TABLES
  • REPLICATION CLIENT
  • SHOW VIEW
  • PROCESS

自動備份的內容包含:

  1. 完整的數據庫建表結構
  2. 除日誌、操作記錄外的所有數據

默認情況下,數據庫備份文件保存位置如下:

環境 位置
容器內 /data/sqldump/
宿主機內 {安裝目錄}/data/sqldump/

默認情況下,數據庫備份文件每小時整點備份一次,最多保留 7 天(共 168 份),文件命名規則如下:

Text Only
1
dataflux-func-sqldump-YYYYMMDD-hhmmss.sql

2. 導出 / 導入數據庫

除了 DataFlux Func 自帶的定期數據庫備份,您也可以直接使用 mysqldump 導出和導入數據。

2.1 導出數據

導出操作的參考命令如下:

Bash
1
docker exec {MySQL 容器 ID} sh -c 'exec mysqldump --user=root --password="$MYSQL_ROOT_PASSWORD" --hex-blob --default-character-set=utf8mb4 --skip-extended-insert --databases dataflux_func' > {宿主機上的備份文件}

2.2 導入數據

導入操作的參考命令如下:

Bash
1
docker exec -i {MySQL 容器 ID} sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < {宿主機上的備份文件}

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
# MySQL連接配置
MYSQL_HOST    : '127.0.0.1'    # MySQL 連接地址
MYSQL_PORT    : 3306           # MySQL 端口號
MYSQL_USER    : root           # MySQL 用户名
MYSQL_PASSWORD: ''             # MySQL 密碼
MYSQL_DATABASE: dataflux_func  # MySQL 數據庫名

# Redis連接配置
REDIS_HOST    : '127.0.0.1'    # Redis 連接地址
REDIS_PORT    : 6379           # Redis 端口號
REDIS_DATABASE: 5              # Redis 數據庫號(建議:為避免與其他應用衝突,不要使用默認數據庫 0 )
REDIS_PASSWORD: ''             # Redis 密碼(沒有密碼留空)
REDIS_USE_TLS : false          # Redis 連接 TLS 支持(true / false)

3.4 修改 Docker Stack 配置

找到 Docker Stack 配置 docker-stack.yaml,刪除其中的 MySQL 和 Redis 相關部分(註釋掉即可)

3.5 重啓 DataFlux Func

根據 部署和維護 / 升級和重啓 重啓整個 DataFlux Func

4. 更換安裝目錄

某些情況下,可能會遇到原先安裝 DataFlux Func 的磁盤容量不夠,需要更換安裝目錄到新的大容量磁盤上。

那麼,可以按照如下操作步驟進行安裝目錄的更換。

4.1 關停 DataFlux Func

  1. 使用 docker stack rm dataflux-func 命令,關停 DataFlux Func(此步驟可能需要一定時間)
  2. 使用 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
 version: '3.1'

 services:
   # 其他內容略
   server:
     image: dataflux-func.com/dataflux-func:x.y.z
     labels:
       - server
     volumes:
-      - "/usr/local/dataflux-func/data:/data"
+      - "/my-workspace/dataflux-func/data:/data"
     networks:
       - datafluxfunc
       - default
     ports:
       - "8088:8088"
     command: ./run-server.sh

 # 其他內容略
  1. 使用 docker stack deploy dataflux-func -c {安裝目錄}/docker-stack.yaml --resolve-image never 重啓所有服務

由於安裝包中的鏡像文件本身已經導入本地,加上 --resolve-image never 參數可以避免 Docker 在啓動容器時進行無意義的鏡像檢查