Fastore數據庫備份恢復和日常維護
上篇文章給大家具體講解了Fastore數據庫部署安裝,這篇文章再展開給大家講解下Fastore數據庫備份恢復和日常維護,希望能對你們有所幫助,創作不易,如果喜歡請點個關注支持一下!一、備份恢復概述
在數據庫運行前或數據遷移時,將數據通過各種手段鏡像拷貝到備份媒質上。 在數據庫運行過程中,使用運行在數據庫中的備份工具對數據庫進行備份。 當FaStore運行正常時,將共享內存中數據庫拷貝到磁盤。全量備份通過gmbar工具備份持久化文件(Redo日志文件和Data文件)。 當FaStore運行正常時,將共享內存中數據庫表定義和表數據以文本方式導出。邏輯備份通過gmdcp工具備份表定義和表數據。 業務系統的數據庫損壞,不能通過故障定位、動態恢復等手段修復的情況下而采用基線恢復至最近一次基線狀態,并根據實際情況采用動態恢復將業務系統恢復至最近一次備份前的狀態。 業務系統的數據庫或業務程序因客觀因素,例如誤操作等,損壞單個或多個數據,根據實際情況進行動態恢復將業務系統恢復至最近一次備份前的狀態。二、全量備份
全量備份是指按一定時間隔保留數據庫的多個歷史備份,當持久化文件異常、誤操作時恢復數據庫。
建議每天定時自動觸發進行一次全量備份。需要手工執行全量備份的典型場景如下: FaStore運行正常時,持久化文件(Redo日志文件和Data文件)損壞。 FaStore運行正常時,持久化文件(Redo日志文件和Data文件)無法使用。 Redo日志文件和Data文件。其中Data文件存放在Data目錄,Redo日志文件存放在Redo目錄,Data目錄路徑和Redo目錄路徑在配置文件“${GMDB_HOME}/config/server.ini”中配置。如果“DATA_PATH”和“REDO_PATH”配置項值為空,則“DATA_PATH”和“REDO_PATH”默認值為“${GMDB_HOME}/data”和“${GMDB_HOME}/redo”。4.1 創建備份目錄:
假設備份目錄為“backup_dir”,“backup_dir”目錄的空閑空間需要大于Data目錄和Redo目錄使用空間的總和。4.2 檢查gmserver進程是否正常:
gmp系統顯示類似如下信息,表明gmserver進程運行正常。UID PID PPID %CPU START TTY TIME CMD
gmdb 20240 1 32.4 00:39 pts/6 00:55:12 gmserver
“backup_path”為備份目錄“backup_dir”的絕對路徑,“-c”表示采用壓縮方式備份。gmbar -b /backup_dir -c
<97 fastore11 [gmdb1] /home/gmdb1>gmbar -b /backup_dir -c
Backup device ... [100%].
Backup redolog ... [100%].
Backup database to /backup_dir success.
4.4 檢查備份文件:
ls -l /backup_dir
<98 fastore11 [gmdb1] /home/gmdb1>ls -l /backup_dir
total 0
drwx------ 1 gmdb1 onip 44 Sep 15 16:03 gmdb_data_bak
三、邏輯備份
邏輯備份是指將數據庫中表定義和表數據以文本方式導出,當數據庫存儲數據異常時,恢復數據。 建議每天定時自動觸發進行一次邏輯備份。需要手工執行邏輯備份的典型場景如下:5.1 創建備份目錄:
假設備份目錄為“txt_backup_dir_date”,“txt_backup_dirdate”目錄的空閑空間大于內存數據庫總大小。5.2 檢查gmserver進程是否正常:
gmp系統顯示類似如下信息,表明gmserver進程運行正常。UID PID PPID %CPU START TTY TIME CMD
gmdb 20240 1 32.4 00:39 pts/6 00:55:12 gmserver
gmdcp -c /as dba -e -p /backup_dir/txt_backup_dir
注:-c參數輸入連接串,-e參數指定導出操作,-p參數指定到處目錄,可根據參數指定導入導出操作以及多帶帶導出表結構表數據等。
<114 fastore11 [gmdb1] /backup_dir/txt_backup_dir>gmdcp -c /as dba -e -p /backup_dir/txt_backup_dir
Start to export definition...
Export definition of user "sysman" successfully.
Export definition of table "sys.fastore_jobs" successfully.
Export definition successfully.
Start to export data...
Export "sys.fastore_jobs" successfully.
Export data successfully.
All job finished, total time 0.154 seconds.
5.4 檢查文件是否存在:
<115 fastore11 [gmdb1] /backup_dir/txt_backup_dir>ls -l
total 8
-rw------- 1 gmdb1 onip 558 Sep 15 16:13 gmdb.sql
-rw------- 1 gmdb1 onip 386 Sep 15 16:13 sys.fastore_jobs.sql
-rw------- 1 gmdb1 onip 0 Sep 15 16:13 sys.fastore_jobs.unl
全量恢復是指將全量備份生成的持久化文件(Redo日志文件和Data文件)導入到數據庫,恢復數據庫。- >>持久化文件(Redo日志文件和Data文件)正常,共享內存不存在。
全量備份生成的持久化文件(Redo日志文件和Data文件)。4.1 以安裝用戶登錄主機停止數據庫:
4.2 檢查gmserver是否停止:
gmp
gmadm -s gmserver ----強制停止命令
4.3 備份Data目錄和Redo目錄
Data目錄路徑和Redo目錄路徑在配置文件“${GMDB_HOME}/config/server.ini”中配置。如果“DATA_PATH”和“REDO_PATH”配置項值為空,則“DATA_PATH”和“REDO_PATH”默認值為“${GMDB_HOME}/data”和“${GMDB_HOME}/redo”。4.4 清除共享內存:
4.5 系統顯示類似如下信息,表明共享內存已經刪除。Successfully delete shared memory.
4.6 恢復數據庫:
gmbar -r backup_path -force
backup_path為全量備份文件所在路徑,-force表示不顯示提示信息,強制恢復。
load device ... [100%] Flush device ... [100%].
Copy redolog ... [100%].
Rebuild redolog ... [100%].
Restore from file succeed.
4.7 啟動數據庫:
4.8 檢查gmserver進程:
gmsql /as dba "exit;" | grep "Successfully CONNECT to DB"
系統顯示類似如下信息,則表示啟動成功,否則請等待10秒再執行命令檢查。Successfully CONNECT to DB.
4.9 檢查數據庫準確性
五、邏輯恢復
邏輯恢復是指將邏輯備份生成的表定義和表數據文件導入到數據庫,恢復數據。>>數據庫升級成功后導入變更的表定義和表數據。
>>共享內存中存儲數據異常。
4.1 以安裝用戶登錄主機停止數據庫:
4.2 檢查gmserver是否停止:
系統未顯示任何信息,則表示gmserver進程已經停止,否則請等待10秒,再執行命令檢查。 如果gmserver進程仍然在運行,應停止業務進程訪問數據庫,并停止gmserver進程。如果需要強制停止gmserver進程,可以執行如下命令。4.3 備份Data目錄和Redo目錄:
Data目錄路徑和Redo目錄路徑在配置文件“${GMDB_HOME}/config/server.ini”中配置。如果“DATA_PATH”和“REDO_PATH”配置項值為空,則“DATA_PATH”和“REDO_PATH”默認值為“${GMDB_HOME}/data”和“${GMDB_HOME}/redo”。4.4 刪除共享內存:
Successfully delete shared memory.
4.5 啟動數據庫:
4.6 檢查gmserver進程是否啟動正常。
gmsql /as dba "exit;" | grep "Successfully CONNECT to DB"
系統顯示類似如下信息,則表示啟動成功,否則請等待10秒再執行命令檢查。Successfully CONNECT to DB.
4.7 恢復數據庫:
gmdcp -c /as dba -i -p txt_backup_dir_20150130
txt_backup_dir_20150130為邏輯備份文件所在路徑。
Start to import definition ...
Import definition of entire DB successfully.
Import definition successfully.
Start to import data...
Import data successfully.
All job finished, total time 0.124 seconds.
4.8 檢查數據庫準確性
一、管理用戶
1.1 啟動gmsql
<127 fastore11 [gmdb1] /home/gmdb1>gmsql
gmsql V200R005C52SPC230 - Production on Apr 10 2020
SQL>
1.2 使用sys用戶鏈接數據庫
SQL>connect sys/Admin123 ipc;
Connected through DB ...
Successfully CONNECT to DB.(IPC)
1.3 創建用戶賬號:
如果你想創建只有查詢權限的帳戶user_read,并預設其密碼為User_read1(密碼要符合規則,否則會執行失敗,詳細請參見密碼規則),可在gmsql中輸入CREATE USER user_read IDENTIFIED BY User_read1;SQL>CREATE USER user_read IDENTIFIED BY User_read1;
SQL Executed Successfully
2. 修改密碼
1.1 sys密碼管理:
登錄sys用戶:在gmsql中輸入connect sys/password ipc 修改sys密碼:如果新密碼為Newpwd123,則在gmsql中輸入password sysSQL>password sys
Old password:********
New password:********
Retype new password:********
Password changed successfully.
測試密碼連接:CONNECT sys/Newpwd123 ipc; 登錄sys用戶:在gmsql中輸入connect sys/password ipc 修改用戶密碼:如果你想將用戶user_read的密碼改為User_read2,則在gmsql中輸入password sys 測試密碼連接:CONNECT user_read/User_read2 ipc;3. 鎖定賬戶
登錄sys用戶:在gmsql中輸入connect sys/password ipc; 鎖定用戶:ALTER USER user_read ACCOUNT LOCK;4. 解鎖賬戶
登錄sys用戶:在gmsql中輸入connect sys/password ipc; 解鎖用戶:ALTER USER user_read ACCOUNT UNLOCK;5. 刪除賬戶
登錄sys用戶:在gmsql中輸入connect sys/password ipc; 刪除用戶:DROP USER user_read;6. 審計賬戶
登錄sys用戶:在gmsql中輸入connect sys/password ipc; 審計賬戶:假如你要對用戶帳戶的DML操作進行審計,可在gmsql中輸入ALTER USER user_read SET AUDIT DML ON;,然后執行。二、管理權限
1. 創建角色
- FaStore數據庫默認的管理員帳戶為sys,僅sys用戶具有創建角色的權限。
- 角色名稱最長為30個字符,可以包含大小寫字母、數字及下劃線,首字符必須為字母。
1.2 登錄sys用戶:在gmsql中輸入connect sys/password ipc;1.3 創建角色:CREATE ROLE rolename;1.4 查看角色:SELECT * FROM sys.SYSROLES;2. 授予系統權限給用戶或自定義角色
- FaStore數據庫默認的管理員帳戶為sys,僅sys用戶具有授予系統權限的權限。
2.2 登錄sys用戶:在gmsql中輸入connect sys/password ipc;GRANT sys_prives1,sys_privs2, ... TO username1,username2, ...;GRANT sys_prives1,sys_privs2, ... TO rolename1,rolename2, ...;2.5 查詢角色“roletest”和用戶“usertest”擁有的系統權限表信息:SELECT * FROM SYSDBPRIVS WHERE GRANTEE = ‘ROLETEST’;SELECT * FROM SYSDBPRIVS WHERE GRANTEE = ‘usertest’;
注:授予多個系統權限時采用逗號分隔并且不能重復。授予多個用戶和自定義角色時采用逗號分隔并且不能重復。用戶名和自定義角色名可交叉。3. 授予對象權限給用戶或自定義角色
- 授予對象權限需要有GRANT ANY OBJECT PRIVILEGE權限。
- 不支持授予所有schema對象的語法,即GRANT select on userA.* to userB。
3.2 登錄sys用戶:在gmsql中輸入connect sys/password ipc;3.3 授予表或視圖的對象權限:GRANT obj_prives1,obj_privs2, ... ON obj_name TO username1,username2,rolename1,rolename2, ...;3.4 授予其他對象權限:GRANT obj_prives1,obj_privs2, ... ON obj_keyword obj_name TO username1,username2,rolename1,rolename2, ...;3.5 查詢對象權限表“SYSOBJPRIVS”:SELECT * FROM SYSOBJPRIVS; 注:obj_name指對象名稱,obj_keyword指對象關鍵詞。授予多個對象權限時采用逗號分隔并且不能重復。授予多個用戶和自定義角色時采用逗號分隔并且不能重復。用戶名和自定義角色名可交叉。4. 授予角色給用戶
- FaStore數據庫默認的管理員帳戶為sys,僅sys用戶具有授予角色的權限。
4.2 登錄sys用戶:在gmsql中輸入connect sys/password ipc;4.3 授予角色給用戶:Grant rolename1,rolename2, ... to username1,username2, ...; 注:授予多個角色時采用逗號分隔并且不能重復。授予多個用戶時采用逗號分隔并且不能重復。4.4 查詢用戶角色表信息:SELECT * FROM SYSUSERROLES;5. 撤銷用戶和自定義角色的系統權限
- FaStore數據庫默認的管理員帳戶為sys,僅sys用戶具有撤銷系統權限的權限。
- 撤銷用戶和角色的權限后,該用戶和角色用戶新建句柄將不再具有已經撤銷的系統權限,對當前句柄無影響。
- 撤銷的系統權限必須為用戶或自定義角色所擁有,否則會撤銷失敗。
5.2 登錄sys用戶:在gmsql中輸入connect sys/password ipc;REVOKE sys_prives1,sys_privs2, ... from username1,username2, ...;REVOKE sys_prives1,sys_privs2, ... from rolename1,rolename2, ...; 注:撤銷多個系統權限時采用逗號分隔并且不能重復。撤銷多個用戶和自定義角色時采用逗號分隔并且不能重復。用戶名和自定義角色名可交叉。6. 撤銷用戶和自定義角色的對象權限
- 撤銷對象權限需要有GRANT ANY OBJECT PRIVILEGE權限。
- 撤銷不存在的權限或者不屬于用戶或角色的權限會失敗。
- 撤銷用戶和自定義角色的對象權限后,該用戶和角色用戶新建句柄將不再具有已經撤銷的對象權限,對當前句柄無影響。
6.2 登錄sys用戶:在gmsql中輸入connect sys/password ipc;6.3 撤銷表或視圖的對象權限:REVOKE obj_prives1,obj_privs2, ... ON obj_name FROM username1,username2,rolename1,rolename2, ...;6.4 撤銷其他對象權限:REVOKE obj_prives1,obj_privs2, ... ON obj_keyword obj_name FROM username1,username2,rolename1,rolename2, ...; 注:obj_name指對象名稱,obj_keyword指對象關鍵詞。撤銷多個對象權限時采用逗號分隔并且不能重復。撤銷多個用戶和自定義角色時采用逗號分隔并且不能重復。用戶名和自定義角色名可交叉。7. 撤銷用戶角色
登錄sys用戶:在gmsql中輸入connect sys/password ipc;撤銷用戶角色:Revoke rolename1,rolename2, ... from username1,username2, ...;8. 刪除角色
登錄sys用戶:在gmsql中輸入connect sys/password ipc; 注:刪除角色時,系統會提示將會撤銷該角色下的所有權限并且不能回滾,需要進行確認。三、管理對象
1. 管理表空間
1.1 概述:
表空間(tablespace)是數據庫的邏輯劃分。數據庫將數據存放在數據文件中。在其內部,數據庫將不同的數據分開存儲,這些邏輯劃分稱為表空間。從物理角度來看,表空間將數據存儲在一個或多個數據文件中。一個數據庫通常包含了若干表空間,一個表空間通常對應若干個數據文件。 數據文件位于磁盤中,用于存放邏輯結構、管理信息、業務數據。數據文件在創建、修改表空間時由數據庫自動生成。- 數據文件創建之后,既不能改變它的大小,也不能刪除它。
- 數據文件的命名規則:可包含字母、數字、下劃線。不能以點號開頭。
PERM:系統默認會創建名為USER和SYSTEM的PERM類型表空間,用于存放用戶數據庫對象的持久化信息(比如表和索引)和系統表的持久化信息。用戶如果要在創建對象時未指定表空間,則默認存儲在USER表空間。 UNDO:存儲用戶表的UNDO持久化信息,表空間名為UNDO。 TEMP_UNDO:存儲臨時表的UNDO信息,表空間名為TEMP_UNDO。 HASH:存放索引的哈希桶信息,表空間名為HASH。 TEMP_HASH:存儲臨時表索引的哈希桶信息,表空間名為HASH_TEMP。 REP:存儲RT表(Replication Table)信息,表空間名為REP。 REP_UNDO:存儲RT表的UNDO信息,表空間名為REP_UNDO。1.2 創建表空間
- 已啟動gmsql工具,并通過有CREATE SESSION和CREATE TABLESPACE權限的帳戶連接到用戶庫。
- 當前的操作系統用戶要擁有相應目錄的讀寫權限,該目錄用于存放數據文件。
1.2.2 登錄一個用戶gmsql;connect user_read/User_read1 192.168.56.111:8500;1.2.3 創建表空間:CREATE TABLESPACE MYTBS ON (mytbs.dat SIZE 64k);1.2.4 查看表空間:SELECT * FROM V$TABLESPACE WHERE NAME =MYTBS;1.3 擴容表空間
- 已啟動gmsql工具,并通過有CREATE SESSION和CREATE TABLESPACE權限的帳戶連接到用戶庫。
- 當前的操作系統用戶要擁有相應目錄的讀寫權限,該目錄用于存放數據文件。
SELECT NAME,(SPACE_SIZE-SPACE_FREE_SIZE)/SPACE_SIZE SPACE_USED FROM v$tablespace;ALTER TABLESPACE tablespace_name ADD DATAFILE datafile_name SIZE size_num K|M|G;1.4 縮減表空間
1.4.1 前提條件:
- 在創建數據庫之后,不支持在線縮小表空間,用戶可以通過重建數據庫對表空間整改,實現縮小表空間。
% mkdir ${GMDB_HOME}/gmdb_data_bak_4_tbs
% gmsql /as dba "checkpoint;exit;"
% gmbar -b ${GMDB_HOME}/gmdb_data_bak_4_tbs -c
% mkdir ${GMDB_HOME}/gmdb_data_bak_4_tbs_lg
- 導出數據庫:由于備份數據量大,備份文件所在磁盤文件空間大小大于備份數據量大小。導出時間因不同環境(包括現場數據量、服務器性能等因素)耗時不同。
gmdcp -c /as dba -e -n 5 -p ${GMDB_HOME}/gmdb_data_bak_4_tbs_lg
- 刪除“DATA_PATH”和“REDO_PATH”配置項對應目錄下的所有文件
查看server.ini文件中“DATA_PATH”和“REDO_PATH”配置項的值。如果“DATA_PATH”和“REDO_PATH”配置項值為空,則“DATA_PATH”和“REDO_PATH”默認值為“${GMDB_HOME}/data”和“${GMDB_HOME}/redo”。- 啟動FaStore,檢查gmserver進程是否啟動正常
startdb.sh;gmsql /as dba "exit;" | grep "Successfully CONNECT to DB";
gmsql /as dba "drop table FASTORE_JOBS;exit;"
cd ${GMDB_HOME}/gmdb_data_bak_4_tbs_lg
cp gmdb.sql gmdb.sql.bak
使用VI編輯器編輯“gmdb.sql”,根據整改目標對CREATE TABLESPACE、CREATE TEMPORARY TABLESPACE和ALTER TABLESPACE語句的表空間文件名以及表空間大小進行修改。修改完成后,保存退出VI編輯器gmdcp -c /as dba -i -n 5 -p ${GMDB_HOME}/gmdb_data_bak_4_tbs_lg
2. 管理表
如果想要手動清理該表的碎片,可在gmsql中輸入VACUUM TABLE TBL; 如果要手動清理所有表的碎片,可在gmsql中輸入VACUUM TABLE ALL;本 文 原 創 來 源:IT那活兒微信公眾號(上海新炬王翦團隊)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129716.html