Backup mongodb to GCP storage with crontab
情況是要把原本寫入 local mongodb 的 usage log dump 出 csv 檔案(並且從mongodb內刪除),並且把較舊的 csv 檔案移去 GCP storage。
情況是要把原本寫入 local mongodb 的 usage log dump 出 csv 檔案(並且從mongodb內刪除),並且把較舊的 csv 檔案移去 GCP storage。
遇到的情況是要在 ubuntu 機器上 mount 非 public access 的 gcp storage bucket,然後要給 php web api 做讀寫。
主要是使用 gcsfuse 這個工具,還有就是使用 Google\Cloud\Storage\StorageClient 這個套件
預設 gcp instance 是只能用 ssh key based 登入,而如果沒有幫 root 帳號(或者要執行 rsync 的帳號)產生 ssh key,那等於無法使用 rsync 這個命令。
這篇文章整理得很好,把落落長的 gitlab 官方文章變得精簡許多。
很多人都知道之前 gitlab 裏頭的工程師不小心 rm -rf 的事件,所以當然要做好備份。 在 google cloud 的機器可以乾脆直接寫 crontab 定期做 snapshot,不過這樣的方式也不能防止手殘砍掉負責跑這 crontab 的 instance 就是了 XD #!/usr/bin/env bash export PATH=$PATH:/usr/local/bin/:/usr/bin #create snapshot echo “$(gcloud compute disks snapshot my-webserver –snapshot-names=www-$(date “+%Y%m%d”) –zone=asia-east1-c)” #get snapshot list SNAPSHOT_LIST=”$(gcloud compute snapshots list –regexp “(.*www-.*)” –uri)” echo “${SNAPSHOT_LIST}” | while read line ; do # get the snapshot […]
目前看來有兩個方式,都可以 work