1. 端口規划
服務器 | ip | 實例名 | PORT_NUM | MAL_PORT | MAL_DW_PORT | GROUP |
---|---|---|---|---|---|---|
主1 | 192.168.44.221 | GRP1_MPP_EP01 | 5236 | 5337 | 5253 | GRP1 |
備1 | 192.168.44.222 | GRP1_MPP_EP11 | 5237 | 5338 | 5254 | GRP1 |
主2 | 192.168.44.222 | GRP2_MPP_EP02 | 5236 | 5337 | 5253 | GRP2 |
備2 | 192.168.44.221 | GRP2_MPP_EP22 | 5237 | 5338 | 5254 | GRP2 |
2. 初始化實例
本例中采取機器交叉的方式配置兩個備數據庫
192.168.44.221節點初始化庫至目錄 /home/dmdba/data/:
GRP1主庫:./dminit path=/home/dmdba/data db_name=EP01 instance_name=GRP1_MPP_EP01
GRP2備庫:./dminit path=/home/dmdba/data db_name=EP22 instance_name=GRP2_MPP_EP22
192.168.44.222節點初始化庫至目錄 /home/dmdba/data/:
GRP2主庫:./dminit path=/home/dmdba/data db_name=EP02 instance_name=GRP2_MPP_EP02
GRP1備庫:./dminit path=/home/dmdba/data db_name=EP11 instance_name=GRP1_MPP_EP11
3. 備份還原
1.脫機備份:
./dmrman CTLSTMT="BACKUP DATABASE '/home/dmdba/data/EP01/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/home/dmdba/back/EP01'"
2.拷貝備份文件到備庫所在機器
scp -r /home/dmdba/back/EP01 root@192.168.44.222:/home/dmdba/back
3.執行脫機數據庫還原與恢復
./dmrman ctlstmt="RESTORE DATABASE '/home/dmdba/data/EP11/dm.ini' FROM BACKUPSET '/home/dmdba/back/EP01'"
./dmrman ctlstmt="RECOVER DATABASE '/home/dmdba/data/EP11/dm.ini' FROM BACKUPSET '/home/dmdba/back/EP01'"
./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/data/EP11/dm.ini' UPDATE DB_MAGIC"
EP22同EP11。
4. 配置主庫GRP1_MPP_EP01
4.1 配置 dm.ini
INSTANCE_NAME = GRP1_MPP_EP01
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
MPP_INI = 1
RLOG_SEND_APPLY_MON = 64
4.2 配置 dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = GRP1_MPP_EP01
MAL_HOST = 192.168.44.221
MAL_PORT = 5337
MAL_INST_HOST = 192.168.44.221
MAL_INST_PORT = 5236
MAL_DW_PORT = 5253
MAL_INST_DW_PORT = 5243
[MAL_INST2]
MAL_INST_NAME = GRP2_MPP_EP02
MAL_HOST = 192.168.44.222
MAL_PORT = 5337
MAL_INST_HOST = 192.168.44.222
MAL_INST_PORT = 5236
MAL_DW_PORT = 5253
MAL_INST_DW_PORT = 5243
[MAL_INST3]
MAL_INST_NAME = GRP1_MPP_EP11
MAL_HOST = 192.168.44.222
MAL_PORT = 5338
MAL_INST_HOST = 192.168.44.222
MAL_INST_PORT = 5237
MAL_DW_PORT = 5254
MAL_INST_DW_PORT = 5244
[MAL_INST4]
MAL_INST_NAME = GRP2_MPP_EP22
MAL_HOST = 192.168.44.221
MAL_PORT = 5338
MAL_INST_HOST = 192.168.44.221
MAL_INST_PORT = 5237
MAL_DW_PORT = 5254
MAL_INST_DW_PORT = 5244
4.3 配置 dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_MPP_EP11
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/data/EP01/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
4.4 配置 dmmpp.ctl
[service_name1]
mpp_seq_no = 0
mpp_inst_name = GRP1_MPP_EP01
[service_name2]
mpp_seq_no = 1
mpp_inst_name = GRP2_MPP_EP02
轉換命令如下:
./dmctlcvt TYPE=2 SRC=/home/dmdba/data/EP01/dmmpp.ini DEST=/home/dmdba/data/EP01/dmmpp.ctl
4.5 啟動主庫
以 Mount 方式啟動主庫。
./dmserver /home/dmdba/data/EP01/dm.ini mount
4.6 設置 OGUID、修改數據庫模式
啟動命令行工具 dIsql,使用 MPP 類型為 LOCAL 方式,登錄主庫設置 OGUID 值。
./disql SYSDBA/SYSDBA*LOCAL@localhost:5236
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(45330);
SQL>alter database primary;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
5. 配置主庫GRP2_MPP_EP02
5.1 配置dm.ini
INSTANCE_NAME = GRP2_MPP_EP02
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
MPP_INI = 1
RLOG_SEND_APPLY_MON = 64
5.2 配置dmmal.ini
同GRP1_MPP_EP01
5.3 配置dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP2_MPP_EP22
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/data/EP02/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
5.4 配置 dmmpp.ctl
同GRP_MPP_EP01,拷貝 dmmpp.ctl 到/home/dmdba/data/EP02/目錄即可。
5.5 啟動主庫
以 Mount 方式啟動主庫。
./dmserver /home/dmdba/data/EP02/dm.ini mount
5.6 設置 OGUID、修改數據庫模式
啟動命令行工具 dIsql,使用 MPP 類型為 LOCAL 方式,登錄主庫設置 OGUID 值。
./disql SYSDBA/SYSDBA*LOCAL@localhost:5236
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(45331);
SQL>alter database primary;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0)
6.配置備庫GRP1_MPP_EP11
6.1 配置dm.ini
INSTANCE_NAME = GRP1_MPP_EP11
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
MPP_INI = 1
RLOG_SEND_APPLY_MON = 64
6.2 配置 dmmal.ini
直接將實例GRP1_MPP_EP01 配置的dmmal.ini 拷貝到/home/dmdba/data/EP11目錄中。
6.3 配置 dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_MPP_EP01
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/data/EP11/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
6.4 配置dmmpp.ctl
直接將實例GRP1_MPP_EP01的dmmpp.ctl拷貝到/home/dmdba/data/EP11目錄中。
6.5 啟動主庫
以 Mount 方式啟動主庫。
./dmserver /home/dmdba/data/EP11/dm.ini mount
6.6 設置 OGUID、修改數據庫模式
啟動命令行工具 dIsql,使用 MPP 類型為 LOCAL 方式,登錄主庫設置 OGUID 值。
./disql SYSDBA/SYSDBA*LOCAL@localhost:5237
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(45330);
SQL>alter database STANDBY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
7. 配置備庫GRP2_MPP_EP22
7.1 配置dm.ini
INSTANCE_NAME = GRP2_MPP_EP22
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
MPP_INI = 1
RLOG_SEND_APPLY_MON = 64
7.2 配置 dmmal.ini
直接將實例GRP1_MPP_EP01 配置的dmmal.ini 拷貝到/home/dmdba/data/EP22目錄中。
7.3 配置 dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP2_MPP_EP02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/data/EP22/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
7.4 配置 dmmpp.ctl
直接將實例GRP1_MPP_EP01的dmmpp.ctl拷貝到/home/dmdba/data/EP22目錄中。
7.5 啟動主庫
以 Mount 方式啟動主庫。
./dmserver /home/dmdba/data/EP22/dm.ini mount
7.6 設置 OGUID、修改數據庫模式
啟動命令行工具 dIsql,使用 MPP 類型為 LOCAL 方式,登錄主庫設置 OGUID 值。
./disql SYSDBA/SYSDBA*LOCAL@localhost:5237
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(45331);
SQL>alter database STANDBY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
8. 測試
8.1 建立分布列
在GRP1_MPP_EP01上創建 LIST 分布表 T_LIST。
用disql進行全局登錄:
./disql SYSDBA/SYSDBA*GLOBAL@localhost:5236
建分布列表:
CREATE TABLE T_LIST(C1 INT, C2 CHAR(10)) DISTRIBUTED BY LIST (C1) (VALUES(1,2,3,4,5) ON GRP1_MPP_EP01,VALUES(6,7,8,9,10) ON GRP2_MPP_EP02);
建立表T_LIST根據C1字段進行分布。值為1-5的數據行分部到A機器實例名為GRP1_MPP_EP01的庫內。值為6-10的分部到B機器實例名為GRP2_MPP_EP02的庫內。
8.2 插入數據
insert into T_LIST values(1,'a');
insert into T_LIST values(2,'b');
insert into T_LIST values(6,'f');
insert into T_LIST values(7,'g');
8.3 驗證數據
GRP1_MPP_EP01使用全局GLOBAL登錄方式查詢出來的結果是各節點的合集,使用LOCAL本地登錄是該節點的數據。
GRP2_MPP_EP02使用全局GLOBAL登錄方式查詢出來的結果是各節點的合集,使用LOCAL本地登錄是該節點的數據