达梦数据库主从

达梦数据库技术文档:产品手册 | 达梦技术文档 (dameng.com)

一、安装达梦数据库软件

./DMinstall.bin -i

首先,在主服务器和从服务器上都需要安装达梦数据库软件。确保两台服务器上的数据库软件版本一致。其次,虚拟机内存必须够4096MB。

二、集群规划

一主一备,在备机器上安装非确认监视器

A机器       B机器
业务IP192.168.31.200192.168.31.201
心跳IP192.168.31.200192.168.31.201
实例名DW_01DW_02
实例端口52365236
MAL 端口6114161142
MAL 守护进程端口3314133142
守护进程端口5114151142
OGUID16811
守护组DW
安装目录/data/dmdbms
实例目录/data/dmdata
归档目录/data/dmarch
备份目录/data/dmbak
归档上限51200MB

说明: 具体规划及部署方式以现场环境为准。

1. OGUID 取值范围为 0-2147483647。 建议统一取为主库心跳 ip 的后三组数字。 例: 主库心跳 ip 为 192.168.1.1, 则 OGUID 取为 16811

2. 数据库名建议与应用系统名保持一致, 实例名为“业务名_01”, 实例名长度不超过 16 个字符。 例: 应用系统名为 DW,库名为 DW, 守护组名为 DW,主库实例名为 DW_01,备库实例名为 DW_02。

3. 对 于 ipv4 , 直 接 使 用 ip 地 址 即 可 , 例 如 : MAL_INST_HOST = 192.168.100.109。

4. 对于 ipv6, 若当前环境存在多块网卡, 需要用%号指定具体有效的网卡序号; 若只有一块网卡或者已配置默认网卡, 则可以不指序号。 例如: MAL_INST_HOST = fe80::6aa7:3f02:59b3:bcb4%3。 其中, %3 为实际网卡序号

三、模式切换说明

 实时归档的读写分离, 其事务一致模式 仅在 dmwatcher.ini 配置自动切换, 才会生效。

ARCH_WAIT_APPLY 0: 高性能模式 1: 事务一致模式

故障手动切换的 ARCH_WAIT_APPLY 只能=0。

故障自动切换的 ARCH_WAIT_APPLY 可以=0 也能=1。 判断依据: 业务要不要查询备机最新数据。 如果要查询, 配置为 1(较大性能衰减) , 如果不需要, 配置为 0。

四、配置主机器

有些操作必须要切换到达梦DBA用户,如果用root操作会各种操作系统的执行文件权限报错,导致数据库起不来,这个点很重要。如果你操作过程中忘了切换用户,那需要全部重来很麻烦!!

1. 初始化实例,备份数据

-- 初始化实例

一个达梦数据库在常规情况下只能有一个实例

1. 确保/data/目录属主属组是dmdba:dinstall

2. 确保是dmdba用户

[dmdba@~]# /data/dmdbms/bin/dminit PATH=/data/dmdata/ INSTANCE_NAME=DW_01 DB_NAME=DW PAGE_SIZE=32 LOG_SIZE=2048

# PATH=/data/dmdata/:这个参数指定了数据库实例的存储路径
# INSTANCE_NAME=DW_01:这个参数设置了数据库实例的名称,确保它与dmmal.ini中的MAL_INST_NAME等配置保持一致
# DB_NAME=DW:这个参数设置了数据库的名称
# PAGE_SIZE=32:这个参数设置了数据库页面的大小,单位是KB
# LOG_SIZE=2048:这个参数设置了重做日志文件的大小,单位是MB 

 执行这个命令后,dminit会创建一个新的数据库实例,并在指定的路径下生成相关的配置文件和数据文件。这包括dm.ini(主配置文件)dmarch.ini(归档配置文件)dmmal.ini(MAL配置文件)等,以及数据库的初始数据文件。

-- 启动服务

[dmdba@~]# /data/dmdbms/bin/dmserver /data/dmdata/DW/dm.ini

-- 开启归档

[dmdba@~]# /data/dmdbms/bin/disql SYSDBA/SYSDBA@192.168.31.200:5236 
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/data/dmarch, TYPE=LOCAL, FILE_SIZE=2048, SPACE_LIMIT=51200';
SQL> ALTER DATABASE OPEN;

# ALTER DATABASE MOUNT; 将数据库挂载到实例上
# ALTER DATABASE ARCHIVELOG; 将数据库设置为归档模式
# ALTER DATABASE ADD ARCHIVELOG  'DEST=/data/dmarch, TYPE=LOCAL, FILE_SIZE=2048, SPACE_LIMIT=51200'; 用于向数据库添加一个新的归档日志目的地。归档日志将被写入到/data/dmarch目录下,类型为本地存储(LOCAL),单个归档日志文件的大小限制为2048MB,总空间限制为51200MB
# ALTER DATABASE OPEN; 打开数据库,使其可以接受客户端的连接请求,在数据库处于MOUNT状态或NOMOUNT状态时,可以使用此命令打开数据库。 

--备份数据

SQL> BACKUP DATABASE BACKUPSET '/data/dmdata/DW/bak/BACKUP_FILE';

--修改 dm.ini

SQL> SP_SET_PARA_VALUE (2,'PORT_NUM',5236);
SQL> SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);
SQL> SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
SQL> SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
SQL> SP_SET_PARA_VALUE (2,'MAL_INI',1);
SQL> SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);

- SP_SET_PARA_VALUE (2,'PORT_NUM',5236);  这条命令将数据库实例的监听端口设置为5236
- SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);这里设置的是数据守护的不活跃间隔,单位为秒,定义主从数据库之间的心跳检测间隔
- SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
- SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
- SP_SET_PARA_VALUE (2,'MAL_INI',1);
- SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);

 注意: SP_SET_PARA_VALUE (2,参数名,参数值);对dm.ini 文件的参数修改说明如下。

-- 关闭服务

2. 修改dmarch.ini(归档配置文件)

1)要用于配置本地归档和远程归档,其中本地归档在DM备份与还原过程中使用的日志均为本地归档日志

2)dmarch.ini文件中的配置项包括归档类型(ARCH_TYPE)、归档目标路径(ARCH_DEST)、单个归档文件大小(ARCH_FILE_SIZE)以及归档空间限制(ARCH_SPACE_LIMIT)等

3)dmarch.ini文件的生效需要依赖于dm.ini文件中的ARCH_INI参数。只有将ARCH_INI参数设置为1,dmarch.ini文件才能生效

[dmdba@~]# vi /data/dmdata/DW/dmarch.ini
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /data/dmarch/ #本地归档存放路径
ARCH_FILE_SIZE = 2048 #单个归档大小, 单位 MB
ARCH_SPACE_LIMIT = 51200 #归档上限, 单位 MB
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DW_02 #实时归档目标实例名

# [ARCHIVE_LOCAL] 本地归档
# ARCH_TYPE = LOCAL 指定归档类型为本地归档
# ARCH_DEST = /data/dmarch/ 定义归档日志的存放路径
# ARCH_FILE_SIZE = 2048 设置单个归档文件的大小为2048MB
# ARCH_SPACE_LIMIT = 51200 设置归档空间的限制为51200MB
# [ARCHIVE_REALTIME] 实时归档
# ARCH_TYPE = REALTIME 指定归档类型为实时归档
# ARCH_DEST = DW_02 定义实时归档的目标实例名,在这个例子中,归档日志将被实时传输到名为 DW_02 的数据库实例。

1 .归档日志空间上限根据实际要求调整 ARCH_SPACE_LIMIT 参数即可;

2 .主备节点的 dmarch.ini 配置文件差异在 ARCH_DEST

3. 创建 dmmal.ini

MAL(消息自动负载)配置文件

[dmdba@~]# vi /data/dmdata/DW/dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
MAL_TEMP_PATH = /data/dmdata/malpath/ #临时文件目录
MAL_BUF_SIZE = 512 #单个 MAL 缓存大小, 单位 MB
MAL_SYS_BUF_SIZE = 2048 #MAL 总大小限制, 单位 MB
MAL_COMPRESS_LEVEL = 0 #MAL 消息压缩等级, 0 表示不压缩
[MAL_INST1]
MAL_INST_NAME = DW_01 #实例名, 和 dm.ini 的 INSTANCE_NAME一致
MAL_HOST = 192.168.31.200 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.31.200 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例对外服务端口, 和 dm.ini 的 PORT_NUM一致
MAL_DW_PORT = 33141 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 52141 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = DW_02
MAL_HOST = 192.168.31.201
MAL_PORT = 61142
MAL_INST_HOST = 192.168.31.201
MAL_INST_PORT = 5236
MAL_DW_PORT = 33142
MAL_INST_DW_PORT = 52142

# MAL_CHECK_INTERVAL = 10 MAL 链路检测时间间隔
# MAL_CONN_FAIL_INTERVAL = 10  判定 MAL 链路断开的时间
# MAL_TEMP_PATH = /data/dmdata/malpath/ 临时文件目录,用于存放 MAL 通信过程中的临时文件
# MAL_BUF_SIZE = 512 单个 MAL 缓存大小
# MAL_SYS_BUF_SIZE = 2048 MAL 总大小限制
# MAL_COMPRESS_LEVEL = 0 MAL 消息压缩等级。0 表示不压缩,其他值表示不同程度的压缩
# [MAL_INST1] 两个 MAL 实例的配置部分
# MAL_INST_NAME = DW_01 实例名
# MAL_HOST = 192.168.31.200  MAL 系统监听 TCP 连接的 IP 地址
# MAL_PORT = 61141 MAL 系统监听 TCP 连接的端口
# MAL_INST_HOST = 192.168.31.200  实例的对外服务 IP 地址
# MAL_INST_PORT = 5236 实例对外服务端口
# MAL_DW_PORT = 33141 实例对应的守护进程监听 TCP 连接的端口
# MAL_INST_DW_PORT = 52141 实例监听守护进程 TCP 连接的端口

1. 主备节点的 dmmal.ini 配置文件是完全一致的

2. 对 于 ipv4 , 直 接 使 用 ip 地 址 即 可 , 例 如 : MAL_INST_HOST = 192.168.100.109。

4. 创建 dmwatcher.ini

[dmdba@~]# mkdir /data/dmdata/DW1
[dmdba@~]# vi /data/dmdata/DW1/dmwatcher.ini
[DW] #守护进程组名( 长度不能超过 16 个字符)
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #MANUAL: 故障手动切换模式 AUTO: 故障动切换模式
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 16811 #守护系统唯一 OGUID 值 , 同一守护进程组中的所有数据库、 守护进程和监视器, 都必须配置相同的 OGUID 值, 取值范围为 0-2147483647
INST_INI = /data/dmdata/DW/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #实例的自动启动功能 0: 不自动启动 1: 自动启动
INST_STARTUP_CMD = /data/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值, 配置为 0时此功能关闭, 默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值, 配置为 0 时此功能关闭, 默认关闭

[DW]  守护进程组名( 长度不能超过 16 个字符)
DW_TYPE = GLOBAL 守护类型设置为全局守护,这意味着守护进程组管理的是全局的数据复制和故障切换
DW_MODE = AUTO  MANUAL: 故障手动切换模式 AUTO: 故障动切换模式
DW_ERROR_TIME = 20 远程守护进程故障认定时间
INST_ERROR_TIME = 20 本地实例故障认定时间
INST_RECOVER_TIME = 60 主库守护进程启动恢复的间隔时间
INST_OGUID = 16811 守护系统唯一的 OGUID 值,用于在守护进程组中唯一标识每个数据库实例、守护进程和监视器
INST_INI = /data/dmdata/DW/dm.ini 
INST_AUTO_RESTART = 1
#实例的自动启动功能 0: 不自动启动 1: 自动启动
INST_STARTUP_CMD = /data/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0 
RLOG_APPLY_THRESHOLD = 0
 

1.守护进程名必须和监视器里面的守护进程名一致

5. 拷贝实例及备份集

先把B机器下的/data/dmdata/DW/ 删掉在copy

[dmdba@~]$ scp -r /data/dmdata/DW/ dmdba@192.168.1.2:/data/dmdata/DW

 6. 注册服务

[root@~]# /data/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DW_01 -dm_ini /data/dmdata/DW/dm.ini -m mount
[root@~]# /data/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p DW -watcher_ini /data/dmdata/DW1/dmwatcher.ini

 1.注册服务必须是root

五、配置份机器

1. 初始化实例和修改 dm.ini

[dmdba@~]$ /data/dmdbms/bin/dminit PATH=/data/dmdata/ INSTANCE_NAME=DW_02 DB_NAME=DW PAGE_SIZE=32 LOG_SIZE=2048
[dmdba@~]$ vi /data/dmdata/DW/dm.ini
INSTANCE_NAME = DW_02 #数据库实例名

2. 替换 dmarch.ini
 

[dmdba@~]$ vi /data/dmdata/DW/dmarch.ini
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /data/dmarch/ #本地归档存放路径
ARCH_FILE_SIZE = 2048 #单个归档大小, 单位 MB
ARCH_SPACE_LIMIT = 51200 #归档上限, 单位 MB
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DW1_01 #实时归档目标实例名

 3. 相同配置项

与 A 机器 DW1_01 的 dmmal.ini、 dmwatcher.ini 相同。

4. 恢复数据

[dmdba@~]$ /data/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/data/dmdata/DW/dm.ini' FROM BACKUPSET '/data/dmdata/DW/bak/BACKUP_FILE'"
[dmdba@~]$ /data/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/data/dmdata/DW/dm.ini' FROM BACKUPSET '/data/dmdata/DW/bak/BACKUP_FILE'"
[dmdba@~]$ /data/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/data/dmdata/DW/dm.ini' UPDATE DB_MAGIC"

 5. 注册服务

[root@~]# /data/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DW_02 -dm_ini /data/dmdata/DW/dm.ini -m mount
[root@~]# /data/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p DW -watcher_ini /data/dmdata/DW1/dmwatcher.ini

六、配置监视器

1. 配置服务

在A机器或者B机器任意搭配监视器,建议在B机器

[dmdba@~]$ vi /data/dmdbms/bin/dmmonitor.ini
MON_DW_CONFIRM = 1 #0 为非确认, 1 为确认
MON_LOG_PATH = /data/dmdbms/log/dmmonitorlog #监视器日志文件存放路径
MON_LOG_FILE_SIZE = 256 #每个日志文件为 256M, 取值 16~2048, 单位为 M, 默认值为 64, 达到最大值后, 会自动生成并切换到新的日志文件中, 如果达到设定的总空间限制, 会自动删除创建时间最早的日志文件。
MON_LOG_SPACE_LIMIT = 4096 #日志总空间大小, 取值 0 或者 256~4096, 单位为 M,默认值为 0, 表示没有空间限制
[DW]
MON_INST_OGUID = 16811 #组 GRP1 的唯一 OGUID 值, 同一守护进程组中的所有数据库、 守护进程和监视器, 都必须配置相同的 OGUID 值, 取值范围为0-2147483647
#以下配置为监视器到组 GRP1 的守护进程的连接信息, 以―IP:PORT‖ 的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST, PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.1.1:33141
MON_DW_IP = 192.168.1.2:33142

 2. 注册服务

[root@~]# /data/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p DW -monitor_ini /data/dmdbms/bin/dmmonitor.ini

七、启动服务并查看信息

1. 启动数据库并修改参数

A机器:

[dmdba@~]$ /data/dmdbms/bin/dmserver /data/dmdata/DW/dm.ini mount
[dmdba@~]$ /data/dmdbms/bin/disql SYSDBA/SYSDBA@192.168.31.200:5236
SQL> SP_SET_OGUID(16811);
SQL> ALTER DATABASE PRIMARY;

 B机器:

[dmdba@~]$ /data/dmdbms/bin/dmserver /data/dmdata/DW/dm.ini mount
[dmdba@~]$ /data/dmdbms/bin/disql SYSDBA/SYSDBA@192.168.31.201:5236
SQL> SP_SET_OGUID(16811);
SQL> ALTER DATABASE STANDBY;

 2. 启动守护进程

A/B机器:

[dmdba@~]# /data/dmdbms/bin/DmWatcherServiceDW start

3. 启动监视器
 

[dmdba@~]$ /data/dmdbms/bin/DmMonitorServiceDW start
前台启动: [dmdba@~]$ /data/dmdbms/bin/dmmonitor /data/dmdbms/bin/dmmonitor.ini

八、数据库备份策略

  • 47
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值