DM8数据库实时主备

DM8数据库实时主备

场景:对现有的生产库搭建一套备库,要求使用高性能模式同步主备库的数据。主库正常开机状态

主库

参数介绍
INSTANCE_NAMEPROD数据库实例名称
DB_NAMEPROD数据库名称
PUBLIC IP192.168.222.133主库IP地址
PORT_NUM5236主库数据库端口
MAL_DW_PORT10050守护进程的监听端口,取自控制守护进程

备库

参数介绍
INSTANCE_NAMESTB1数据库实例名称
DB_NAMEPROD数据库名称
PUBLIC IP192.168.222.134主库IP地址
PORT_NUM5236主库数据库端口
MAL_DW_PORT10051守护进程的监听端口,取自控制守护进程
一、环境准备
时间同步服务配置

确保主库、备库、监控器所在服务器的时间相同

在这里插入图片描述

目录结构

各节点规划安装目录如下:

/dm/app/db/     数据库软件安装目录 
/dm/data/       数据库目录   
/dm/log/        数据库日志   
/dm/arch/       数据库归档
/dm/backup/     数据库备份
/dm/media/      数据库安装介质		

mkdir -p /dm/app/db/ /dm/data/ /dm/log/ /dm/arch/ /dm/backup/ /dm/media/
创建 dmdba 用户
  1. 创建用户所在的组,命令如下:
	groupadd dinstall
  1. 创建用户,命令如下:
	useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
  1. 修改用户密码,命令如下:
	passwd dmdba
  1. 将目录权限交给dmdba用户
	chown -R dmdba:dinstall /dm
安装DM8数据库

达梦数据库安装包下载地址:https://eco.dameng.com/download/

# 挂载磁盘
mount -o loop dm8_20201027_x86_rh6_64_ent_8.1.1.144.iso /mnt

# 修改权限
chmod +x  DMInstall.bin

# 调整临时目录大小
ulimit -n 65536

# 执行安装文件
./DMInstall.bin -i

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#设置数据库环境变量
su - dmdba

vi ~/.bash_profile
[
DM_HOME=/dm/app/db
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$DM_HOME/bin
]
source ~/.bash_profile

在这里插入图片描述

主库、备库创建数据库实例
su - dmdba

[dmdba@localhost ~]$ vi mkdb.sh
#根据不同的配置环境设置不同的参数大小

#!/bin/bash

db_name=$1
port_num=$2
sys_path="/dm/data"
data_path="/dm/data/"$db_name
log_path="/dm/log/"$db_name

cat > mkdb.ini <<EOF
[$db_name]
system_path=$sys_path
db_name=$db_name
extent_size=16
page_size=8
charset=0
CASE_SENSITIVE=0
main=${data_path}/main.dbf
main_size=100
roll=${data_path}/roll.dbf
roll_size=200
system=${data_path}/system.dbf
system_size=200
ctl_path=${data_path}/dm.ctl
ctl_size=8
port_num=${port_num}
log_size=128
log_path=${log_path}/redo01.log
log_path=${log_path}/redo02.log
log_path=${log_path}/redo03.log
EOF

dminit control=mkdb.ini

rm -f mkdb.ini

注意生产环境:system_size=500,log_size=200,并且要设置多个日志文件

[dmdba@localhost ~]$ chmod +x mkdb.sh
[dmdba@localhost ~]$ ./mkdb.sh PROD 5236

在这里插入图片描述

#创建数据库实例,要在root用户下执行以下代码
cd /dm/app/db/script/root

#dm7执行
./dm_service_installer.sh -t dmserver -p PROD -i  /dm/data/PROD/dm.ini

#dm8执行
#主库
./dm_service_installer.sh -t dmserver -p PROD -dm_ini /dm/data/PROD/dm.ini
#备库
./dm_service_installer.sh -t dmserver -p STB1 -i  /dm/data/PROD/dm.ini

在这里插入图片描述

cd /dm/app/db/bin

./DmServicePROD start

在这里插入图片描述

注意:以上的步骤在主机、备机上面都要执行

二、集群搭建
主库
开启归档模式
su - dmdba
disql sysdba/SYSDBA
#联机归档配置操作步骤
#修改数据库为 mount 状态
alter database mount;

#配置本地归档
alter database add archivelog 'type=local,dest=/dm/arch/PROD,file_size=64,space_limit=0'; 

#开启归档模式
alter database archivelog;

#修改数据库为 open 状态
alter database open;
开启管道服务
#root用户下执行
cd /dm/app/db/bin
./DmAPService start
#如果执行报错,删除DM_PIPE_DMAP_LSNR_RD,DM_PIPE_DMAP_LSNR_WR文件
在线备份数据库
su - dmdba
disql sysdba/SYSDBA
disql>BACKUP DATABASE BACKUPSET '/dm/backup/prod_fb_20201124';
修改dm.ini配置文件
cd /dm/data/PROD/
vi dm.ini
INSTANCE_NAME=PROD # 实例名称 ,与 dmmal.ini 中的MAL_INST_NAME 对应。配置数据守护系统时,应该保持INSTANCE_NAME 是全局唯一的.
PORT_NUM=5236	   # 实例端口
DW_PORT=10030      # 服务器监听守护进程连接请求的端口
MAL_INI=1		   # 打开 MAL 系统
ARCH_INI=1         # 打开归档配置
ALTER_MODE_STATUS=0   #是否允许数据库用户通过SQL改变数据库模式和状态、模式以及 OGUID,避免 dmwatcher 做出错误的决策。  0:限制
ENABLE_OFFLINE_TS=2   #表空间是否可以脱机,1 表示允许,0 表示不允许,2 表示禁止备库,其他放开。守护环境下建议配置为 2。
RLOG_SEND_APPLY_MON=64 #统计最近 64 次的日志发送信息

注意:mal_ini=1配置后,如果数据库服务重启,但是没有dmmal.ini文件存在,服务无法启动。

修改dmarch.ini配置文件
cd /dm/data/PROD
vi dmarch.ini

[ARCHIVE_LOCAL1]
        ARCH_TYPE            = LOCAL
        ARCH_DEST            = /dm/arch/PROD
        ARCH_FILE_SIZE       = 512
        ARCH_SPACE_LIMIT     = 102400 # Redo 日志归档空间限制,当同一节点的本地归档文件或远程归档文件达到限制值时,系统自动删除最早生成的归档日志文件,0 表示无空间限制
        ARCH_FLUSH_BUF_SIZE  = 0 #归档合并刷盘缓存大小,单位 MB,取值范围(0-128),缺省为 0,表示不使用归档合并刷盘


[ARCHIVE_REALTIME]
ARCH_TYPE=REALTIME  #Redo 日志归档类型,LOCAL/REMOTE/REALTIME/TIMELY/ASYNC、分别表示本地归档/远程归档/实时归档/即时归档/异 步归档
ARCH_DEST=STB1      # 归档目标
创建dmmal.ini配置文件
vi dmmal.ini

MAL_CHECK_INTERVAL = 5   # MAL 链路检测时间间隔,取值范围(0s-1800s),默认 30s,配置为 0 表示不进行 MAL 链路检测,数据守护环境不建议配置为 0,防止网络故障导致服务长时间阻塞
MAL_CONN_FAIL_INTERVAL = 5 # 判定 MAL 链路断开的时间,取值范围(2s-1800s),默认 10s
[MAL_INST1]
MAL_INST_NAME=PROD  # 数据库实例名,与 dm.ini 的 INSTANCE_NAME 配置项保持一致,MAL 系统中数据库实例名要保持唯一
MAL_INST_HOST=192.168.222.133 #实例对外服务的 IP 地址
MAL_INST_PORT=5236
MAL_HOST=192.168.222.133  #内部通信网卡
MAL_PORT=10020 # MAL 监听端口,用于数据守护、DSC、MPP 等环境中各节点实例之间MAL链路配置,监听端端口配置此参数
MAL_DW_PORT=10050  # 守护进程的监听端口,取自控制守护进程
MAL_INST_DW_PORT=45101

[MAL_INST2]
MAL_INST_NAME=STB1
MAL_INST_HOST=192.168.222.134  #本机IP
MAL_INST_PORT=5236
MAL_HOST=192.168.222.134  #内部通信网卡
MAL_PORT=10021
MAL_DW_PORT=10051
MAL_INST_DW_PORT=45121
创建dmwatcher.ini配置文件
vi dmwatcher.ini

[GRP1]
DW_TYPE=GLOBAL # 守护类型,默认为 LOCAL、LOCAL:本地守护、GLOBAL:全局守护
DW_MODE=AUTO # 切换模式,默认为 MANUAL、MANUAL:故障手动切换模式、AUTO:故障自动切换模式
DW_ERROR_TIME=10 # 守护进程故障认定时间
INST_RECOVER_TIME=60 # 备库故障恢复检测时间间隔
INST_ERROR_TIME=10 # 数据库故障认定时间
INST_OGUID=777777 # 数据守护唯一标识码,同一守护进程组中的所有数据库、守护进程和监视器 ,都必须配置相同的OGUID值
INST_INI=/dm/data/PROD/dm.ini # 监控数据库 dm.ini 路径
INST_AUTO_RESTART=1  # 是否自动重启数据库实例,0:不自动重启 1:自动重启。缺省为 0
/*
1. linux 命令行方式启动(不能出现带有空格的路径):
INST_STARTUP_CMD = /opt/dm/bin/dmserver
2. linux 服务方式启动:
INST_STARTUP_CMD = service dmserverd restart
DM 数据守护与读写分离集群 V4.0
123
3. Windows 命令行启动:
INST_STARTUP_CMD = c:\dm\bin\dmserver
4. Windows 服务方式启动:
INST_STARTUP_CMD = net start 注册服务名(注册服务
名,可通过 DM 服务查看器获取)
*/
INST_STARTUP_CMD=/dm/app/db/bin/dmserver # 数据库启动命令
RLOG_APPLY_THRESHOLD=0 
chown -R dmdba:dinstall dmwatcher.ini dmmal.ini
dm7创建dmwatcher二进制文件

DM8跳过该步骤

cd /dm/app/db/bin
dmctlcvt TYPE=3 SRC=/dm/data/PROD/dmwatcher.ini DEST=/dm/data/PROD/
cd /dm/data/PROD/
mv ./GRP1/* ./
chown -R dmdba:dinstall dmwatcher.ctl
将文件传到备份服务器
su - dmdba
cd /dm/backup
scp -r prod_fb_20201124/ 192.168.222.134:/dm/backup

cd /dm/data/PROD/
scp dmarch.ini dmmal.ini dmwatcher.ini dmwatcher.ctl 192.168.222.134:/dm/data/PROD/
关闭数据服务,重启
cd /dm/app/db/bin
./DmServicePROD stop
./dmserver path=/dm/data/PROD/dm.ini mount

注意:不要将该窗口关闭了

从机
启动管道服务器
cd /dm/app/db/bin
./DmAPService start
创建备份还原目录
su - dmdba
mkdir -p /dm/data/PROD/ctl_bak
mkdir -p /dm/data/PROD/bak
使用dmrman进行备库备份还原
#一定要在dmdba用户下执行,主库一定要启动
su - dmdba
cd /dm/app/db/bin
dmrman
RMAN>RESTORE DATABASE TO '/dm/data/PROD' overwrite FROM BACKUPSET '/dm/backup/prod_fb_20201124';
RMAN>RECOVER DATABASE '/dm/data/PROD/dm.ini' FROM BACKUPSET '/dm/backup/prod_fb_20201124';

#DM8需要执行这条命令
RMAN>RECOVER DATABASE '/dm/data/PROD/dm.ini' UPDATE DB_MAGIC;

注意:确定备份文件的权限,改成dmdba:dinstall

修改配置文件

1.修改dm.ini

cd /dm/data/PROD

vi dm.ini
INSTANCE_NAME=STB1
DW_PORT=10031
MAL_INI=1
ARCH_INI=1

2.修改dmarch.ini

vi dmarch.ini

ARCH_DEST=PROD
主库、备库集群启动
#主库
./DmServicePROD stop
./dmserver path=/dm/data/PROD/dm.ini mount

#从库
./DmServiceSTB1 stop
./dmserver path=/dm/data/PROD/dm.ini mount
#重启一个窗口,设置主库
su - dmdba
disql sysdba/SYSDBA
SQL>sp_set_oguid(777777);
SQL>alter database primary;

#重启一个窗口,设置备库
su - dmdba
disql sysdba/SYSDBA
SQL>sp_set_oguid(777777);
SQL>alter database standby;
在第三个节点上配置确认监视器(推荐),或者在备库节点上部署
su - dmdba
mkdir /dm/monitor

vi /dm/monitor/dmmonitor.ini

MON_DW_CONFIRM=1 # 是否配置为确认模式,缺省为 0。0:监控模式 1:确认模式
MON_LOG_PATH=/dm/monitor/log 
MON_LOG_INTERVAL=60 # 自动记录系统状态信息到日志文件的时间间隔
MON_LOG_FILE_SIZE=32
MON_LOG_SPACE_LIMIT=0 # 日志总空间大小 取值 0 或者 256~4096,单位为 M,默认值为0,表示没有空间限制
[GRP1]
MON_INST_OGUID=777777  # 数据守护唯一标识码,与 dmwatcher.ini 中的 INST_OGUID 保持一致
MON_DW_IP=192.168.222.133:10050 # 守护进程 IP 地址和监听端口
MON_DW_IP=192.168.222.134:10051
#主备库分别启动守护进程
cd /dm/app/db/bin
./dmwatcher /dm/data/PROD/dmwatcher.ini
ps -ef | grep dm


#启动监视器进程
cd /dm/monitor
chmod +x dmmonitor.ini

cd /dm/app/db/bin
./dmmonitor /dm/monitor/dmmonitor.ini

在这里插入图片描述
在这里插入图片描述

监视器搭建成功显示

在这里插入图片描述

配置服务
#进入监视器关闭数据库和dmwatcher
#dm7
stop instance GRP1
#dm8
stop group GRP1 
手动退出dmwatcher

#dm7执行
#主机
/dm/app/db/script/root/dm_service_installer.sh -t dmwatcher -i /dm/data/PROD/dmwatcher.ini -p PROD
#备机
/dm/app/db/script/root/dm_service_installer.sh -t dmwatcher -i /dm/data/PROD/dmwatcher.ini -p STB1

#dm8执行
#主机
/dm/app/db/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dm/data/PROD/dmwatcher.ini -p PROD
#备机
/dm/app/db/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dm/data/PROD/dmwatcher.ini -p STB1


先起备库的dmwatcher,然后再拉起主库
cd /dm/app/db/bin
./DmWatcherServiceSTB1 start
./DmWatcherServicePROD start
实时主备集群的启停步骤

读写分离集群重启与主备相同:
关闭监视器:systemctl stop DmMonitorServiceconfirm
关闭主库守护进程:systemctl stop DmWatcherServicedmrw
关闭备库守护进程:systemctl stop DmWatcherServicedmrw
关闭主库实例:systemctl stop DmServicedmrw
关闭备库实例:systemctl stop DmServicedmrw
启动主库实例:systemctl start DmServicedmrw
启动备库实例:systemctl start DmServicedmrw
启动主库守护进程:systemctl start DmWatcherServicedmrw
启动备库守护进程:systemctl start DmWatcherServicedmrw
启动监视器:systemctl start DmMonitorServiceconfirm

实时IP同步 高可用

DM 安装时生成一个配置文件 dm_svc.conf,不同的平台所在目录有所不同。

  1. 32 位的 DM 安装在 Win32 操作平台下,此文件位于%SystemRoot%/system32
    目录;
  2. 64 位的 DM 安装在 Win64 操作平台下,此文件位于%SystemRoot%/system32
    目录;
  3. 32 位的 DM 安装在 Win64 操作平台下,此文件位于%SystemRoot%/SysWOW64
    目录;
  4. 在 Linux 平台下,此文件位于/etc 目录。

dm_svc.conf 配置文件的内容分为全局配置区和服务配置区。全局配置区在前,服务配置区在后,以“[服务名]”开头,可配置除了服务名外的所有配置项。服务配置区中的配置优先级高于全局配置区。

TIME_ZONE=(480)        #操作系统时区
LANGUAGE=(cn)          #操作系统语言,建议有需要才指定
dw_svc=(192.168.222.135:5236,192.168.222.136:5236)  #服务名
LOGIN_MODE =(1)        #服务名方式连接数据库时只选择模式匹配的库;0 表示PRIMARY=NORMAL>STANDBY;1 表示只连 primary;2 表 示 只 连 standby ; 3 表 示STANDBY>PRIMARY>NORMAL ; 4 表 示PRIMARY>NORMAL>STANDBY;默认 0;
SWITCH_TIME=(3)        #尝试遍历服务名中库列表的次数  
SWITCH_INTERVAL=(1000) #等待一定时间再继续下一次遍历;单位 ms



CHAR_CODE       #操作系统编码格式
COMPRESS_MSG    #是否启用消息压缩  0:不启用   1:启用
LOGIN_ENCRYPT   #是否进行通信加密  0:不加密   1:加密
DIRECT          #是否使用快速装载  Y: 使用    N:不使用
ENABLE_RS_CACHE  #是否进行客户端结果集缓存
RW_SEPARATE      #是否启用读写分离 0:不启用  1:启用
RW_PERCENT      #读写分离分发比例,有效范围0~100

注意:文件配置在程序代码的服务器,俗称客户端

后记
如果文中那里有误,欢迎指出,大家共同交流进步!
达梦技术社区 https://eco.dameng.com
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值