按实际业务需求,选择合适的服务器,准备3台服务器,一台主库服务器,一台备库服务器,一台监视器服务器,如果资源限制只有2台服务器,可将监视器配置在主、备任意一台服务器上,服务器参数建议如下:
(1)物理内存:>=16G
(2)交换区:swap空间>=物理内存
(3)/tmp大小:>100MB
(4)网络:物理机器需要4个网卡,2个public网卡做band,2个private网卡做band
(5)磁盘:根据实际应用系统需要挂载合适大小磁盘
(6)时间服务器:按机房要求配置连接时间服务器
注意:守护进程配置自动切换时,必须在监视器服务器上配置确认监视器,并且保证网络高可用。
操作系统版本安装:DM数据库安装在linux操作系统所需条件:glibc2.3以上,内核2.6,预先安装UnixODBC,系统性能监控等组件。
(1)数据库软件安装目录:/dm8/dmdbms,可用空间>50GB
(2)实例安装目录:/dmdata,单独挂载性能最好的磁盘,建议SSD
(3)归档日志存放目录:/dmarch,单独挂载磁盘
(4)备份文件存放目录:/dmbak,单独挂载磁盘
搭建2节点守护集群,端口规划如下:(实际中可以按需要修改端口号)
防火墙集群之间需开放以上所有的端口,集群对客户端只需要开通数据库实例监听端口。
创建用户和组:DM数据库不应该使用root用户安装和维护,需要在安装之前为DM数据库创建一个专用的系统用户(dmdba)和用户组(dinstall).
(1)新建用户组:groupadd dinstall
(2)新建用户:useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
(3)设置用户dmdba密码:passwd dmdba输入密码并确认。
修改dmdba用户资源限制:
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
添加用户会话登录限制
vi /etc/pam.d/login添加上:
session required pam_limits.so
添加系统内核参数限制
vi /etc/sysctl.conf添加上:
vm.overcommit_memory=0
kernel.core_pattern=/dm8/dmcore/core-%e-%p-%t
执行下列命令使系统内核参数立刻生效
sysctl -p
mkdir -p /dm8/dmdbms
mkdir /dmarch
mkdir /dmsqllog
mkdir /dmdata
mkdir /dmcore
chmod -R 755 /dm8 /dmarch /dmsqllog /dmdata /dmcore
chown -R dmdba:dinstall /dm8 /dmarch /dmsqllog /dmdata /dmcore
systemctl stop firewalld.service
systemctl disable firewalld.service
修改dmdba用户环境变量:
vi /home/dmdba/.bash_profile
文件末尾添加以下内容:
export DM_HOME=/home/dmdba/dmdbms
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
软件安装目录:/home/dmdba/dmdbms
实例初始化目录:/dmdata
初始化脚本内容如下:
初始化请根据实际项目要求,例如:
(1)数据库名DM01,实例名DMSVR01,端口号5237--生产环境一般有安全整改要求不能使用默认端口号
(2)页大小16k,簇大小32,日志文件大小500M
(3)字符串大小写敏感
(4)sysdba用户密码为DM01SYSDBA
./dminit path=/dm8/data/ port_num=5237 DB_NAME=DM01 INSTANCE_NAME=DM01SVR PAGE_SIZE=16 EXTENT_SIZE=32 CASE_SENSITIVE=1 SYSDBA_PWD=DM01SYSDBA
注册服务(root用户下执行):
cd/dm8/dmdbms/script/root
./dm_service_installer.sh -t dmserver -p DM01SVR -dm_ini /dm8/data/DM01/dm.ini
注册完成后切换到dmdba启动数据库实例:
DmServiceDM01SVR start
su - dmdba
disql SYSDBA/DM01SYSDBA:5237
alter database mount;
alter database archivelog;
select arch_mode from v$database;
alter database add archivelog 'type=local,dest=/dmarch,file_size=1024,space_limit=102400';
alter database open;
查看归档是否开启
select * from v$dm_arch_ini;
dmdba用户关闭数据库实例
mkdir -p /dm8/dmbak #主备两台服务器均需创建备份目录
cd $DM_HOME/bin
DmServiceDM01SVR stop
启动ap服务
./DmAPService start
./dmrman
backup database '/dmdata/DM01/dm.ini' full backupset '/dm8/dmbak/db_full_bak_1';
exit;
scp -r /dm8/dmbak/db_full_bak_1 dmdba@备库IP:/dm8/dmbak/
关闭数据库实例
cd /dm8/dmdbms/bin
启动ap服务
./DmAPService start
./dmrman
check backupset '/dm8/dmbak/db_full_bak_1';
restore database '/dmdata/DM01/dm.ini' from backupset '/dm8/dmbak/db_full_bak_1';
recover database '/dmdata/DM01/dm.ini' from backupset '/dm8/dmbak/db_full_bak_1';
recover database '/dmdata/DM01/dm.ini' update db_magic;
主库:
INSTANCE_NAME =DMSVR01
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
备库:
INSTANCE_NAME = DMSVR02
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
主库:vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSVR02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =/dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
备库:
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSVR01
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =/dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
cd /dmdata/DM01
vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DMSVR01
MAL_HOST = 主库IP
MAL_PORT = 61141
MAL_INST_HOST = 主库IP
MAL_INST_PORT =5237
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = DMSVR02
MAL_HOST =备库IP
MAL_PORT = 61142
MAL_INST_HOST = 备库IP
MAL_INST_PORT =5237
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
cd /dmdata/DM01
vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 120
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 120
INST_OGUID = 453331
INST_INI = /dmdata/DM01/dm.ini
INST_AUTO_RESTART = 0
INST_STARTUP_CMD =/dm8/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
主备依次执行:
./dmserver /dmdata/DM01/dm.ini mount
或者DmServiceDMSVR01 start mount
另开一个窗口disql连接数据库主备库都修改oguid
主库
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
alter database primary;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
备库:
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
root用户注册守护进程服务:
./dm_service_installer.sh -t dmwatcher -p DmWatcher -watcher_ini /dmdata/DM01/dmwatcher.ini
主备依次执行:
DmWatcher start
在另一台安装达梦数据库软件的监视器服务器上配置,或者直接在主备任意一个节点上配置也可行
cd $DM_HOME/bin
vi /dm8/dmdbms/bin/dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm8/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 主库IP:52141
MON_DW_IP = 备库IP:52141
启动监视器:
[dmdba@localhost DAMENG]$ cd /dm8/bin
[dmdba@localhost bin]$ ./dmmonitor /dm8/data/DAMENG/dmmonitor.ini
$ su - dmdba
$ cd /dm8/dmdbms/bin
$ ./dmmonitor /dm8/dmdbms/bin /dmmonitor.ini
show #查看集群状态
login #登录监视器
switchover #切换主备
show
switchover #再次切换还原主、备库
主库建表插入数据
create table t2(id int);
insert into t2 values (1);
insert into t2 values (2);
commit;
备库查询表数据是否正常同步:
select * from t2;
(1)报错详情
(2)排查分析
a.校验备份集有效性
cd $DM_HOME/bin
./dmrman
RMAN> check backupset '/dm8/dmbak/FULL_BAKUP_20231201';
【知识点拓展】
DMRMAN 中使用 CHECK 命令对备份集进行校验,校验备份集是否存在及合法,语法格式如下:
CHECK BACKUPSET '<备份集目录>' [DEVICE TYPE<介质类型>[PARMS '<介质参数>']][DATABASE '<INI_PATH>']
释义:
BACKUPSET:指定目标校验备份集目录。
DEVICE TYPE:指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK。
PARMS:介质类型为 TAPE 时,第三方介质(tape 类型)管理实现所需的参数字符串。
INI_PATH:数据库 dm.ini 文件路径,若指定,则该数据库的默认备份目录作为备份集搜索目录之一。
CHECK BACKUPSET *** 该命令用于校验特定备份集,每次只能检验一个备份集 。
b.检查主备数据库版本是否一致
SQL> select * from v$instance;
或者
SQL> select ID_CODE;
SQL> select * from v$version;
c.检查主备集群服务器操作系统版本是否一致
# cat /etc/issue
或者 uname -a
(3)解决处理
通过校验备份集,备份集有效,检查主备数据库版本也一致,之后检查发现主备集群服务器操作系统版本不一致,主库服务器操作系统版本是redhat7.5,而备库服务器操作系统版本是麒麟10,之后通过重装备库操作系统(更换为redhat7.5),安装与主库版本一致的数据库软件后,再进行备份还原成功。
(1)报错详情
[DEBUG - 2023-08-17 14:33:17] tid:58 - [master connection adder] { conn-6 } access(); CMD_STARTUP
[DEBUG - 2023-08-17 14:33:17] tid:58 - [master connection adder] { conn-6 } access(); CMD_LOGIN
[DEBUG - 2023-08-17 14:33:17] tid:58 - [master connection adder] try connect fail [**.**.102.55:25236 (STANDBY, OPEN, DSC CONTROL)] 服务器模式不匹配
(2)排查分析
a.检查jdbc连接方式,是否配置服务名方式连接
b.检查jdbc驱动包版本
(3)解决处理
排查jdbc客户端已配置/etc/dm_svc.conf,配置url连接串时也改用服务名方式连接达梦主备集群,进行接口调用时仍然出现“服务器模式不匹配”的报错;
排查jdbc驱动发现当前驱动包版本是JdbcDriver7版本,版本较低,通过更新驱动包版本,更换成DmJdbcDriver18版本后,接口调用无报错,该问题已解决。
(1)报错详情
启动监视器查看集群状态,数据库安装路径下 执行 ./dmmonitor dmmonitor.ini ISTATUS为MOUNT
(2)排查分析
a.检查防火墙是否关闭,心跳网是否互通;
b.检查主备集群LSN 是否一致;
c.检查数据库魔数是否一致;
(3)解决处理
a.查看dm_dmwatcher_DAMENG_202311.log 日志,报错详情如下:
receive tcp msg failed, close tcp port, xxxxxx, errno:0, error:Failure occurs in data_recv_inet_once, code(0) len(8128, 0), code:-6007
b.检查主备库上端口是否开启:
查看数据库监听端口号
# cat /dm8/data/DMTEST/dm.ini|grep PORT_NUM
PORT_NUM = 5236 #Port number on which the database server will listen
DCRS_PORT_NUM = 6236 #Port number on which the database dcrs will listen
AP_PORT_NUM = 0 #Port number on which the database ap will listen
# lsof -i:5236
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dmserver 2839 dmdba 5u IPv6 84036 0t0 TCP *:padl2sim (LISTEN)
据此判断监听端口没有问题
c.ping备库IP通的,telnet备库IP,报no route to host
d.检查防火墙状态:systemctl status firewalld ,显示:Active:active(running),据此判断防火墙未关闭,确定主备间TCP网络不通
关闭主备库防火墙,执行以下命令设置开机禁用防火墙并关闭防火墙:
systemctl disable firewalld
systemctl stop firewalld
关闭主备库 selinux ,selinux 状态需要设置为 disabled
set enforce 0
vim /etc/selinux/config设置SELINUX=disabled
e.通过 v$rlog 视图查看主备库 LSN 和魔数,确认是否一致:
select file_lsn,cur_lsn,n_magic,db_magic from v$rlog;
上述配置逐一检查确认完毕后,按照以下顺序重新启动主备集群,主备集群停止与启动顺序如下:
##主备集群停止顺序:
退出 DM 数据守护
退出监视器
关闭备机的守护进程
关闭主机的守护进程
关闭主机实例
关闭备机实例
##主备集群启动顺序:
启动主机数据库实例服务到Mount状态
启动备机数据库实例服务到mount状态
启动主机的数据库守护进程
启动备机的数据库守护进程
数据库安装路径下 执行 ./dmmonitor dmmonitor.ini 确认集群状态已正常,数据库状态ISTATUS为open
以上是本次分享的内容,如有错漏之处,欢迎帮忙指正。
文章
阅读量
获赞