在大資料時代,由於資料庫需要儲存的資料量比較過去關係型資料庫要大很多,所以直接參照關係型資料庫定期備份檔案的策略,可能在備份和恢復操作上都需要耗費大量的硬體資源,並且備份和恢復耗時可能也會相對較長。所以在大資料時代,分布式資料庫的安全備份的策略不再建議採用定期備份的方式,而是直接由資料庫通過資料冗餘的方式來保證資料的安全。
資料冗餘的機制即是當應用程式向資料庫中寫入或者更新一條新記錄時,資料庫自動將此新操作實時同步到多台物理伺服器中,確保多台伺服器同時儲存相同的資料,從而實現資料庫的高可用機制。
但是在一些客戶的生產環境中,客戶出於對資料安全方面更嚴格的考慮,還是希望能夠對整個資料庫進行定期的資料備份,以便在未來系統出現異常時,能夠在災難環境中進行資料恢復。
管理員在對sequoiadb集群做資料備份和恢復工作時,應該要時刻注意分布式資料庫與關係型資料庫的不同,即資料備份和恢復都會涉及到多台伺服器的資料庫服務,而不只是在某一台伺服器上做相應的操作。
管理員在做資料備份前,應該先對sequoiadb集群做乙個基本的了解,並且預先檢查一下備份的機器儲存空間是否足夠,和選擇乙個業務閒時的時段進行資料備份
管理員對sequoiadb集群做全量資料備份,將採用直接拷貝資料目錄的方式完成。
全量備份方式:
a) 該節點被部署在哪個機器上
b) 該節點的資料檔案被儲存在哪個路徑下
# su – sdbadmin
# /opt/sequoiadb/bin/sdbstop -p servicename
servicename
為備份節點的服務埠號,此資訊可以通過
db.listreplicagroups()
獲得# cp -rf backofnodedbpath backoffilepath/
backofnodedbpath
為備份節點的資料存放路徑,此資訊可以通過db.listreplicagroups()獲得
backoffilepath
為臨時存放備份資料路徑,此路徑由管理員自行決定
# /opt/sequoiadb/bin/sdbstart -c /opt/sequoiadb/conf/local/servicename
servicename
為備份節點的服務埠號,此資訊可以通過
db.listreplicagroups()
獲得管理員對sequoiadb集群進行增量備份,將採用定期拷貝資料庫節點的日誌檔案方法實現。
在sequoiadb集群中,每乙個節點都擁有自己的資料庫日誌檔案,日誌檔案中記錄了該節點執行過的所有操作,所以增量備份可以使用乙個指令碼工具定期檢查日誌檔案,將最新的日誌檔案資訊資料備份。
定期檢查日誌檔案工具為
sdb_tar_log.sh
,管理員在執行指令碼前,需要手工修改指令碼中的配置引數
src_dir=/sequoiadb/database/data/11910/replicalog
dst_dir=./tests/
loop_time=3
name="group1_node1"
src_dir
,為備份節點的日誌檔案路徑(dbpath)
dst_dir
,為臨時儲存新增日誌檔案的路徑,有管理員自行定義,但是要確保此路徑操作使用者可以訪問並且擁有寫許可權,另外乙個需要注意,此路徑必須剩餘充足的可用空間,保證新增日誌檔案可以寫成功
loop_time
,為檢測間隔週期,預設為3秒
name
,新增日誌檔案的名字字首,此引數可以由管理員自行定義,但是建議命名規則和節點的角色和埠號相關,方便日誌運維管理
檢查日誌指令碼的執行方式如下
# nohup sh sdb_tar_log.sh &
該指令碼將會持續檢查,預設情況下,指令碼每過3秒鐘就會檢測一次節點日誌路徑,當發現乙個日誌檔案被寫完,就會拷貝最新被寫完的日誌檔案到
dst_dir
路徑。管理員在對備份檔案做資料恢復時,應該確認sequoiadb集群中的環境已經無法恢復,並且通過
db.listreplicagroups()
命令了解了整個集群的部署情況和對應的資料節點路徑。
全量資料恢復,由於之前備份的策略為備份整個資料節點的所有檔案,所以在恢復時,只要將老的資料檔案全部刪除,再將備份的檔案替換原有資料檔案路徑,再重啟資料節點,就完成了資料恢復動作。
管理員在做資料恢復時,一定要注意
l 恢復的節點一定要先停止
l 由於sequoiadb的複製組在生產環境中,一般是多副本的,即乙份資料是在多台物理機器上儲存的,所以在做資料恢復時,也需要同時恢復冗餘的資料節點
具體的恢復步驟
# /opt/sequoiadb/bin/sdb
> var db = new sdb("localhost", 11810);
> var rg = db.getrg("groupname");
> rg.stop();
groupname
,是需要停止的複製組的名字,該資訊可以通過
db.listreplicagroups()
獲 rm -rf dbpath;
注意,由於在生產環境中,乙個複製組的資料通常是儲存在多台伺服器上,所以在刪除資料檔案時,也需要在多台機器中同時執行刪除操作,複製組的節點資訊可以通過
db.listreplicagroups()
獲 cp -rf backoffilepath/backoffile dbpath
dbpath;
注意,由於在生產環境中,乙個複製組的資料通常是儲存在多台伺服器上,所以在拷貝資料檔案時,也需要在多台機器中同時執行拷貝操作,複製組的節點資訊可以通過
db.listreplicagroups()
獲得# /opt/sequoiadb/bin/sdb
> var db = new sdb("localhost", 11810);
> var rg = db.getrg("groupname");
> rg.st
art();
在本次備份、恢復方案中,增量備份採用拷貝節點資料庫日誌的方式實現,所以在增量資料恢復時,也是依賴於資料庫日誌。
sequoiadb提供了乙個可以完整解析所有資料庫日誌的工具
--sdbreplay,它支援將資料庫日誌解析成可執行命令,同時也支援將資料庫日誌解析成視覺化文字。管理員通過sdbreplay就可以快速將已經備份的資料庫日誌進行資料庫增量資料恢復。
sdbreplay工具比較重要的引數有
l --host,指定連線sequoiadb引擎的機器名
l --
svc,指定連線sequoiadb引擎的埠號
l --path
,指定讀取的資料庫日誌目錄
l --fninsdb
,指定資料庫節點日誌的配置檔案個數
l --fzinsdb
,指定資料庫節點日誌的配置大小
l --dump
,視覺化輸出解析日誌資訊
l --
filter,解析後的資訊過濾條件
fninsdb
和fzinsdb
引數需要管理員通過shell命令檢視sequoiadb對應節點的配置檔案獲得
檢視命令如下
# cat /opt/sequoiadb/conf/local/servicename/sdb.conf
配置檔案中的資訊一般如下:
svcname=11910
dbpath=/sequoiadb/database/data/11910
logfilenum=2
logfiles
z=64
role=data
catalogaddr=chen:11803
logfilenum
的值即對應
fninsdb
,如果配置檔案中無此引數,則為預設值20
logfiles
z的值即對應
fzinsdb
,如果配置檔案中無此引數,則為預設值64,如果配置檔案中的引數小於64,請在執行sdbreplay時,設定log
files
z=64
注:servicename
為對應節點的埠號
產品特性
解決方案與案例
技術文件
mysql 備份與恢復 MySQL 備份與恢復
1 檢視資料庫的資料儲存在哪個目錄下 shiyanlou mysql uroot e show variables like datadir variable name value datadir var lib mysql 2 備份資料的方法 select into outfile 檔名 或者 s...
mysql 備份與恢復 Mysql 備份與恢復
資料檔案一致性處理 在完全備份的情況下,檔案不是時間點一致的,因為進行快照的時間點不一樣。如果嘗 試在未prepare資料的情況下還原資料庫,雖然操作上支援恢復,但是在啟動的時候仍會 進行資料recovery。執行帶 prepare 選項的 mariabackup 命令會使資料檔案進行統一,達到資料...
備份與恢復
一 需要備份的資料 1 linux需要備份的資料 a root 目錄 b home 目錄 c var log 目錄 d etc 目錄 2 apache需要備份的資料 a 配置檔案 b 網頁目錄 c 日誌檔案 3 mysql需要備份的資料 1 原始碼包安裝的mysql usr local mysql ...