跳到主要内容

达梦-主备部署

安装带授权(主备)

#######################################################################################################################################
######################环境准备 主备都得执行
# 看下时间是否正确
date
ntpdate time.nist.gov
# 修改主机名称
hostnamectl
hostnamectl set-hostname node3
# 用户组 用户
su root
groupadd dinstall -g 2001
useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba
passwd dmdba
#### 修改系统参数
vi /etc/security/limits.conf
# 内容如下
# dm
dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
# 重启
reboot
# 检查参数修改是否OK
su - dmdba
ulimit -a
# 如果不方便重启 临时措施
su - dmdba
ulimit -n 65536
ulimit -u 65536


############## 目录规划
exit
##实例保存目录
mkdir -p /dmdata/data
##归档保存目录
mkdir -p /dmdata/arch
##备份保存目录
mkdir -p /dmdata/dmbak
# 相关目录权限
chown -R dmdba:dinstall /dmdata/data
chown -R dmdba:dinstall /dmdata/arch
chown -R dmdba:dinstall /dmdata/dmbak
chmod -R 755 /dmdata/data
chmod -R 755 /dmdata/arch
chmod -R 755 /dmdata/dmbak
#
ll /dmdata/
#######################################################################################################################################


#######################################################################################################################################
################## 开始安装
#root
# 根据自己的安装包路径来
cd /root/dm8/install
mount -o loop dm8_20240408_x86_rh6_64.iso /mnt
# 注意key文件的路径及权限 最好放到/home/dmdba/下
cp /root/dm8/key/dm3001108295.key /home/dmdba/dm.key
su - dmdba
cd /mnt
./DMInstall.bin -i
# 切换到root用户,创建 DmAPService,否则会影响数据库备份
exit
sh /home/dmdba/dmdbms/script/root/root_installer.sh


####### !!!!!!!!!!!!!!初始化实例
su - dmdba
cd /home/dmdba/dmdbms/bin
./dminit help
# 初始化实例 注意目录
./dminit path=/dmdata/data

######## 注册服务
exit
cd /home/dmdba/dmdbms/script/root/
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DAMENG/dm.ini -p DAMENG
cd /home/dmdba/dmdbms/bin
ls | grep DAMENG

### 启动 停止 数据库
su - dmdba
cd /home/dmdba/dmdbms/bin
./DmServiceDAMENG start
./DmServiceDAMENG stop
./DmServiceDAMENG restart
./DmServiceDAMENG status
## 注意防火墙是否打开 否则连接不了5236
exit
# 两种方式
systemctl stop iptables
systemctl disable iptables
# 两种方式
systemctl stop firewalld
systemctl disable firewalld
# 修改ENABLE_ENCRYPT=0 否则报错SSL
su - dmdba
vi /dmdata/data/DAMENG/dm.ini
ENABLE_ENCRYPT = 0
cd /home/dmdba/dmdbms/bin && ./DmServiceDAMENG restart

# dm环境变量设置
su - dmdba
cd
vi .bashrc
export PATH=/home/dmdba/dmdbms/bin:$PATH
export LD_LIBRARY_PATH=/home/dmdba/dmdbms/bin:$LD_LIBRARY_PATH
#
source .bashrc
disql
#######################################################################################################################################


#######################################################################################################################################
##########################
##########################主库配置
##
vi /dmdata/data/DAMENG/dmarch.ini
#
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
################
disql SYSDBA/SYSDBA@127.0.0.1:5236
-- SQL命令
alter database mount;
alter database add archivelog 'DEST=/dmdata/arch,TYPE=local, FILE_SIZE=128,space_limit=0';
-- 如果有错误 Archive config not exist. 先自己建一个文件(后面的命令也会自动创建)
alter database archivelog;
alter database open;
select arch_mode from v$database;
############
# 使用命令备份主库:
# 错误:[-137]:DM server is running or exist other process which is operating the same database
# 需要关闭数据库
DmServiceDAMENG stop
dmrman CTLSTMT="BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dmdata/dmbak/BACKUP_FILE_01'"
ll /dmdata/dmbak/BACKUP_FILE_01/
#或者可以使用联机备份:
disql SYSDBA/SYSDBA@127.0.0.1:5236
SQL> backup database full backupset '/dmdata/dmbak/BACKUP_FILE_01';

####################################
vi /dmdata/data/DAMENG/dm.ini
#
INSTANCE_NAME = DMSERVER_PRI
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1 #dmmal.ini
ARCH_INI = 1 #dmarch.ini
#################################### IP 需要配置固定IP
#################################### IP 需要配置固定IP
#################################### IP 需要配置固定IP 主库和备库都是一样
vi /dmdata/data/DAMENG/dmmal.ini
#
MAL_CHECK_INTERVAL = 5
MAL_COMBIN_BUF_SIZE = 0
MAL_SEND_THRESHOLD = 2048
MAL_CONN_FAIL_INTERVAL = 5
MAL_LOGIN_TIMEOUT = 15
MAL_BUF_SIZE = 100
MAL_SYS_BUF_SIZE = 0
MAL_VPOOL_SIZE = 128
MAL_COMPRESS_LEVEL = 0
MAL_TEMP_PATH =
[MAL_INST1]
MAL_INST_NAME = DMSERVER_PRI #与dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.20.35.123 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5238 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.20.35.123 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 # 实例的对外服务端口, 和dm.ini 中的 PORT_NUM 一致
MAL_INST_DW_PORT = 5237 #实例监听守护进程TCP 连接的端口
MAL_DW_PORT = 5239 #实例对应的守护进程监听 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME=DMSERVER_STANDBY # 实 例 名 , 和dm.ini中 的 INSTANCE_NAME 一致
MAL_HOST = 10.20.35.122 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5238 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.20.35.122 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 # 实例的对外服务端口, 和dm.ini 中的 PORT_NUM 一致
MAL_INST_DW_PORT = 5237 #实例监听守护进程TCP 连接的端口
MAL_DW_PORT = 5239 #实例对应的守护进程监听 TCP 连接的端口
#################################### 归档配置
vi /dmdata/data/DAMENG/dmarch.ini
# 归档配置中要包括本地归档及其他几个节点的实时归档
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb ,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb ,0 表示无限制,范围 1024~4294967294M
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMSERVER_STANDBY #实时归档目标实例名
WAIT_APPLY = 0
ARCH_FAILOVER = 0
##################################设置 OGUID并配置主库模式
# 需要启动数据库 mount模式
DmServiceDAMENG start mount
#
disql SYSDBA/SYSDBA@127.0.0.1:5236
#
--SQL命令
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(20220607);
ALTER DATABASE PRIMARY;
sp_set_oguid(20220607);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
exit
# 如果显示处于主库配置状态 表示成功
disql SYSDBA/SYSDBA@127.0.0.1:5236
-- SQL 处于mount状态
select STATUS$ from v$instance;
exit
#
DmServiceDAMENG stop
DmServiceDAMENG start
#################################### 守护进程配置
vi /dmdata/data/DAMENG/dmwatcher.ini
#
[GRP1] #集群组的名称
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式,自动切换:AUTO
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 20220607 #守护系统唯一OGUID值
INST_INI = /dmdata/data/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
### 转换控制文件为文本文件:
dmctlcvt TYPE=1 SRC=/dmdata/data/DAMENG/dm.ctl DEST=/dmdata/data/DAMENG/dmctl.txt
### 启动守护进程:
cd /dmdata/data/DAMENG
nohup dmwatcher /dmdata/data/DAMENG/dmwatcher.ini > w-nohup.out 2>&1 &
#
disql SYSDBA/SYSDBA@127.0.0.1:5236
-- SQL 处于open状态
select STATUS$ from v$instance;
#######################################################################################################################################


#######################################################################################################################################
##########################
##########################备库配置
#在主库上
su - dmdba
scp -r ./BACKUP_FILE_01 dmdba@10.20.35.122:/dmdata/dmbak/
# 在备库上
su - dmdba
DmServiceDAMENG stop
dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE_01'"
dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE_01'"
dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
####################################
vi /dmdata/data/DAMENG/dm.ini
#
INSTANCE_NAME = DMSERVER_STANDBY
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1 #dmmal.ini
ARCH_INI = 1 #dmarch.ini
#################################### IP 需要配置固定IP
#################################### IP 需要配置固定IP
#################################### IP 需要配置固定IP 主库和备库都是一样
vi /dmdata/data/DAMENG/dmmal.ini
#
MAL_CHECK_INTERVAL = 5
MAL_COMBIN_BUF_SIZE = 0
MAL_SEND_THRESHOLD = 2048
MAL_CONN_FAIL_INTERVAL = 5
MAL_LOGIN_TIMEOUT = 15
MAL_BUF_SIZE = 100
MAL_SYS_BUF_SIZE = 0
MAL_VPOOL_SIZE = 128
MAL_COMPRESS_LEVEL = 0
MAL_TEMP_PATH =
[MAL_INST1]
MAL_INST_NAME = DMSERVER_PRI #与dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.20.35.123 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5238 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.20.35.123 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 # 实例的对外服务端口, 和dm.ini 中的 PORT_NUM 一致
MAL_INST_DW_PORT = 5237 #实例监听守护进程TCP 连接的端口
MAL_DW_PORT = 5239 #实例对应的守护进程监听 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME=DMSERVER_STANDBY # 实 例 名 , 和dm.ini中 的 INSTANCE_NAME 一致
MAL_HOST = 10.20.35.122 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5238 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.20.35.122 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 # 实例的对外服务端口, 和dm.ini 中的 PORT_NUM 一致
MAL_INST_DW_PORT = 5237 #实例监听守护进程TCP 连接的端口
MAL_DW_PORT = 5239 #实例对应的守护进程监听 TCP 连接的端口


#################################### 归档配置
vi /dmdata/data/DAMENG/dmarch.ini
# 归档配置中要包括本地归档及其他几个节点的实时归档
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb ,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb ,0 表示无限制,范围 1024~4294967294M
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMSERVER_PRI #实时归档目标实例名
WAIT_APPLY = 0
ARCH_FAILOVER = 0
## 启动实例并配置备库模式
# 需要启动数据库 mount模式
DmServiceDAMENG start mount
#
disql SYSDBA/SYSDBA@127.0.0.1:5236
#
--SQL命令
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(20220607);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
exit
# 如果显示处于主库配置状态 表示成功
disql SYSDBA/SYSDBA@127.0.0.1:5236
-- SQL 备库 处于mount状态
select STATUS$ from v$instance;
exit
#
DmServiceDAMENG stop
DmServiceDAMENG start
#################################### 守护进程配置
vi /dmdata/data/DAMENG/dmwatcher.ini
#
[GRP1] #集群组的名称
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式,自动切换:AUTO
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 20220607 #守护系统唯一OGUID值
INST_INI = /dmdata/data/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
### 转换控制文件为文本文件:
dmctlcvt TYPE=1 SRC=/dmdata/data/DAMENG/dm.ctl DEST=/dmdata/data/DAMENG/dmctl.txt
### 启动守护进程:
cd /dmdata/data/DAMENG
nohup dmwatcher /dmdata/data/DAMENG/dmwatcher.ini > w-nohup.out 2>&1 &
#
disql SYSDBA/SYSDBA@127.0.0.1:5236
-- SQL 处于open状态
select STATUS$ from v$instance;
#######################################################################################################################################



#######################################################################################################################################
####################确认监视器配置
# 监视器放在备上
su - dmdba
mkdir -p /dmdata/data/monitor-log
vi /dmdata/data/DAMENG/dmmonitor.ini
#
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dmdata/data/monitor-log/ #监视器日志文件存放路径,没有则需要创建
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 20220607 #组 GRP1的唯一OGUID值,与之前各节点的sp_set_oguid(20220607)一致
MON_DW_IP = 10.20.35.123:5239
MON_DW_IP = 10.20.35.122:5239

# 启动监视器
#主要关注:WSTATUS是否OPEN,RSTAT是否VALID。
cd /dmdata/data/DAMENG
nohup dmmonitor /dmdata/data/DAMENG/dmmonitor.ini > m-nohup.out 2>&1 &
#######################################################################################################################################

#######################################################################################################################################
################## 主备同步测试
# 主库上执行
disql SYSDBA/SYSDBA@127.0.0.1:5236
#
CREATE TABLE TAB_FOR_RECOVER(C1 INT,create_time datetime);
INSERT INTO TAB_FOR_RECOVER VALUES(1,sysdate);
INSERT INTO TAB_FOR_RECOVER VALUES(2,sysdate);
INSERT INTO TAB_FOR_RECOVER VALUES(3,sysdate);
commit;
--需要提交事务后才会同步到备节点
# 备库上执行
disql SYSDBA/SYSDBA@127.0.0.1:5236
#
select * from TAB_FOR_RECOVER;
#######################################################################################################################################

#######################################################################################################################################
####################普通监视器配置
# 监视器放在备上
su - dmdba
mkdir -p /dmdata/data/monitor-log-look
vi /dmdata/data/DAMENG/dmmonitor_look.ini
#
MON_DW_CONFIRM = 0 #确认监视器模式
MON_LOG_PATH = /dmdata/data/monitor-log/ #监视器日志文件存放路径,没有则需要创建
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 20220607 #组 GRP1的唯一OGUID值,与之前各节点的sp_set_oguid(20220607)一致
MON_DW_IP = 10.20.35.123:5239
MON_DW_IP = 10.20.35.122:5239

# 启动监视器
#主要关注:WSTATUS是否OPEN,RSTAT是否VALID。
cd /dmdata/data/DAMENG
dmmonitor /dmdata/data/DAMENG/dmmonitor_look.ini
#######################################################################################################################################


#######################################################################################################################################
#
vi /dmdata/data/DAMENG/dm.ini
# 调整这个几个参数 要不然报错 Out of sort buf space, try to adjust SORT_BUF_GLOBAL_SIZE, SORT_BUF_SIZE, SORT
# SORT_FLAG:默认为0,参数含义:0:原排序机制;1:新排序机制。 在内存大于64G时建议使用新排序机制,其他情况使用原排序机制。
# SORT_BUF_SIZE:默认为2。在内存小于64G时建议设置为10M,大于64G时建议设置为512M。
# SORT_BUF_GLOBAL_SIZE,默认为1000M。当内存小于16G时,建议设置为500M,大于16G小于64G时建议设置为2000,当内存大于64G时,建议设置为5120M。
# SORT_BLK_SIZE:默认为 1M,新排序机制下,每个排序分片空间的大小,必须小于 SORT_BUF_GLOBAL_SIZE。
SORT_BUF_SIZE = 512 #maximum sort buffer size in Megabytes
SORT_BLK_SIZE = 2 #maximum sort blk size in Megabytes
SORT_BUF_GLOBAL_SIZE = 5120 #maximum global sort buffer size in Megabytes
#######################################################################################################################################