Graylog 的高效運作仰賴 MongoDB(系統配置)、Graylog DataNode(索引/日誌存儲)及各項配置檔。經常備份這三者,是保障服務可用與災難恢復的基礎。以下將介紹如何於 Docker Compose 環境下執行最基本的備份操作。
利用 docker exec 於容器內執行 mongodump,並將資料複製至主機:
docker exec <mongodb_container_name> mongodump --db=graylog --archive=/tmp/graylog.archive
docker cp <mongodb_container_name>:/tmp/graylog.archive ./backup/graylog.archive
還原則使用 mongorestore:
docker cp ./backup/graylog.archive <mongodb_container_name>:/tmp/graylog.archive
docker exec <mongodb_container_name> mongorestore --archive=/tmp/graylog.archive
DataNode 的資料通常透過 Docker volume 持久化(如 docker-compose.yml 中的 graylog-datanode:/var/lib/graylog-datanode)。
備份方法如下:
# 備份 DataNode 數據
docker run --rm \
-v graylog-datanode:/data \
-v $(pwd)/backup:/backup \
alpine \
tar -czvf /backup/datanode_backup.tar.gz -C /data .
還原只需同樣將 tar 檔回存 Volume:
docker run --rm \
-v graylog-datanode:/data \
-v $(pwd)/backup:/backup \
alpine \
tar -xzvf /backup/datanode_backup.tar.gz -C /data
通常 Graylog docker-compose 會將資料目錄掛載於 volume(如 graylog_data:/usr/share/graylog/data/data),可用 tar 複製:
docker run --rm \
-v graylog_data:/config \
-v $(pwd)/backup:/backup \
alpine \
tar -czvf /backup/graylog_config.tar.gz -C /config .
開發環境可只備份 MongoDB 或 DataNode 核心資料,操作簡單,毀損後可快速重建。
生產環境需每日自動排程完整備份全部 volume,建議異地/雲端儲存以及加密,並應定期測試還原流程,確保災難下能迅速復原。