主机名 |
服务IP |
心跳IP |
数据库名 |
实例名 |
localhost |
192.168.124.129 |
DMDB |
DW1 |
|
localhost |
192.168.124.130 |
DMDB |
DW2 |
|
localhost |
192.168.124.136 |
DMDB |
DW3 |
实例名 |
实例端口 |
MAL 系统监听 |
TCP 连接的端口 实例本地的守护进程监TCP 连接的端口 |
实例监听守护进程TCP 连接的端口 |
DW1 |
5236 |
7336 |
7436 |
7536 |
DW2 |
5236 |
7336 |
7436 |
7536 |
DW3 |
5236 |
7336 |
7436 |
7536 |
./dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=DMDB instance_name=DW1 SYSDBA_PWD="Hn@dameng123" SYSAUDITOR_PWD="Hn@dameng123"
./dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=DMDB instance_name=DW2 SYSDBA_PWD="Hn@dameng123" SYSAUDITOR_PWD="Hn@dameng123"
以主机 dmdb01 为主库,启动实例
./dmserver /dmdata/DMDB/dm.ini
出现 system is ready 后输入 exit 停止数据库。
dmdba 用户 启动 dmrman 工具
./dmrman use_ap=2
执行 backup 全库:
backup database '/dmdata/DMDB/dm.ini' backupset '/home/dmdba/bakfull';
使用 dmrman 工具还原备库,dmdba 用户执行:
./dmrman
执行 restore:
restore database '/dmdata/DMDB/dm.ini' from backupset '/home/dmdba/bakfull';
完成后执行 recover:
recover database '/dmdata/DMDB/dm.ini' from backupset '/home/dmdba/bakfull';
最后执行 recover update db_magic。
recover database '/dmdata/DMDB/dm.ini' update db_magic;
vi /dmdata/DMDB/dm.ini
主库 dw1 上修改以下参数值:
INSTANCE_NAME = dw1
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
备库 dw2 上修改以下参数值:
INSTANCE_NAME = dw2
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
vi /dmdata/DMDB/dmarch.ini
主库 dw1 上添加以下内容:
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = dw2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 4096
备库 dw2 上添加以下内容:
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = dw1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 4096
vi /dmdata/DMDB/dmmal.ini
主备库 2 个节点文件内容要相同。
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 15
[MAL_INST1]
MAL_INST_NAME = dw1
MAL_HOST = 192.168.124.129
MAL_PORT = 7336
MAL_INST_HOST = 192.168.124.129
MAL_INST_PORT = 5236
MAL_DW_PORT = 7436
MAL_INST_DW_PORT = 7536
[MAL_INST2]
MAL_INST_NAME = dw2
MAL_HOST = 192.168.124.130
MAL_PORT = 7336
MAL_INST_HOST = 192.168.124.130
MAL_INST_PORT = 5236
MAL_DW_PORT = 7436
MAL_INST_DW_PORT = 7536
vi /dmdata/DMDB/dmwatcher.ini
主备库 2 节点文件内容要相同。
[GRP_DW]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 30
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 20
INST_OGUID = 453331
INST_INI = /dmdata/DMDB/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
以 mount 方式启动数据库实例
使用 dmdba 用户,执行以下命令(主备库都执行):
./dmserver /dmdata/DMDB/dm.ini mount
在新的终端使用 disql 工具连接数据库:
./disql SYSDBA/'"Hn@dameng123"'
主备库都修改 oguid,执行以下命令:
sp_set_oguid(453331);
主库 dw1 上修改数据库模式为 primary,执行以下命令:
alter database primary;
备库 dw2 上修改数据库模式为 standby,执行以下命令:
alter database standby;
启动守护进程
dmdba 用户下,到数据库安装目录的 bin 下执行以下命令
./dmwatcher /dmdata/DMDB/dmwatcher.ini
使用 root 用户,到数据库安装目录的 script/root 下。
./dm_service_installer.sh -t dmwatcher -p dw -watcher_ini /dmdata/DMDB/dmwatcher.ini
./dm_service_installer.sh -t dmserver -p dw -dm_ini /dmdata/DMDB/dm.ini
./dm_service_uninstaller.sh -n DmServicedw
./dm_service_uninstaller.sh -n DmWatcherServicedw
create table test(id int);
insert into test values (1);
commit;
集群任意节点,配置普通监视器配置文件 dmmonitor.ini,执行以下命令:
vi /dmdata/DMDB/dmmonitor.ini
添加以下内容:
说明:具体配置时,请把#和#之后的中文内容删除。
MON_DW_Confirm = 0
MON_LOG_PATH = /home/dmdba/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 200
MON_LOG_SPACE_LIMIT = 1024
[GRP_DW]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.124.129:7436
MON_DW_IP = 192.168.124.130:7436
执行以下命令,启动监视器:
./dmmonitor /dmdata/DMDB/dmmonitor.ini
关闭主库守护进程:./DmWatcherServicedw stop
关闭备库守护进程:DmWatcherServicedw stop
关闭主库实例:./DmServicedw stop
关闭备库实例:./DmServicedw stop
启动主库实例:./DmServicedw start
启动备库实例:./DmServicedw start
启动主库守护进程:./DmWatcherServicedw start
启动备库守护进程:./DmWatcherServicedw start
./dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=DMDB instance_name=DW3 SYSDBA_PWD="Hn@dameng123" SYSAUDITOR_PWD="Hn@dameng123"
主库备份
./disql SYSDBA/SYSDBA@localhost:7236
BACKUP DATABASE BACKUPSET '/opt/D2/D2/EP01/dmbak';
scp -r ./db_full_bak_01/ dmdba@192.168.101.220:/opt/D2/D2/
使用 dmrman 工具还原备库,dmdba 用户执行:
./dmrman use_ap=2
执行 restore:
restore database '/opt/D2/D2/EP02/DAMENG/dm.ini' from backupset '/opt/D2/D2/db_full_bak_01/';
完成后执行 recover:
recover database '/opt/D2/D2/EP02/DAMENG/dm.ini' from backupset '/opt/D2/D2/db_full_bak_01/';
最后执行 recover update db_magic。
recover database '/opt/D2/D2/EP02/DAMENG/dm.ini' update db_magic;
vi /dmdata/DMDB/dm.ini
Dw3 上修改以下参数值:
INSTANCE_NAME = dw3
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
vi /dmdata/DMDB/dmarch.ini
Dw3 上添加以下内容:
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = dw1
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = dw2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 4096
vi /dmdata/DMDB/dmmal.ini 要停止已经存在的主备架构并且修改配置文件
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 15
[MAL_INST1]
MAL_INST_NAME = dw1
MAL_HOST = 192.168.124.129
MAL_PORT = 7336
MAL_INST_HOST = 192.168.124.129
MAL_INST_PORT = 5236
MAL_DW_PORT = 7436
MAL_INST_DW_PORT = 7536
[MAL_INST2]
MAL_INST_NAME = dw2
MAL_HOST = 192.168.124.130
MAL_PORT = 7336
MAL_INST_HOST = 192.168.124.130
MAL_INST_PORT = 5236
MAL_DW_PORT = 7436
MAL_INST_DW_PORT = 7536
[MAL_INST3]
MAL_INST_NAME = dw3
MAL_HOST = 192.168.124.136
MAL_PORT = 7336
MAL_INST_HOST = 192.168.124.136
MAL_INST_PORT = 5236
MAL_DW_PORT = 7436
MAL_INST_DW_PORT = 7536
vi /dmdata/DMDB/dmwatcher.ini
[GRP_DW]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 30
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 20
INST_OGUID = 453331
INST_INI = /dmdata/DMDB/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
以 mount 方式启动数据库实例
使用 dmdba 用户,执行以下命令
./dmserver /opt/D2/D2/EP02/DAMENG/dm.ini mount
在新的终端使用 disql 工具连接数据库:
./disql SYSDBA/@localhost:7236
执行以下命令:
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
动态添加MAL设置,集群的每个节点都要运行
./disql SYSDBA/'"Hn@dameng123"'@192.168.124.129:5236
./disql SYSDBA/'"Hn@dameng123"'@192.168.124.130:5236
SF_MAL_CONFIG(1,0);
SF_MAL_INST_ADD('MAL_INST3','dw3','192.168.124.136',7336,'192.168.124.136',5236,7436,0,7536);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);
动态添加归档配置
alter database add archivelog 'DEST=dw3, TYPE=REALTIME';
使用 root 用户,到数据库安装目录的 script/root 下。
./dm_service_installer.sh -t dmwatcher -p dw -watcher_ini /dmdata/DMDB/dmwatcher.ini
./dm_service_installer.sh -t dmserver -p dw -dm_ini /dmdata/DMDB/dm.ini
启动主库实例:./DmServicedw start
启动备库实例:./DmServicedw start
启动主库守护进程:./DmWatcherServicedw start
启动备库守护进程:./DmWatcherServicedw start
集群任意节点,配置普通监视器配置文件 dmmonitor.ini,执行以下命令:
vi /dmdata/DMDB/dmmonitor.ini
添加以下内容:
MON_DW_Confirm = 0
MON_LOG_PATH = /home/dmdba/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 200
MON_LOG_SPACE_LIMIT = 1024
[GRP_DW]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.124.129:7436
MON_DW_IP = 192.168.124.130:7436
MON_DW_IP = 192.168.124.136:7436
执行以下命令,启动监视器:
./dmmonitor /dmdata/DMDB/dmmonitor.ini
show 确定节点的LSN号一致
监视器上切换的命令格式:switchover [group_name[.]] [inst_name]
switchover GRP_DW.DW2
此时DW2已经切换为主库
主库发生故障后,可以通过监视器的 Takeover 命令,将备库切换为主库,继续对外提供服务。如果配置为自动切换模式,确认监视器可以自动检测主库故障,并通知备库接管,这个过程不需要人工干预。
命令格式:takeover [group_name[.]] [inst_name]
takeover GRP1.DMSERVER_02
备注:切换之前一定要先检查主备库的数据一致性。
社区地址:https://eco.dameng.com