跳轉到

部署和維護 / 備份和遷移

本文主要介紹如何備份和遷移 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 在啟動容器時進行無意義的映象檢查