# 備份同時存取 ## Influxdb: - #### 備份data的時間點: 按照官網說明應該是在執行備份當下時間點的snapshot - #### 備份是否會導致lock住user操作: 不會 - #### 還原後的data有無資料錯誤風險: 沒有。influxdb備份後會自動壓縮成tar.gz檔,若檔案損壞應該會無法還原。備份內容為備份時間點的snapshot,沒有操作中造成備份內容錯誤的風險。 - #### 實際測試: 測試寫入資料及備份同時進行都沒有發生錯誤,但沒有實際檢查過data是不是執行備份前的狀態 參考資料: https://docs.influxdata.com/influxdb/v1.8/administration/backup_and_restore/ http://www.blog.sun-iot.xyz/posts/55aac069#3-2-1-%E6%95%B0%E6%8D%AE%E5%A4%87%E4%BB%BD%E6%96%B9%E5%BC%8F ## Mongodb: - #### 備份data的時間點: 沒有找到資料,根據觀察是mongodb執行指令的時候會先找出有多少data,但是如果備份途中不斷有data寫入也會一起備份下來,有看過備份結束時data量超過100%的情形。 - #### 備份是否會導致lock住user操作: 不會 - #### 還原後的data有無資料錯誤風險: 資料本身不會有錯誤,但app有可能遇到。當collection(A)和collection(B)被互相關聯的app使用,在collection(A)已備份完成,但collection(B)還沒被備份到的時間點進行操作,可能造成還原後兩個app需要互相參照的功能發生錯誤 - #### 實際測試: 沒有遇過因操作db而卡住的情形。insert同時backup,出現了dump進度>100%的狀況,但當時沒有截圖。 參考資料: https://jira.mongodb.org/browse/TOOLS-1178 https://stackoverflow.com/questions/14825557/does-mongodump-lock-the-database ## Postgresql: - #### 備份data的時間點: pg_dump指令執行當下。pg_dumpall會逐個db呼叫pg_dump,所以每個db被備份到的時間點會有落差。 - #### 備份是否會導致lock住user操作: Alter table這類操作會lock,原因是如果備份途中column被改變備份必定會失敗(influxdb和mongodb的特性應該是不會造成這個問題) - #### 還原後的data有無資料錯誤風險: 資料本身不會有錯誤,但app有可能遇到。類似mongodb的情況,直接舉例來說,若已經備份了service manager用的db,剛好這時service hub再收到請求轉call service manager,service hub會多存一筆新資料,接著再備份service hub的db,這樣還原就會發生兩個app間資料錯誤的狀況了,service hub裡存在的instance 不存在於service manager。但發生機率並不高,若發生了需要人工修復(刪除service hub多出來的那筆即可)。 - #### 實際測試: 沒有遇過因操作db而卡住的情形。 參考資料: https://ravenonhill.blogspot.com/2018/06/pgsql-10-pgbasebackup-imporvement.html https://docs.postgresql.tw/reference/client-applications/pg_basebackup https://github.com/Vonng/pg/blob/master/admin/backup-overview.md 重點節錄 - pg_dump的备份是内部一致的,是转储开始时刻的数据库快照,转储期间的更新不被包括在内。 - pg_dump不会阻塞其他数据库操作,但需要排它锁的命令除外(例如大多数 ALTER TABLE) - pg_dumpall工作步骤是,先创建角色、表空间转储,再为每一个数据库做pg_dump。这意味着每个数据库自身是一致的,但是不同数据库的快照并不同步 - pg_basebackup具有檢查點功能,可以備份WAL但無法遠端恢復
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up