達夢DSC共享遠端歸檔+備份還原
說明:在DMDSC叢集中,各個節點在配置本地歸檔之外,還需要再配置一個遠端歸檔,比如節點1,除了要儲存自己的本地歸檔外,其他機器還會發送redo日誌到節點1生成遠端歸檔。
之前寫過一篇把歸檔資訊儲存在節點上的部落格。
部落格地址:https://www.cnblogs.com/wuran222/p/15076429.html
今天試一下共享本地歸檔的遠端歸檔,就是不再發送redo日誌到其他機器上生成遠端歸檔日誌檔案,而是儲存在共享盤上。
比如有兩臺伺服器A和B,以前的做法是A伺服器上儲存自己的歸檔,還需要把B伺服器的歸檔儲存到A伺服器上,同樣B伺服器也需要儲存自己的歸檔和A伺服器的歸檔,因為備份還原需要用。現在可以做到,A節點和B節點的歸檔資訊都儲存在共享盤上。
一、環境準備
CentOS3(192.168.202.130)
CentOS4(192.168.202.131)
注意:環境準備這塊,因為之前在另一篇部落格上也寫了,所以現在省略了很多,需要的可以參考下面這篇部落格:
部落格地址:https://www.cnblogs.com/wuran222/p/15076429.html
1、新建兩臺虛擬機器
2、在CentOS3建立新硬碟
3、在CentOS4新增之前建立的硬碟
4、修改vmx檔案
開啟CentOS4的vmx配置檔案,加入如下資訊:
disk.locking="FALSE"
scsi0:1.SharedBus="Virtual"
5、檢視硬碟有沒有加入
二、安裝達夢資料庫管理系統
1、建立使用者組、使用者和安裝目錄
[root@dameng home]# groupadd dinstall
[root@dameng home]# useradd -g dinstall dmdba
[root@dameng home]# passwd dmdba
PWD : dameng123
建立達夢資料庫管理系統安裝目錄
mkdir dmdbms
chown -R dmdba:dinstall dmdbms
chmod -R 755 dmdbms
注意:dmdbms目錄如果不是空的會報錯。
2、安裝
注意:最好不要用root安裝。
上傳iso檔案或者DMInstall.bin,我是直接上傳的DMInstall.bin,放在/home下
chown -R dmdba:dinstall /home/DMInstall.bin
chmod -R 755 /home/DMInstall.bin
切換dmdba登入
[dmdba@dameng home]# ./DMInstall.bin -i
請選擇安裝語言(C/c:中文 E/e:英文) [C/c]:c
是否輸入Key檔案路徑? (Y/y:是 N/n:否) [Y/y]:n
是否設定時區? (Y/y:是 N/n:否) [Y/y]:y
請選擇設定時區 [21]:21
請選擇安裝型別的數字序號 [1 典型安裝]:1
請選擇安裝目錄 [/opt/dmdbms]:/home/dmdba/dmdbms
3、在共享磁碟上劃分裸裝置
1)開始劃分
兩個節點都執行以下語句完成裸裝置繫結
partprobe /dev/sdb 重讀分割槽表
systemctl restart systemd-udev-trigger.service
說明:n是“new”新建分割槽的意思,p回車新建主分割槽,此時選擇分割槽號(1-4間)。
Firstcylinder(1-20805,default1):這裡是設定分割槽起始的柱面。
Lastcylinderor+sizeor+sizeMor+sizeK(1-20805,default20805):此處是設定分割槽結束柱面,+3G表示從起始柱面開始向後3G結束,也是是設定分割槽大小為3G。
2)編輯/etc/udev/rules.d/60-raw.rules 檔案,增加以下語句:
2臺伺服器均需增加以下語句
ACTION=="add" , KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sdb4", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"
說明:Linux平臺通過udev的方式將塊裝置轉換為字元裝置,並固定裝置的許可權和所有者。
KERNEL 裝置名稱。RUN+="raw /dev/raw/rawX %M %m" X是系統使用的raw裝置號碼。
4、準備dmdcr_cfg.ini配置檔案
放在 /home/dmdba/dmdbms/config 目錄下,兩個節點均需要, 後續 DMASMCMD工具執行 init 語句會使用到(初始化 DCR 磁碟)。
#叢集環境包括3個group,分別是css組、asm組、dsc組
DCR_N_GRP = 3
# Voting Disk路徑。
DCR_VTD_PATH = /dev/raw/raw2
#訊息標識,dmcssm登入dmcss訊息校驗用。和dmcssm.ini 中的 CSSM_OGUID 保持一致。
DCR_OGUID = 63635
#[GRP]表示新建一個 Group
[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = GRP_CSS
DCR_GRP_N_EP = 2
#故障檢測時間
DCR_GRP_DSKCHK_CNT = 60
#[]裡的是組名,與 DCR_GRP_NAME 對應
[GRP_CSS]
DCR_EP_NAME = CSS0
#節點 IP(例項所在機器的 IP 地址)
DCR_EP_HOST = 192.168.202.130
DCR_EP_PORT = 9341
#[]裡的是組名,與 DCR_GRP_NAME 對應
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.202.131
DCR_EP_PORT = 9343
#[GRP]表示新建一個 Group
[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
#[]裡的是組名,與 DCR_GRP_NAME 對應
[GRP_ASM]
DCR_EP_NAME = ASM0
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.202.130
DCR_EP_PORT = 9349
DCR_EP_ASM_LOAD_PATH = /dev/raw
#[]裡的是組名,與 DCR_GRP_NAME 對應
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.202.131
DCR_EP_PORT = 9351
# ASM 磁碟掃描路徑
DCR_EP_ASM_LOAD_PATH = /dev/raw
#[GRP]表示新建一個 Group
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
#[]裡的是組名,與 DCR_GRP_NAME 對應
[GRP_DSC]
#節點名,DB 的節點名必須和 dm.ini 裡的 INSTANCE_NAME 保持一致
DCR_EP_NAME = DSC0
#組內序列號
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
#[]裡的是組名,與 DCR_GRP_NAME 對應
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9742
注意:DCR_EP_HOST為內網ip,我虛擬機器沒有設定內外網,所以都是一樣的。
5、使用 DMASMCMD 工具初始化磁碟組
1)在其中一個節點上啟動dmasmcmd工具
cd /home/dmdba/dmdbms/bin
./dmasmcmd
2)依次輸入以下命令(只需在一臺機器執行即可)
ASM>create dcrdisk '/dev/raw/raw1' 'dcr'
ASM>create votedisk '/dev/raw/raw2' 'vote'
ASM>create asmdisk '/dev/raw/raw3' 'LOG0'
ASM>create asmdisk '/dev/raw/raw4' 'DATA0'
ASM>init dcrdisk '/dev/raw/raw1' from '/home/dmdba/dmdbms/config/dmdcr_cfg.ini' identified by 'abcd'
ASM>init votedisk '/dev/raw/raw2' from '/home/dmdba/dmdbms/config/dmdcr_cfg.ini'
注意:如果報如下錯誤
用root執行如下語句即可
partprobe /dev/sdb 重讀分割槽表
systemctl restart systemd-udev-trigger.service
6、配置dmasvrmal.ini檔案(兩個節點都一樣)
存放目錄 home/dmdba/dmdbms/config
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.202.130
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.202.131
MAL_PORT = 7237
注意:MAL_HOST是內網ip。
7、準備 dmdcr.ini 配置檔案
8、啟動DMCSS、DMASM服務
在兩臺虛擬機器分別前臺啟動,方便檢視啟動資訊。
cd /home/dmdba/dmdbms/bin
./dmcss DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini
./dmasmsvr DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini
注意:在第二個節點上啟動的時候報如下錯誤
用root執行如下語句即可
partprobe /dev/sdb 重讀分割槽表
systemctl restart systemd-udev-trigger.service
9、使用 dmasmtool 工具建立 DMASM 磁碟組
選擇一個節點,啟動 dmasmtool 工具。
cd /home/dmdba/dmdbms/bin
./dmasmtool DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini
輸入下列語句建立 DMASM 磁碟組:
#建立日誌磁碟組
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
#建立資料磁碟組
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
10、準備 dminit.ini 配置檔案(一個節點即可)
存放目錄 home/dmdba/dmdbms/config
我是放在130這個節點上。
db_name = dsc
system_path = +DMDATA/data
system = +DMDATA/data/dsc/system.dbf
system_size = 128
roll = +DMDATA/data/dsc/roll.dbf
roll_size = 128
main = +DMDATA/data/dsc/main.dbf
main_size = 128
ctl_path = +DMDATA/data/dsc/dm.ctl
ctl_size = 8
log_size = 256
dcr_path = /dev/raw/raw1
#dcr 磁碟路徑,目前不支援 asm,只能是裸裝置
dcr_seqno = 0
auto_overwrite = 1
[DSC0]
#inst_name 跟 dmdcr_cfg.ini 中 DB 型別 group 中 DCR_EP_NAME 對應
config_path = /home/dmdba/dmdbms/config/dsc0_config
port_num = 5236
mal_host = 192.168.202.130
mal_port = 9340
log_path = +DMLOG/log/dsc0_log01.log
log_path = +DMLOG/log/dsc0_log02.log
[DSC1]
#inst_name 跟 dmdcr_cfg.ini 中 DB 型別 group 中 DCR_EP_NAME 對應
config_path = /home/dmdba/dmdbms/config/dsc1_config
port_num = 5237
mal_host = 192.168.202.131
mal_port = 9341
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
11、使用 dminit 初始化 DB 環境
在130上啟動dminit工具初始化資料庫。
./dminit control=/home/dmdba/dmdbms/config/dminit.ini
dminit執行完成後,會在config_path目錄(/home/dmdba/dmdbms/config/rac0_config和rac1_config)下生成配置檔案dm.ini和dmmal.ini。
注:初始化資料庫完成之後,將130節點上生成的rac1_config檔案拷貝到131的/home/dmdba/dmdbms/config目錄下,然後將130上/home/dmdba/dmdbms/config目錄下的rac1_config資料夾刪掉。
[dmdba@dameng3 config]$ scp -r dsc1_config [email protected]:/home/dmdba/dmdbms/config/
12、配置遠端歸檔
先將兩個節點上的dm.ini中的ARCH_INI設定為1,然後配置dmarch.ini檔案
1)節點130:
存放目錄 /home/dmdba/dmdbms/config/dsc0_config
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =+DMDATA/DSC0/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH =+DMDATA/DSC1/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
2)節點131:
存放目錄 /home/dmdba/dmdbms/config/dsc1_config
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =+DMDATA/DSC1/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH =+DMDATA/DSC0/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
13、啟動資料庫服務
1)啟動130節點的
./dmserver /home/dmdba/dmdbms/config/dsc0_config/dm.ini dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini
2)啟動131節點的
./dmserver /home/dmdba/dmdbms/config/dsc1_config/dm.ini dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini
14、註冊服務
1)註冊命令
root使用者
cd /home/dmdba/dmdbms/script/root
節點1:
./dm_service_installer.sh -t dmcss -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -p CSS1
./dm_service_installer.sh -t dmasmsvr -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -p ASM1 -y DmCSSServiceCSS1
./dm_service_installer.sh -t dmserver -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -dm_ini /home/dmdba/dmdbms/config/dsc0_config/dm.ini -p DB1 -y DmASMSvrServiceASM1
節點2:
./dm_service_installer.sh -t dmcss -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -p CSS2
./dm_service_installer.sh -t dmasmsvr -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -p ASM2 -y DmCSSServiceCSS2
./dm_service_installer.sh -t dmserver -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -dm_ini /home/dmdba/dmdbms/config/dsc1_config/dm.ini -p DB2 -y DmASMSvrServiceASM2
2)啟動命令
節點1:
systemctl start DmCSSServiceCSS1
systemctl start DmASMSvrServiceASM1
systemctl start DmServiceDB1
節點2:
systemctl start DmCSSServiceCSS2
systemctl start DmASMSvrServiceASM2
systemctl start DmServiceDB2
注意:啟動的時候,先啟動節點1的CSS,再啟動節點2的CSS。啟動好後再啟動節點1的ASM,再啟動節點2的ASM。最後啟動節點1的DB和節點2的DB。
關閉的時候,先關閉節點1的DB,再關閉節點2的DB。關閉後再關閉節點1的ASM和節點2的ASM,最後關閉節點1的CSS和節點2的CSS。
如果啟動的時候是用./DmServiceDB1 start 那麼關閉的時候需要用./DmServiceDB1 stop 不然可能會關不掉。
15、配置監視器
監視器放在第三方機器上,為 windows 作業系統,dmcssm.ini 配置檔案路徑為 D:\DCA\cssm。
1)dmcssm.ini內容
#和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致
CSSM_OGUID = 63635
#配置所有 CSS 的連線資訊,
#和 dmdcr_cfg.ini 中 CSS 配置項的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP = 192.168.202.130:9341
CSSM_CSS_IP = 192.168.202.131:9343
CSSM_LOG_PATH = E:\DCA\cssm\log
#監視器日誌檔案存放路徑
CSSM_LOG_FILE_SIZE = 32
#每個日誌檔案最大 32M
CSSM_LOG_SPACE_LIMIT = 0
#不限定日誌檔案總佔用空間
2)啟動監視器
進入E:\dmdbms\bin目錄
dmcssm.exe INI_PATH=E:\DCA\cssm\dmcssm.ini
啟動好後 ,輸入show,檢視CSS、ASM和DB的狀態
注意:如果想通過監視器關閉DMDSC叢集的話,只能關閉ASM和DB的,不能關閉CSS的。
16、故障自動重連
配置 DMDSC 叢集,一般要求配置連線服務名,以實現故障自動重連。
vi /etc/dm_svc.conf
新增如下資訊:
disql SYSDBA/SYSDBA@dmdsc_svc 用服務名方式連線。
注意:服務名是配置在客戶端,我是在130上測試連線的,所以修改的是130上的dm_svc.conf。
三、備份還原
前提:已經開了歸檔。
注意:備份還原儘量用dmdba操作,我一開始用root使用者還原,報下圖的錯誤,切換成dmdba操作就好了。
1、備份
在130上備份:
BACKUP DATABASE BACKUPSET '/home/dmdba/dmdbms/BAK/db_full_bak_for_dsc';
注意:備份其中任意一個節點即可備份整個DMDSC環境。
2、還原
./dmrman dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini
restore DATABASE '/home/dmdba/dmdbms/config/dsc0_config/dm.ini' FROM BACKUPSET '/home/dmdba/dmdbms/BAK/db_full_bak_for_dsc';
recover DATABASE '/home/dmdba/dmdbms/config/dsc0_config/dm.ini' FROM BACKUPSET '/home/dmdba/dmdbms/BAK/db_full_bak_for_dsc';
recover DATABASE '/home/dmdba/dmdbms/config/dsc0_config/dm.ini' update db_magic;
注意:在recover的時候報了個錯,如下圖
解決方式如下圖
更多資訊請上達夢技術社群瞭解:https://eco.dameng.com