达梦数据库主备部署

服务器硬件需求

按实际业务需求,选择合适的服务器,参考如下:

硬件 要求
物理内存 >= 16 GB
交换分区 Swap空间 >= 物理内存
/tmp大小 > 1000MB
网络 物理机器需要 2 个网卡
磁盘 根据实际应用系统需要挂载合适大小磁盘
时间服务器 按机房要求配置连接时间服务器

目录与存储规划:

用途 目录路径 备注
数据库软件安装目录 /dm8 可用空间 > 50GB
实例安装目录 /dmdata 单独挂载性能最好的磁盘建议SSD
归档日志存放目录 /dmarch 单独挂载磁盘
备份文件存放目录 /dmbak 单独挂载磁盘
IP规划
主机	网卡	IP地址	备注
DM1	Eth0	192.168.2.37	对外通信
DM1	Eth1	10.0.0.1	主备之间通信
DM2	Eth0	192.168.2.38	对外通信
DM2	Eth1	10.0.0.2	主备之间通信

特别注意:

所有关于dm的目录及下属目录属主和属组必须为 "dmdba" 和 "dinstall"
操作步骤(主备都需要操作)

1、用户与组

groupadd dinstall	//创建用户组
useradd  -g dinstall -m -d /home/dmdba -s /bin/bash  dmdba //创建用户
passwd dmdba            //修改用户密码

2、资源限制

vim /etc/security/limits.conf
#添加如下内容
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc  65536
dmdba hard nproc  65536
dmdba soft stack  65536
dmdba hard stack  65536

3、用户环境变量

vi /home/dmdba/.bash_profile   //文件末尾添加如下内容:

export DM_HOME=/dm8
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin

4、安装数据库(这里以centos7系统安装)

1)将安装包上传到服务器后使用 root 用户挂载 iso 安装包文件到 /mnt 目录下:

2)切换到dmdba用户

Su – dmdba
Cd /mnt
./DMInstall.bin -i
① 选择安装语言,c/C中文,e/E英文
② 提示是否安装key文件,输入y,输入key文件的位置
③ 选择时区,21即东8区
④ 选择安装类型,默认典型安装(包含所有内容)



3)使用root用户执行命令

/dm8/script/root/root_installer.sh


4)授权属主

Chown -R dmdba.dinstal /dmdata /dm8 /dmbak /dmarch

5、使用 dminit 工具初始化实例

cd /dm8/bin
./dminit path=/dmdata page_size=32


6、参数优化

安装完成需要调整 dm.ini 文件参数。

参数名称	               参数含义	                                       参数默认值  参数建议
BUFFER	               系统缓冲区大小,以 MB 为单位	                100	  系统物理内存的 60%~80%
BUFFER_POOLS	       BUFFER 系统分区数	                                19	  物理内存 64 GB 以下 53 GB 以上
HJ_BUF_GLOBAL_SIZE     HASH 连接操作符的数据总缓存大小,以 MB 为单位	500	  5000
HJ_BUF_SIZE	       单个 HASH 连接操作符的数据总缓存大小,以 MB 为单位	50	  500
DICT_BUF_SIZE	       字典缓冲区大小,以 MB 为单位	                5	  100
TASK_THREADS	       任务线程个数	                                4	  CPU 核数
IO_THR_GROUPS	       非 Windows 下有效,表示 IO 线程组个数	        2	  CPU 核数/2
MAX_SESSIONS	       系统允许同时连接的最大数	                        100	  1000
MAX_SESSION_STATEMENT  单个会话上允许同时打开的语句句柄最大数	        100	  20000
CACHE_POOL_SIZE	       SQL 缓冲池大小,以 MB 为单位	                20	  200

7、启动实例

以系统服务方式启动实例,DM 提供脚本将数据库实例注册为操作系统服务
root 用户下切换到 /dm8/script/root/: 执行以下命令,执行脚本注册服务:

./dm_service_installer.sh -t dmserver -p dmserver -dm_ini /dmdata/DAMENG/dm.ini


执行以下命令,以服务方式启动实例:

systemctl start DmServicedmserver

启动成功后,测试是否能连接数据库:

能连接数据库后,就关闭实例,进行主备部署
8、主备部署

注意事项:

初始化的实例必须先启动一次,才能脱机备份。

systemctl stop DmServicedmserver

1)主库脱机备份(确认DMAP服务已启动)

ps -ef|grep dmap


若未启动,则先启动DMAP服务,到/dm8/bin目录下执行以下命令

./DmAPService start

关闭实例后,使用dmrman工具进行脱机备份主库,dmdba用户到/dm8/bin目录下执行以下命令:

./dmrman

执行backup备份全库

backup database '/dmdata/DAMENG/dm.ini' backupset '/dmbak/bakfull';


2)备库还原

将主库的备份拷贝到备库合适目录,执行以下命令:

scp -r /dmbak/bakfull/ dmdba@68.2.38:/dmbak/


备库关闭数据库实例后,使用dmrman工具还原,dmdba用户到/dm8/bin目录下执行

./dmrman

执行 restore:

restore database '/dmdata/DAMENG/dm.ini' from backupset '/dmbak/bakfull';


执行 recover:

recover database '/dmdata/DAMENG/dm.ini' from backupset '/dmbak/bakfull';


执行 recover update db_magic:

recover database '/dmdata/DAMENG/dm.ini' update db_magic;


9、配置实例的配置文件

修改实例的文件参数 dm.ini

主库:
INSTANCE_NAME = dmrw1
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
备库:
INSTANCE_NAME = dmrw2
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

归档配置文件 dmarch.ini

主库:
[ARCHIVE_REALTIME]
ARCH_TYPE        = REALTIME        #实时归档类型
ARCH_DEST        = dmrw2           #实时归档目标实例名(主库侧填写备库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE        = LOCAL           #本地归档类型
ARCH_DEST        = /dmarch         #本地归档文件存放路径
ARCH_FILE_SIZE   = 128             #单位 MB,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240           #单位 MB,0 表示无限制,范围 1024~4294967294 MB
备库
[ARCHIVE_REALTIME]
ARCH_TYPE        = REALTIME        #实时归档类型
ARCH_DEST        = dmrw1           #实时归档目标实例名(备库侧填写主库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE        = LOCAL           #本地归档类型
ARCH_DEST        = /dmarch         #本地归档文件存放路径
ARCH_FILE_SIZE   = 128             #单位 MB,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240           #单位 MB,0 表示无限制,范围 1024~4294967294 MB

配置MAL系统文件 dmmal.ini

主库与备库内容相同
MAL_CHECK_INTERVAL      = 5             #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL  = 5             #判定 MAL 链路断开的时间
[MAL_INST1]
  MAL_INST_NAME     = dmrw1             #与 dm.ini 中的 INSTANCE_NAME 一致
  MAL_HOST          = 10.0.0.1          #MAL 系统监听 TCP 内部网络 IP
  MAL_PORT          = 61141             #MAL 系统监听 TCP 连接的端口
  MAL_INST_HOST     = 192.168.2.37      #实例的对外服务 IP 地址
  MAL_INST_PORT     = 5236              #与 dm.ini 中的 PORT_NUM 一致
  MAL_DW_PORT       = 52141             #实例对应的守护进程监听 TCP 端口
  MAL_INST_DW_PORT  = 33141

[MAL_INST2]
  MAL_INST_NAME     = dmrw2             #与 dm.ini 中的 INSTANCE_NAME 一致
  MAL_HOST          = 10.0.0.2          # MAL 系统监听 TCP 内部网络 IP
  MAL_PORT          = 61141             # MAL 系统监听 TCP 连接的端口
  MAL_INST_HOST     = 192.168.2.38      #实例的对外服务 IP 地址
  MAL_INST_PORT     = 5236              #与 dm.ini 中的 PORT_NUM 一致
  MAL_DW_PORT       = 52141             #实例对应的守护进程监听 TCP 端口
  MAL_INST_DW_PORT  = 33141

配置守护进程配置文件 dmwatcher.ini

主库与备库内容相同
[GRP_RW] 
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/DAMENG/dm.ini   #dm.ini 配置文件路径
INST_AUTO_RESTART  = 1                       #打开实例的自动启动功能
INST_STARTUP_CMD   = /dm8/bin/dmserver       #命令行方式启动

10、以 Mount 方式启动数据库实例

使用 dmdba 用户,到数据库安装目录的 bin 下执行(主备库都执行)。

./dmserver /dmdata/DAMENG/dm.ini mount

在新的终端使用 disql 工具连接数据库,执行以下命令:

./disql SYSDBA/SYSDBA

主备库都修改 oguid,执行以下命令:

sp_set_oguid(453331);

主库修改数据库模式为 primary,执行以下命令:

alter database primary;

备库修改数据库模式为 standby,执行以下命令:

alter database standby;

11、启动守护进程

dmdba 用户下,到数据库安装目录的 bin 下执行(主备库都执行)。

./dmwatcher /dmdata/DAMENG/dmwatcher.ini

守护进程启动后,会将 Mount 的实例 Open。(不能截停)

12、注册服务

以上启动为前台方式启动,仅用户搭建过程中验证配置。配置没问题后需要将实例,守护进程和确认监视器注册为系统服务。使用 root 用户,到数据库安装目录的 script/root 下,执行。(另开窗口执行)

注册守护进程服务(主备库都执行)

./dm_service_installer.sh -t dmwatcher -p dmrw -watcher_ini /dmdata/DAMENG/dmwatcher.ini

注册数据库实例服务(主备库都执行)

./dm_service_installer.sh -t dmserver -p dmrw -dm_ini /dmdata/DAMENG/dm.ini

13、以服务方式启动

需要将以上两个进程dmserver和dmwatcher kill掉才能启动

启动数据库实例,执行以下命令:

systemctl start DmServicedmrw
systemctl enable DmServicedmrw

启动守护进程,执行以下命令:

systemctl start DmWatcherServicedmrw
systemctl enable DmWatcherServicedmrw

14、disql 客户端验证

使用 disql 客户端登录主库,创建测试表,插入数据,执行以下命令:

./disql SYSDBA/SYSDBA@192.168.2.37:5236

SQL 提示符下执行以下命令:

create table test(id int);
insert into test values (1);
commit;

使用 disql 客户端登录备库,查询测试表验证,执行以下命令:

./disql SYSDBA/SYSDBA@192.168.2.38:5236

SQL 提示符下执行以下命令:

select * from test;

特别注意:

主备集群重启有顺序要求:

关闭主库守护进程:systemctl stop DmWatcherServicedmrw
关闭备库守护进程:systemctl stop DmWatcherServicedmrw
关闭主库实例:    systemctl stop DmServicedmrw
关闭备库实例:    systemctl stop DmServicedmrw
启动主库实例:    systemctl start DmServicedmrw
启动备库实例:    systemctl start DmServicedmrw
启动主库守护进程:systemctl start DmWatcherServicedmrw
启动备库守护进程:systemctl start DmWatcherServicedmrw

备份策略

上线前必须规划好备份策略,可以使用 DM 作业系统,定时备份。
根据应用需求,定制备份策略如下所示:

备份类型	   备份周期	备份时间
全量备份	   每周	        每周五 23 点
增量备份	   每天	        除周五外每天 23 点
删除备份	   每天	        每天 23 点 30

执行以下命令,创建作业系统表:

SP_INIT_JOB_SYS(1);

全量备份(每周五 23 点全备):

call SP_CREATE_JOB('bakfull',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('bakfull');
call SP_ADD_JOB_STEP('bakfull', 'bak01', 6, '01000000/dmbak', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bakfull', 'bak01', 1, 2, 1, 32, 0, '23:00:00', NULL, '2020-11-02 14:42:15', NULL, '');
call SP_JOB_CONFIG_COMMIT('bakfull');

增量备份(每周除周五外每天 23 点增量备份):

call SP_CREATE_JOB('bakincr',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('bakincr');
call SP_ADD_JOB_STEP('bakincr', 'bak02', 6, '11000000/dmbak', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bakincr','bak2',1,2,1,95,0,'23:00:00',NULL,'2020-11-02 14:44:30', NULL, '');
call SP_JOB_CONFIG_COMMIT('bakincr');

备份定期删除(每天 23:30 删除 14 天前备份):

call SP_CREATE_JOB('delbak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('delbak');
call SP_ADD_JOB_STEP('delbak', 'bak1', 0, 'SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/dmbak'');
call SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-15);', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('delbak', 'del01', 1, 1, 1, 0, 0, '23:30:00', NULL, '2020-11-02 14:48:41', NULL, '');
call SP_JOB_CONFIG_COMMIT('delbak');
posted @ 2021-08-26 13:32  Cai_HL  阅读(534)  评论(0编辑  收藏  举报
>