说明:该安装在Vware虚拟机中进行。
一、准备工具
1、虚拟机及IP规划
主机名 | 数据库名 | 实例名 | 业务IP | 心跳IP |
dm1 | DAMENG | DM01 | 192.168.113.100 | 192.168.113.100 |
dm2 | DAMENG | DM02 | 192.168.113.101 | 192.168.113.101 |
dm3 | DAMENG | MON | 192.168.113.102 | 192.168.113.102 |
2、端口规划
主机名 | 实例名 | MAL_HOST | MAL_PORT | MAL_INST_HOST | MAL_INST_PORT | PORT_NUM | MAL_DW_PORT | MAL_INST_DW_HOST |
dm1 | DM01 | 192.168.113.100 | 61141 | 192.168.113.100 | 5236 | 5236 | 52141 | 33141 |
dm2 | DM02 | 192.168.113.101 | 61142 | 192.168.113.101 | 5236 | 5236 | 52142 | 33142 |
3、关闭防火墙,主备都需要
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
二、主库配置
1、单机安装数据库略,可以参看之前编写的达梦数据库安装教程。
2、在主库创建实例DM01
su - dmdba
cd /opt/dmdbms/bin
./dminit path=/dmdata/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 instance_name=DM01 SYSDBA_PWD=******** SYSAUDITOR_PWD=********
3、启动主库,进行数据库初始化,这里不需要用mount,启动再退出(exit)
cd /opt/dmdbms/bin
./dmserver /dmdata/data/DAMENG/dm.ini
4、进行脱机备份
cd /opt/dmdbms/bin
./dmrman CTLSTMT="BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dmdata/dmbak/BACKUP'"
5、将备份的文件拷贝到备库中
scp -r /dmdata/dmbak/BACKUP/ root@192.168.113.101:/dmdata/dmbak/
三、备库配置
1、在主库创建实例DM02(创建实例之后不需要启动)
su - dmdba
cd /opt/dmdbms/bin
./dminit path=/dmdata/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 instance_name=DM02 SYSDBA_PWD=******** SYSAUDITOR_PWD=*******
2、将备份文件恢复到备库中
su - dmdba
cd /opt/dmdbms/bin
./dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
3、对主备库进行检查
启动主库和备库(以mount模式)
su - dmdba
cd /opt/dmdbms/bin
./dmserver /dmdata/data/DAMENG/dm.ini mount
在主库和备库上分别重新再开一个终端
su - dmdba
cd /opt/dmdbms/bin
./disql SYSDBA/Gengzhi123456!@localhost:5236
select permanent_magic;
select file_lsn,cur_lsn from v$rlog;
主库:
备库:
四、修改ini文件配置参数
1、修改dm.ini(主备库都需要修改)
su - dmdba
vi /dmdata/data/DAMENG/dm.ini
主要修改ALTER_MODE_STATUS、ENABLE_OFFLINE_TS、MAL_INI、ARCH_INI四个参数
(1)主库
INSTANCE_NAME = DM01 #主库实例名
PORT_NUM = 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID --dm.ini默认为1,主备库需要修改为0
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 --dm.ini默认为1,此处主备库都修改为2
MAL_INI = 1 #打开 MAL 系统 --dm.ini默认为0,主备库需要修改为1
ARCH_INI = 1 #打开归档配置 --dm.ini默认为0,主备库需要修改为1
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
(2)备库
INSTANCE_NAME = DM02 #备库实例名
PORT_NUM = 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID --dm.ini默认为1,主备库需要修改为0
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 --dm.ini默认为1,此处主备库都修改为2
MAL_INI = 1 #打开 MAL 系统 --dm.ini默认为0,主备库需要修改为1
ARCH_INI = 1 #打开归档配置 --dm.ini默认为0,主备库需要修改为1
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
2、dmarch.ini
su - dmdba
vi /dmdata/data/DAMENG/dmarch.ini
(1)主库
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM02 #实时归档目标实例名 --主库填写备库实例名,备库填写主库实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/arch/ #本地归档文件存放路径 --根据规划填写归档路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 4096 #单位 Mb, 0 表示无限制,范围 1024~4294967294M (必须改成非0)
(2)备库
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM01 #实时归档目标实例名 --主库填写备库实例名,备库填写主库实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/arch/ #本地归档文件存放路径 --根据规划填写归档路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 4096 #单位 Mb, 0 表示无限制,范围 1024~4294967294M (必须改成非0)
3、dmmal.ini
su - dmdba
vi /dmdata/data/DAMENG/dmmal.ini
主库与备库想同:
MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DM01 #主库实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.113.100 #MAL 系统监听 TCP 连接的 IP 地址 --规划主库的IP
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口 --规划的端口
MAL_INST_HOST = 192.168.113.100 #实例的对外服务 IP 地址 --规划主库的IP
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致 --规划的端口
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 连接的端口 --规划的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口 --规划的端口
[MAL_INST2]
MAL_INST_NAME = DM02 #备库实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.113.101 #--规划的备库IP
MAL_PORT = 61142 #--规划的端口
MAL_INST_HOST = 192.168.113.101 # --规划的备库IP
MAL_INST_PORT = 5236 #--规划的端口
MAL_DW_PORT = 52142 #--规划的端口
MAL_INST_DW_PORT = 33142 #--规划的端口
4、dmwatcher.ini
su - dmdba
vi /dmdata/data/DAMENG/dmwatcher.ini
主库与备库想同
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值 --设置的OGUID值
INST_INI = /dmdata/data/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
五、配置监视器
1、确认监视器dmmonitor.ini
su - dmdba
vi /opt/dmdbms/bin/dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = /dmdata/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #日志上限,单位 MB,0表示不限制
[GRP1]
MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置
#注意这里 IP 对应 dmmal.ini 中的 MAL_HOST, PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.113.100:52141
MON_DW_IP = 192.168.113.101:52142
2、非确认监视器dmmonitor_manual.ini
在配置监视器时,一般配置好确认监视器后,建议再配置一个非确认监视器的配置文件,在主名发生切换时,可以通过前台的方式启动非确认监视器进行手动切换。非确认监视器是通过将监视器配置文件中 MON_DW_CONFIRM 参数值修改为 0来实现,示例如下:
su - dmdba
vi /opt/dmdbms/bin/dmmonitor_manual.ini
MON_DW_CONFIR =0 #0:非确认(故障手切)1:确认(故障自切)
MON_LOG_PATH =home/dmdba #监视器日志文件存放路径,必须和确认监视器的不一样
MON_LOG_INTERVAL=60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE=32 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT=0#日志上限,单位 MB,0表示不限制
[GRP1]
MON_INST_OGUID=453331 #组GRP1的唯一OGUID值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置
#注意这里 IP 对应 dmmal.ini 中的 MAL_HOST, PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.113.100:52141
MON_DW_IP = 192.168.113.101:52142
3、启动非确认监视器
这里如果用root启动,需要去bin目录下执行,否则报找不到文件或目录
/opt/dmdbms/bin/dmmonitor /opt/dmdbms/bin/dmmonitor_manual.ini
六、启动服务并修改参数OGUID
主备库中都要执行
su - dmdba
cd /opt/dmdbms/bin
./dmserver /dmdata/data/DAMENG/dm.ini mount
1、在主库中执行
cd /opt/dmdbms/bin
./disql
#逐行执行如下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);
SELECT OGUID FROM V$INSTANCE;
2、在备库中执行
cd /opt/dmdbms/bin
./disql
#逐行执行如下sql
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);
SELECT OGUID FROM V$INSTANCE;
七、注册服务
以root用户
cd /opt/dmdbms/script/root
1、主库
(1)服务器服务
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DAMENG/dm.ini -m mount -p DM01
(2)监控服务
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini -p DM01
2、备库
(1)服务器服务
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DAMENG/dm.ini -m mount -p DM02
(2)监控服务
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini -p DM02
3、监视器
./dm_service_installer.sh -t dmmonitor -monitor_ini /opt/dmdbms/bin/dmmonitor.ini -p MON
八、集群启动
使用dmdba用户,启动顺序:数据库实例->守护进程->监视器
1、启动数据库
主库
cd /opt/dmdbms/bin
./DmServiceDM01 start
备库
cd /opt/dmdbms/bin
./DmServiceDM02 start
2、启动守护进程
主库
./DmWatcherServiceDM01 start
备库
./DmWatcherServiceDM02 start
3、启动监视器
前台启动方式:
cd /opt/dmdbms/bin
./dmmonitor /opt/dmdbms/bin/dmmonitor.ini
后台启动方式:
cd /opt/dmdbms/bin
./DmMonitorServiceMON start
4、验证主备库数据是否同步
主库
cd /opt/dmdbms/bin
./disql
#逐条执行sql
create table table01(id int);
insert into table01 values (2024);
commit;
备库
select * from table01;
达梦数据库主备教程,更多相关内容请移步达梦官方网站:
https://eco.dameng.com