部署和維護 / 備份和遷移
本文主要介紹如何備份和遷移 DataFlux Func 數據。
1. 數據庫備份
DataFlux Func 會自動定期備份數據庫為 .sql 文件,並保存在 DataFlux Func 數據庫備份目錄 下。
本功能通過 mysqldump 備份數據庫,連接數據庫的 MySQL 用户需要足夠的權限才能正常備份,包括:
SELECTRELOADLOCK TABLESREPLICATION CLIENTSHOW VIEWPROCESS
自動備份的內容包含:
- 完整的數據庫建表結構
- 除日誌、操作記錄外的所有數據
默認情況下,數據庫備份文件保存位置如下:
| 環境 | 位置 |
|---|---|
| 容器內 | /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=oncharacter-set-server=utf8mb4collation-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 在啓動容器時進行無意義的鏡像檢查