目录
1.数据准备
2.配置主库
2.1 配置dm.ini
2.2 配置dmmal.ini
2.3 配置dmarch.ini
2.4配置dmwatcher.ini
2.5 Mount模式启动主库
2.6 设置OGUID
2.7 修改数据库模式
3 配置备库
3.1配置dm.ini
3.2 配置dmmal.ini
3.3 配置dmarch.ini
3.4 配置dmwatcher.ini
3.5 Mount模式启动备库
3.6 设置OGUID
3.7 修改数据库模式
3.8配置单实例监视器
3.9 配置确认监视器
3.10 配置普通监视器
3.11 监视器日常命令
3.12 集群启停
3.13 配置服务启动
3.14 启动守护进程
3.15 启动监视器
3.16 服务名配置dm_svc.conf
3.17 测试
4日常维护管理
4.1 图形化工具
4.2 启动dlsql
4.3 创建表空间
4.4 创建用户
4.5 给用户授权
4.6 登录用户
4.7 创建表
4.8 查询用户下的表
5 主备切换
5.1 启动监视器
5.2 查看监视器可执行命令
5.3 登录监视器
5.4 查看系统当前运行状态
5.5 主备库转换
1.数据准备
在搭建数据守护系统前,应注意数据守护系统中各实例使用的 DM 服务器版本应一致,同时还应注意各实例所在主机的操作系统位数、大小端模式、时区及时间设置都应一致,以及使用同一个用户启动 DM 服务器和守护进程 dmwatcher,以免系统在运行时出现意想不到的错误。如果是初始搭建环境,可以通过对主库脱机备份、对备库脱机还原的方式来准备数据,如果主库已经处于运行状态,则可以对主库进行联机备份、对备库脱机还原的方式来准备数据。
- 1 归档配置
两种方式都需要服务器配置本地归档,本地归档配置方式如下:
1.配置 dm.ini,打开 ARCH_INI 参数
ARCH_INI = 1 #打开归档配置
2.配置 dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 102400 #单位 Mb,0 表示无限制,范围024~4294967294M
1.2脱机备份、脱机还原方式
- 正常关闭数据库
- 进行脱机备份
./dmrman CTLSTMT="BACKUP DATABASE '/dm/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm/data/BACKUP_FILE_01'"
- 拷贝备份文件到备库所在机器
scp -r /home/dmdba/dmdbms/data/DW_A/backup_dw_a/
dmdba@192.168.139.101:/home/dmdba/dmdbms/data/DW_B
- 执行脱机数据库还原与恢复
./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATe DB_MAGIC"
1.3 联机备份、脱机还原方式
- 对主库进行联机备份操作
SQL> BACKUP DATABASE BACKUPSET '/dm/data/BACKUP_FILE_01';
2.拷贝备份文件到备库所在机器
scp -r /home/dmdba/dmdbms/data/DW_A/backup_dw_a/ dmdba@192.168.139.101:/home/dmdba/dmdbms/data/DW_B
3.执行脱机数据库还原与恢复
./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATe DB_MAGIC"
2.配置主库
2.1 配置dm.ini
#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16
INSTANCE_NAME = GRP1_RWC_01
PORT_NUM = 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
2.2 配置dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP1_RWC_01
#实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 10.196.128.61 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.196.128.61 #实例的对外服务 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 = GRP1_RT_02
MAL_HOST = 10.196.128.62
MAL_PORT = 61142
MAL_INST_HOST = 10.196.128.62
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
2.3 配置dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RWC_02 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 102400 #单位 Mb,0 表示无限制,范围 1024~4294967294M
2.4配置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 值
INST_INI = /dmdata/MAILDB/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
2.5 Mount模式启动主库
./dmserver /dm/data/DAMENG/dm.ini mount
2.6 设置OGUID
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
2.7 修改数据库模式
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>alter database primary;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
3 配置备库
3.1配置dm.ini
#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16
INSTANCE_NAME = GRP1_RWC_02
PORT_NUM = 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
3.2 配置dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP1_RWC_01
#实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 10.196.128.61 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.196.128.61 #实例的对外服务 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 = GRP1_RT_02
MAL_HOST = 10.196.128.62
MAL_PORT = 61142
MAL_INST_HOST = 10.196.128.62
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
3.3 配置dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RWC_01 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 102400 #单位 Mb,0 表示无限制,范围 1024~4294967294M
3.4 配置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 值
INST_INI = /dmdata/MAILDB/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
3.5 Mount模式启动备库
./dmserver /dm/data/DAMENG/dm.ini mount
3.6 设置OGUID
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
3.7 修改数据库模式
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>alter database standy;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
3.8配置单实例监视器
我们在做主备环境或读写分离集群时,监视器起到一个主备切换和监视数据库状态的功能。达梦监视器分2种类型:确认监视器和普通监视器。
如果我们把确认监视器放在后台运行那么我们就看不到广播信息了。所以这里我们这里可以用2个监视器。
确认监视器放后台运行(使用服务方式后台运行),普通监视器用来查看数据库状态信息(使用ini配置文件形式临时登录查看)。
3.9 配置确认监视器
修改 dmmonitor.ini 配置确认监视器,其中 MON_DW_IP 中的 IP 和 PORT 和 dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致。
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 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.0.141:52141
MON_DW_IP = 192.168.0.142:52142
3.10 配置普通监视器
普通监视器的配置文件 dmmonitor1.ini
MON_DW_CONFIRM = 0 #非监视器模式
MON_LOG_PATH = /dm/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.0.141:52141
MON_DW_IP = 192.168.0.142:52142
3.11 监视器日常命令
Show显示目前集群状态
Login登录
SYSDBA/SYSDBA管理员账号登录
Switchover切换主备
更多命令可以查看官方文档
3.12 集群启停
达梦所有服务启停都有两种方式:
- 不配置服务,使用ini配置文件来启停,这种方式是临时的
- 配置服务的方式,dmdba用户可以在/dm8/bin目录下直接执行服务名的脚本,或者使用root用户使用systemctl来执行
启动顺序:主库守护进程——备库守护进程——监视器
关闭顺序:监视器——备库守护进程——主库守护进程
3.13 配置服务启动
注册服务需要使用root用户:
su root
cd 安装目录/script/root/
./dm_service_installer.sh //-h可以看参数解释
-t dmwatcher //-t表示要创建服务的类型,是实例服务dmserver,还是守护集群dmwatcher,还是监视器dmmonitor
-watcher_ini /dm8/dmdata/DAMENG/dmwatcher.ini //-watcher_ini 表示你创建服务所依据的ini配置文件,-dm_ini是dmserver实例服务,-monitor_ini是监视器配置文件
-p DMWATCHER //-p是服务名后缀,完整的服务名还包括默认的DmService,DmWatcher,DmMonitor前缀
3.14 启动守护进程
启动各个主备库上的守护进程,启动守护进程会自动启动实例
配置服务前启停:
dmdba用户:
cd /dm8/bin
./dmwatcher /dm/data/DAMENG/dmwatcher.ini
配置服务后启停:
dmdba用户:
cd /dm8/bin
./DmWatcherRWC01 start
./DmWatcherRWC01 stop
Root用户:
Systemctl start DmWatcherRWC01.service
Systemctl stop DmWatcherRWC01.service
Systemctl status DmWatcherRWC01.service //查看状态
3.15 启动监视器
配置服务前:
./dmmonitor /dm/data/dmmonitor.ini
配置服务后:
./DmMonitorMONITOR start
./DmMonitorMONITOR stop
3.16 服务名配置dm_svc.conf
参考文章:https://blog.csdn.net/qq_37358909/article/details/110955828
单服务
TIME_ZONE=(480)
LANGUAGE=(cn)
DM_SERVER=(192.168.1.131:5236,192.168.1.132:5236)
[DM_SERVER]
LOGIN_MODE =(1) //只连接主库
SWITCH_TIME=(60) //60: 检测到故障服务器之间切换的次数
SWITCH_INTERVAL=(1000) //1秒 服 务 器 之 间 切 换 的 时 间 间 隔
多服务
TIME_ZONE=(480)
LANGUAGE=(cn)
DMHA_SERVER=(192.168.1.131:5236,192.168.1.132:5236)
DMRW_SERVER=(192.168.1.10:5236,192.168.1.11:5236)
[DMHA_SERVER] //主备服务
LOGIN_MODE =(1)
SWITCH_TIME=(60)
SWITCH_INTERVAL=(1000)
[DMRW_SERVER] //读写分离服务
LOGIN_MODE =(1)
RW_SEPARATE=(1) //指定是否启用读写分离。0 表示不启用读写分离;1 表示启用读写分离,默认值为 0。
RW_PERCENT=(30) //启用读写分离时,读写分离的分发比例,有效值范围 0~100,默认值为 25。
SWITCH_TIME=(60)
SWITCH_INTERVAL=(1000)
3.17 测试
测试1(主机故障)
- 制造主机故障,测试备机可接管并持续提供服务。主机直接关机,接管成
- 恢复主机故障,并将故障机加入集群,备机切换为主机。主机断电后,备机接管切换为主机,主机重新接入为备机身份;
最好将防火墙关掉,并且取消防火墙的开机自启,不然会导致集群通讯超时,无法自动切换。
如果出现双主库的情况,可以手动进行调整,选择一台数据库将其配置成备库
ALTER DATABASE MOUNT; //设置配置模式
ALTER DATABASE STANDBY; //将数据库改为备库模式
- 手动切换主备集群,恢复原主备集群的位置。
4日常维护管理
4.1 图形化工具
图形化工具可以更加方便地去操作管理数据库,达梦的管理工具放在安装目录下的tool目录中,tool是达梦的图形化工具包,除了管理工具manager,还有迁移工具DTS,备份还原工具console,实例配置助手dbca等。
执行方式:
将系统用户切换为dmdba,如果是root会报错
进入/dm8/tool
./manager
4.2 启动dlsql
Disql是达梦的命令行交互工具
#进入到安装路径的 bin 目录下。
cd /home/dmdba/dmdbms/bin
#输入命令打开 DIsql
./disql
4.3 创建表空间
CREATE TABLESPACE TBS1 DATAFILE '/home/dmdba/dmdbms/data/DAMENG/ TBS1_01.dbf' SIZE 128;
4.4 创建用户
达梦数据库中,创建用户的同时会自动创建一个同名的模式。
#创建用户 U1,密码为 DAMENG123,有自己的独立表空间 TBS1。
(此时会自动生成一个模式 U1)
CREATE USER U1 IDENTIFIED BY DAMENG123 DEFAULT TABLESPACE TBS1;
4.5 给用户授权
#赋给用户 U1 角色 DBA 的权限。
GRANT DBA TO DMDBA;
4.6 登录用户
#登录用户 U1
CONN U1/DAMENG123;
4.7 创建表
创建表的时候,要在表名前面加上该用户的模式名:”模式名.表名”。然后在
后面括号内填写列名和列定义)。
#创建表 UTB。
CREATE TABLE U1.UTB (id int,name varchar(15));
#在表 UTB 中插入数据。
INSERT U1.UTB VALUES(1,’Bob’),(2,’Tom’);
#查询表 UTB 的信息。
SELECT * FROM U1.UTB;
4.8 查询用户下的表
#查询用户 U1 下所有表的表名和注释。
SELECt * FROM ALL_TAB_COMMENTS WHERe OWNER=’U1’;
#查询当前登录用户下所有表的详细信息。
SELECt * FROM USER_ALL_TABLES;
#查询数据库下所有的表。
SELECt * FROM DBA_TABLES;
5 主备切换
5.1 启动监视器
#监视器服务器/dm8/bin 目录下启动
./dmmonitor /dm8/dmmonitor/dmmonitor1.ini
5.2 查看监视器可执行命令
#启动监视器后输入help
5.3 登录监视器
在监视器界面直接输入Login进入登录选项
账户:SYSDBA
密码:SYSDBA
5.4 查看系统当前运行状态
Tip
5.5 主备库转换
#登录监视器后输入switchover进行主备切换



