达梦数据库数据守护集群搭建(命令行方式)


                        达梦数据守护集群介绍

  

       达梦数据守护集群软件(DM Data Watch)是一种集成化的高可靠性解决方案,该方案基于数据库REDO日志,不依赖于第三方软件和存储,用于解决由于硬件故障、自然灾害等原因导致的数据库服务长时间中断问题,提供不间断数据库服务,可同时满足用户对数据安全性和高可用性的要求。数据守护包含的主要部件有:主数据库、备数据库、联机REDO日志系统、本地REDO日志归档服务、实时REDO日志归档服务、REDO日志重做服务、MAL系统、守护进程和监视器。其中,守护进程和监视器是两个独立的工具,其他部件集成在DM8数据库服务器DMSERVER中。

一、前提

        搭建数据守护系统前,达梦使用的服务器版本应一致,同时还应注意各实例所在主机的操作系统位数、大小端模式、时区及时间设置都应一致,以及使用同一个用户启动 DM 服务器和守护进程 dmwatcher,以免系统在运行时出现意想不到的错误。

二、环境准备

        准备两台机器用来部署主备库,其中dm1dm2配置两块网卡,一块接入内部网络交换模块,一块接入到外部交换机。

        两台机器都先安装dm8数据库软件其中主库创建实例,从库只安装软件,安装路径为'/dm/dmdbs',执行程序保存在'/dm/dmdbs/bin'目录中,数据存放路径为'/dm/dmdbs/data',归档日志路径'/dm/dmarch'。

详情:

主机名

ip(私网)

ip(外网)

实例名

dm1

10.101.101.201

10.101.103.201

DMDB

dm2

10.101.101.202

10.101.103.202

DMDB2

系统版本

服务端口

心跳端口

守护监听端口

守护进程端口

麒麟v10

52361

52381

52371

52391

1.数据守护集群搭建

        

        配置数据守护之前,必须先通过备份还原方式同步各数据库的数据,确保各数据的数据保持完全一致。主库可以是新初始化的数据库,也可以是正在生产、使用中的数据库。

        不能使用分别初始化库或者直接拷贝数据文件的方法,原因如下:

  • 每个库都有一个永久魔数(permenant_magic),一经生成,永远不会改变,主库传送日志时会判断这个值是否一样,确保是来自同一个数据守护环境中的库,否则传送不了日志。
  • 由于 dminit 初始化数据库时,会生成随机密钥用于加密,每次生成的密钥都不相同,备库无法解析采用主库密钥加密的数据。
  • 每个库都有一个数据库魔数(DB_MAGIC),每经过一次还原、恢复操作,DB_MAGIC就会产生变化,需要通过这种方式来区分同一个数据守护环境中各个不同的库。

        如果是初始搭建环境,可以通过对主库脱机备份、对备库脱机还原的方式来准备数据,如果主库已经处于运行状态,则可以对主库进行联机备份、对备库脱机还原的方式来准备数据。

        本次由于是初始搭建环境,所以采用对主库脱机备份、对备库脱机还原的方式来准备数据.

2.配置过程

创建用户&组

groupadd -g  dinstall

useradd -u  -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

passwd dmdba

关闭防火墙

systemctl status firewalld

systemctl stop firewalld

systemctl disable firewalld

修改selinux.conf为disabled

创建安装目录

mkdir -p /dm/dmdbms

mkdir -p /dm/dmarch

mkdir -p /dm/dmbak

chown -R dmdba:dinstall /dm/

chmod -R 775 /dm/

配置环境变量

vi .bash_profile

export DM_HOME="/dm/dmdbms"

export LD_LIBRARY_PATH="/dm/dmdbms/bin:$LD_LIBRARY_PATH"

export PATH="/dm/dmdbms/bin:$PATH"

修改系统参数

cat /etc/security/limits.conf 

dmdba      soft    nofile  65536

dmdba      hard    nofile  65536

dmdba      soft    nproc   102400

dmdba      hard    nproc   63653

dmdba      soft    core  unlimited

dmdba      hard    core  unlimited

介质挂载:

mount dm8_20220928_x86_kylin10_64_ent_8.1.2.138_pack3.iso

cd /mnt/cdrom

达梦安装(主)

[dmdba@dm1 cdrom]$ ./DMInstall.bin –i

Please select the installer's language (E/e:English C/c:Chinese) [E/e]:

Extract install files..........

core file size          (blocks, -c) 0

data seg size           (kbytes, -d) unlimited

scheduling priority             (-e) 0

file size               (blocks, -f) unlimited

pending signals                 (-i) 31096

max locked memory       (kbytes, -l) 64

max memory size         (kbytes, -m) unlimited

open files                      (-n) 1024

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 8192

cpu time               (seconds, -t) unlimited

max user processes              (-u) 4096

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

The max number of open files is too little, suggest to set 65536 or more to number of open files.

Welcome to DM DBMS Installer

Whether to input the path of Key File? (Y/y:Yes N/n:No) [Y/y]:n

Whether to Set The TimeZone? (Y/y:Yes N/n:No) [Y/y]:n

Installation Type:

1 Typical

2 Server

3 Client

4 Custom

Please Input the number of the Installation Type [1 Typical]:

Require Space: 1178M

Please Input the install path [/home/dmdba/dmdbms]:/dm/dmdbms

No write permission!

Please Input the install path [/home/dmdba/dmdbms]:/dm/dmdbms

Available Space:449G

Please Confirm the install path(/dm/dmdbms)? (Y/y:Yes N/n:No) [Y/y]:y

Pre-Installation Summary

Installation Location: /dm/dmdbms

Require Space: 1178M

Available Space: 448G

Version Information:

Expire Date:

Installation Type: Typical

Confirm to Install? (Y/y:Yes N/n:No):

Confirm to Install? (Y/y:Yes N/n:No):y

2022-10-12 17:46:20

[INFO] Installing DM DBMS...

2022-10-12 17:46:20

[INFO] Installing BASE Module...

2022-10-12 17:46:22

[INFO] Installing SERVER Module...

2022-10-12 17:46:23

[INFO] Installing CLIENT Module...

2022-10-12 17:46:24

[INFO] Installing DRIVERS Module...

2022-10-12 17:46:24

[INFO] Installing MANUAL Module...

2022-10-12 17:46:24

[INFO] Installing SERVICE Module...

2022-10-12 17:46:25

[INFO] Move log file to log directory.

2022-10-12 17:46:25

[INFO] Installed DM DBMS completely.

Please execute the commands by root:

/dm/dmdbms/script/root/root_installer.sh

End

[root@dm1 soft]# /dm/dmdbms/script/root/root_installer.sh

Move /dm/dmdbms/bin/dm_svc.conf to /etc

Modify the files' mode of DM Server

Create the DmAPService service

Created symlink from

/etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.

Finished to create the service (DmAPService)

Start the DmAPService service

端口解释:

服务端口:对外提供数据库服务的端口

心跳端口:用于数据同步的端口

守护监听端口:数据守护监听数据库的端口

守护进程端口:datawatch收集数据守护信息的端口

主:

dminit PATH=/dm/dmdbms DB_NAME=DMDB INSTANCE_NAME=DMDB PORT_NUM=52361  PAGE_SIZE=32 EXTENT_SIZE=32 CHARSET=1 CASE_SENSITIVE=0 LENGTH_IN_CHAR=0 BLANK_PAD_MODE=1

                                                ------初始化数据库

dmserver /dm/dmdbms/DMDB/dm.ini

                                                ------启动成功后ctrl+c 退出

./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdbms/DMDB/dm.ini -p DMDB

                                                ------配置服务

配置服务后,可以用DmService 管理:

DmServiceDMDB start

Dmdba用户:

1)主库开启归档 alter databse archivelog 并指定路径

2)backup database '/dm/dmdbms/DMDB/dm.ini' full;

达梦安装(从库)

dminit PATH=/dm/dmdbms  DB_NAME=DMDB INSTANCE_NAME=DMDB2 PORT_NUM=52361  PAGE_SIZE=32 EXTENT_SIZE=32 CHARSET=1 CASE_SENSITIVE=0 LENGTH_IN_CHAR=0 BLANK_PAD_MODE=1 

 ./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdbms/DMDB/dm.ini -p DMDB

主库的备份集cp到从库:

scp ./* dm2:/dm/dmbak/

恢复备库:

restore database '/dm/dmdbms/DMDB/dm.ini' from backupset '/dm/dmbak/DB_HTDMDB_FULL_20221013_113553_411581';

recover database '/dm/dmdbms/DMDB/dm.ini' from backupset '/dm/dmbak/DB_HTDMDB_FULL_20221013_113553_411581';

recover database '/dm/dmdbms/DMDB/dm.ini' update db_magic;

主从系统开启服务自启动

systemctl enable DmServiceDMDB.service

systemctl start DmServiceDMDB.service

主库:

vi /dm/dmdbms/DMDB/dm.ini
INSTANCE_NAME  = DMDB            #实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16
PORT_NUM  = 52361                        #数据库实例监听端口
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 次的日志发送信息

vi /dm/dmdbms/DMDB/dmmal.ini
[MAL_INST1]

MAL_INST_NAME = DMDB        

MAL_HOST = 10.101.101.201    

MAL_PORT = 52381                

MAL_DW_PORT = 52391             

MAL_INST_HOST = 10.101.103.201  

MAL_INST_PORT = 52361           

MAL_INST_DW_PORT = 52371     

[MAL_INST2]

MAL_INST_NAME = DMDB2        

MAL_HOST = 10.101.101.202    

MAL_PORT = 52381                

MAL_DW_PORT = 52391             

MAL_INST_HOST = 10.101.103.202 

MAL_INST_PORT = 52361           

MAL_INST_DW_PORT = 52371 


vi /dm/dmdbms/DMDB/dmarch.ini
[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME 

ARCH_DEST = DMDB2 

vi /dm/dmdbms/DMDB/dmwatcher.ini
[GRP1] #守护进程组名

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = AUTO #自动切换模式

DW_ERROR_TIME = 10 #远程守护进程故障认定时间

INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 10 #本地实例故障认定时间

INST_OGUID = 270001 #守护系统唯一 OGUID 值

INST_INI = /dm/dmdbms/DMDB/dm.ini #dm.ini 配置文件路径

INST_AUTO_RESTART = 1 #打开实例的自动启动功能

INST_STARTUP_CMD = /dm/dmdbms/bin/dmserver #命令行方式启动

RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭

RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭


./dmserver /dm/dmdbms/DMDB/dm.ini mount

disql sysdba 
回车

SQL> select instance_name,status$ from v$instance;
mount

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(270001);
alter database primary;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);


备库:

vi /dm/dmdbms/DMDB/dm.ini
INSTANCE_NAME  = DMDB            #实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16
PORT_NUM  = 52361                         #数据库实例监听端口
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 次的日志发送信息

vi /dm/dmdbms/DMDB/dmmal.ini
[MAL_INST1]

MAL_INST_NAME = DMDB        

MAL_HOST = 10.101.101.201    

MAL_PORT = 52381                

MAL_DW_PORT = 52391             

MAL_INST_HOST = 10.101.103.201  

MAL_INST_PORT = 52361           

MAL_INST_DW_PORT = 52371     

[MAL_INST2]

MAL_INST_NAME = DMDB2        

MAL_HOST = 10.101.101.202    

MAL_PORT = 52381                

MAL_DW_PORT = 52391            

MAL_INST_HOST = 10.101.103.202 

MAL_INST_PORT = 52361           

MAL_INST_DW_PORT = 52371 


vi /dm/dmdbms/DMDB/dmarch.ini
[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME 

ARCH_DEST = DMDB2 

vi /dm/dmdbms/DMDB/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 = /dm/dmdbms/DMDB/dm.ini #dm.ini 配置文件路径

INST_AUTO_RESTART = 1 #打开实例的自动启动功能

INST_STARTUP_CMD = /dm/dmdbms/bin/dmserver #命令行方式启动

RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭

RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭

./dmserver /dm/dmdbms/DMDB/dm.ini mount

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(270001);
alter database standby;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

vi /dm/dmdbms/DMDB/dm.ini
ALTER_MODE_STATUS               = 1


主从:
[root@dm1&2 ~]# /dm/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dmdbms/DMDB/dmwatcher.ini -p mon
Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServicemon.service → /usr/lib/systemd/system/DmWatcherServicemon.service.
创建服务(DmWatcherServicemon)完成

配置监视器:
dmmonitor.ini:

MON_DW_CONFIRM = 1 #确认监视器模式

MON_LOG_PATH = /dm/dmdbms/log #监视器日志文件存放路径

MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件

MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M

MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间

[GRP1] #守护进程组名,和dmwatcher.ini中的保持一致

MON_INST_OGUID = 270001 #组 GRP1 的唯一 OGUID 值

#以下配置为监视器到组 GRP1 的守护进程的连接信息,以―IP:PORT‖的形式配置

#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT

MON_DW_IP = 10.101.101.201:52391

MON_DW_IP = 10.101.101.202:52391


主:
/dm/dmdbms/bin/dmwatcher /dm/dmdbms/DMDB/dmwatcher.ini

dmmonitor/dm/dmdbms/DMDB/dmmonitor.ini

systemctl start DmWatcherServicemon


监视器执行show命令检查状态
show


验证:

主:
create table dwdb(id int primary key,name varchar(20));

insert into dwdb values(1,'pengfei');

commit;

备:

select * from dwdb;

最后确认是否同步到从库。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值