达梦数据守护搭建全过程及碰到的问题
最近参加了DCP的培训,在这里将在培训中的学到的数据守护搭建过程及碰到的问题做个总结
1、服务器
思路:先创建一台麒麟V10虚拟机,安装好DM之后,直接克隆出另外两台。
(1)创建虚拟机
具体步骤不再这里写了,需注意以下几点
- 不建议选择Ubuntu,可能出现无网卡的情况,导致虚拟机无法通信。
我这里选择了Centos 8 64位,但是无法安装VMware Tools,可以尝试其它 - 网络的话我选择的是NAT模式
- 麒麟需在右下角手动选择网卡,一般默认名称为ens33
(2)安装达梦
略。这个已有详细步骤的博文了,就不多说了。我这里的使用dmdba用户,安装路径为 /dm8,
(3)克隆
虚拟机上右键—>管理—>克隆即可
2、数据库实例
服务器类型 | ip | 数据库名 | 实例名 | PORT_NUM | MAL_INST_DW_PORT | MAL_PORT | MAL_DW_PORT |
主机 | 192.168.70.129 | DAMENG | DMSERVER01 | 5236 | 45101 | 55101 | 65101 |
备机 | 192.168.70.130 | DAMENG | DMSERVER02 | 5236 | 45121 | 55121 | 65121 |
监视 | 192.168.70.131 |
- 如上在主机、备机中分别创建实例及数据库。
- 数据库名一致,实例名不同。
- 数据库存储路径为/dm8/data
3、主库
1、停止服务
cd /dm8/bin
./DmServiceDAMENG stop
2、备份
su dmdba
mkdir /dm8/backup
cd /dm8/bin
./dmrman
RMAN> BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL TO FULL_BACK BACKUPSET '/dm8/backup/FULL_BACK'
3、将文件发送给备机
scp -r /dm8/backup/FULL_BACK 192.168.70.130:/dm8/backup
4、配置文件修改、添加
- dm.ini
vim /dm8/data/DAMENG/dm.ini
# 确认以下参数
INSTANCE_NAME = DMSERVER01
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
- dmmal.ini
vim /dm8/data/DAMENG/dmmal.ini
# 添加下面内容
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DMSERVER01
MAL_HOST = 192.168.70.129
MAL_PORT = 55101
MAL_INST_HOST = 192.168.70.129
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
[MAL_INST2]
MAL_INST_NAME = DMSERVER02
MAL_HOST = 192.168.70.130
MAL_PORT = 55121
MAL_INST_HOST = 192.168.70.130
MAL_INST_PORT = 5236
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121
- dmarch.ini
vim /dm8/data/DAMENG/dmarch.ini
# 添加下面内容
# 注意:第三行填写的是备机的服务名 同理,备机需填写主机的服务名
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSERVER02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
- dmwatcher.ini
vim /dm8/data/DAMENG/dmwatcher.ini
# 添加下面内容
[DAMENG]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /dm8/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
5、修改参数
(1)数据库切换为mount模式 可以通过disql或管理工具
- disql
cd /dm8/bin
./disql SYSDBA/SYSDBA
- 管理工具
在数据库上右键–>管理服务器 ---->系统管理
(2)执行以下sql
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331); -- 这个参数可以自己设置,但是要保证主备一致
alter database primary;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
4、备库
1、停止服务
cd /dm8/bin
./DmServiceDAMENG stop
2、还原
cd /dm8/bin
./dmrman
RMAN> RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/backup'
RMAN> RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/backup'
RMAN> RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC
3、配置文件修改、添加
- dm.ini
vim /dm8/data/DAMENG/dm.ini
# 确认以下参数
INSTANCE_NAME = DMSERVER02
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
- dmmal.ini
vim /dm8/data/DAMENG/dmmal.ini
# 添加下面内容
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DMSERVER01
MAL_HOST = 192.168.70.129
MAL_PORT = 55101
MAL_INST_HOST = 192.168.70.129
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
[MAL_INST2]
MAL_INST_NAME = DMSERVER02
MAL_HOST = 192.168.70.130
MAL_PORT = 55121
MAL_INST_HOST = 192.168.70.130
MAL_INST_PORT = 5236
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121
- dmarch.ini
vim /dm8/data/DAMENG/dmarch.ini
# 添加下面内容
# 注意:第三行填写的是主机的服务名 同理,备机需填写主机的服务名
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSERVER01
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
- dmwatcher.ini
vim /dm8/data/DAMENG/dmwatcher.ini
# 添加下面内容
[DAMENG]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /dm8/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
4、修改参数
同主库
(1)数据库切换为mount模式 可以通过disql或管理工具
- disql
cd /dm8/bin
./disql SYSDBA/SYSDBA
- 管理工具
在数据库上右键–>管理服务器 ---->系统管理
(2)执行以下sql
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331); -- 这个参数可以自己设置,但是要保证主备一致
alter database primary;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
5、守护进程启动
在主备机均执行下面命令,主机先执行,备机后执行
cd /dm8/bin
./dmwatcher /dm8/data/DAMENG/dmwatcher.ini
6、监视器
(1)创建监视文件
vim /dm8/dmmonitor.ini
#添加下面内容
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[DAMENG]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.70.129:65101
MON_DW_IP = 192.168.70.130:65121
(2)启动
cd /dm8/bin
./dmmonitor /dm8/dmmonitor.ini
7、注册服务
将数据守护服务、监控服务注册到系统。
(1)数据守护
主备都要执行注册,主机先执行,备机后执行
cd /dm8/script/root
./dm_service_installer.sh -t dmwatcher -p DMWATCHER -watcher_ini /dm8/data/DAMENG/dmwatcher.ini
(2)监控服务
cd /dm8/script/root
./dm_service_installer.sh -t dmmonitor -p DMMONITOR -monitor_ini /dm8/dmmonitor.ini
8、启动顺序
- 启动主库实例(mount)
- 启动备库实例(mount)
- 启动主库守护进程
- 启动备库守护进程
- 启动监视器
问题
1、主备数据库不一致
启动监视器后,发现主备一直是在mount的状态,没有被守护进程拉起到open状态,查看最后两个lsn信息,发现主备不一致。
最后将主库重新备份,备机通过这个备份还原。
然后通过以下顺序启动,可以看到,主备均变为OPEN状态
- 启动主库实例(mount)
- 启动备库实例(mount)
- 启动主库守护进程
- 启动备库守护进程
- 启动监视器
不一致实际在启动主备实例(mount)时就可以看到,会打印输出信息。
2、OGUID
在执行 sp_set_oguid(453331); 要保证主备都设置,且设置的一致。
在出现上面问题1后,将备库重新还原,但忘记重新设置 OGUID,也导致了主备一致mount。
3、重启顺序
- 关闭监视器
- 关闭主库守护进程
- 关闭备库守护进程
- 关闭主库实例
- 关闭备库实例
- 启动主库实例(mount)
- 启动备库实例(mount)
- 启动主库守护进程
- 启动备库守护进程
- 启动监视器