部署和維護 / 備份和遷移
本文主要介紹如何備份和遷移 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 在啓動容器時進行無意義的鏡像檢查