达梦主备集群部署(手动切换)

1 部署前规划

集群规划

主机器

备机器

业务IP

心跳IP

192.168.1.1

192.168.1.2

实例名

YQDB1

YQDB2

实例端口

5238

5238

MAL端口

5338

5338

MAL守护进程端口

5438

5438

守护进程端口

5538

5538

OGUID

45333

守护组

GDW1

安装目录

/data/dmdbms

实例目录

/data/yqtest/data/YQDB

归档上限

51200

确认监视器IP

环境检查和准备

调整操作系统参数,因操作系统存在差异性,有些操作系统没有该文件,可不用修改该参数。标红色字体以操作系统实际文件为准。

调整sysctl.conf

[root@~]# vi /etc/sysctl.conf

fs.file-max = 6815744

fs.aio-max-nr = 1048576

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

vm.overcommit_memory = 1

vm.swappiness = 0

vm.dirty_background_ratio = 3

vm.dirty_ratio = 80

vm.dirty_expire_centisecs = 500

vm.dirty_writeback_centisecs = 100

[root@~]# sysctl -p

[root@~]# sysctl -p /etc/sysctl.conf

[root@~]# sysctl -q vm.swappiness

调整limits.conf

[root@~]# ulimit -n65536

[root@~]# vi /etc/security/limits.conf

  *  soft  nice    0

  *  hard  nice    0

  *  soft  as      unlimited

  *  hard  as      unlimited

  *  soft  fsize   unlimited

  *  hard  fsize   unlimited

  *  soft  nproc   65536

  *  hard  nproc   65536

  *  soft  nofile  65536

  *  hard  nofile  65536

  *  soft  core    unlimited

  *  hard  core    unlimited

  *  soft  data    unlimited

  *  hard  data    unlimited

[root@~]# vi /etc/security/limits.d/90-nproc.conf

  *  soft  nproc  65536

[root@~]# vi /etc/profile

ulimit -SHn 65536

调整login

[root@~]# vi /etc/pam.d/login

session  required  /lib64/security/pam_limits.so

session  required  pam_limits.so

关闭selinux

[root@~]# vi /etc/sysconfig/selinux

SELINUX = disabled

新建用户

groupadd dinstall

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

passwd dmdba

修改文件打开最大数

vi /etc/security/limits.conf 在最后添加四条语句,需添加的语句如下:

dmdba hard nofile 65536

dmdba soft nofile 65536

dmdba hard stack 32768

dmdba soft stack 16384

切换到 dmdba 用户,查看是否生效,命令如下:

su - dmdba

ulimit -a

挂载镜像

mount -o loop /opt/dm8_setup_rh7_64_ent_8.1.1.45_20191121.iso /mnt

创建软件安装目录

mkdir /data/yqtest

chown dmdba:dinstall -R /data/yqtest

chmod -R 755  /data/yqtest

部署主数据库

数据库安装

命令行安装

su – dmdba

cd /mnt

./DMInstall.bin -i

数据库安装完成后,需要切换至 root 用户执行上图中的命令 /data/yqtest /script/root/root_installer.sh 创建 DmAPService,否则会影响数据库备份。

初始化实例

使用 dmdba 用户配置实例,进入到 DM 数据库安装目录下的 bin 目录中,使用 dminit 命令初始化实例。

./dminit help

./dminit path=/dm/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y

CHARSET=1 DB_NAME=YQDB INSTANCE_NAME=YQDB1  PORT_NUM=5238

PATH:初始数据库存放的路径,默认路径为dminit.exe 当前所在的工作目录.

PAGE_SIZE: 数据文件使用的页大小,可以为 4K、8K、16K 或 32K 之一,选择的页大小越大,则 DM 支持的元组长度也越大,但同时空间利用率可能下降,缺省使用 8K.

EXTENT_SIZE: 数据文件使用的簇大小,即每次分配新的段空间时连续的页数.

CASE_SENSITIVE:标识符大小写敏感, 缺省值为 Y

PORT_NUM: 初始化时设置 dm.ini 中的PORT_NUM,缺省为 5236.

CHARSET: 字符集选项。 0 代表 GB180301 代表UTF-82 代表韩文字符集 EUC-KR

注册服务

注册服务需使用 root 用户进行注册。使用 root 用户进入数据库安装目录的 /script/root 下,如下所示:

cd /data/yqtest/script/root

./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p YQDB1

-t 注册服务的类型

-p 数据库实例名

修改dm.ini

[dmdba@~]# vi /data/yqtest/data/YQDB/dm.ini

PORT_NUM                        = 5238(根据实际情况设置)

DW_INACTIVE_INTERVAL           = 60

ALTER_MODE_STATUS             = 0

ENABLE_OFFLINE_TS              = 2

MAL_INI                           = 1

ARCH_INI                          = 1

RLOG_SEND_APPLY_MON          = 64

归档模式也可以通过sql更改

--开启归档

[dmdba@~]# ./disql SYSDBA/SYSDBA:5238

SQL> ALTER DATABASE MOUNT;

SQL> ALTER DATABASE ARCHIVELOG;

SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/data/yqtest/data/YQDB/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200',ARCH_TYPE = REALTIME ,ARCH_DEST = YQDB2;

备份数据库

离线备份实例,需要启动damp服务,bin目录下启动dampservice,使用dmrman工具做备份,切换到bin目录

./dmrman

RMAN> BACKUP DATABASE '/data/yqtest/data/YQDB/dm.ini' FULL BACKUPSET '/data/yqtest/db_full_bak_01';

拷贝数据库到备库

scp -r /data/yqtest/db_full_bak_01 xxx.xx.xx.xx:/data/yqtest/

scp /data/yqtest/data/YQDB/dm.ini xxx.xx.xx.xx:/data/yqtest/

配置dmarch.ini

[dmdba@~]# vi /data/yqtest/data/YQDB/dmarch.ini

[ARCHIVE_LOCAL]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /data/yqtest/data/YQDB/arch/ #本地归档存放路径(提前创建好归档目录

ARCH_FILE_SIZE = 1024 #单个归档大小,单位MB

ARCH_SPACE_LIMIT = 51200 #归档上限,单位MB

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME #实时归档类型

ARCH_DEST = YQDB2 #实时归档目标实例名(主库上写备实例名,备库上写主实例名

配置dmmal.ini

vi /data/yqtest/data/YQDB/dmmal.ini

MAL_CHECK_INTERVAL = 10 #MAL链路检测时间间隔

MAL_CONN_FAIL_INTERVAL = 10 #判定MAL链路断开的时间

MAL_TEMP_PATH = /data/yqtest/data/malpath/ #临时文件目录

MAL_BUF_SIZE = 512 #单个MAL缓存大小,单位MB

MAL_SYS_BUF_SIZE = 2048 #MAL总大小限制,单位MB

MAL_COMPRESS_LEVEL = 0 #MAL消息压缩等级,0表示不压缩

[MAL_INST1]

MAL_INST_NAME = YQDB1 #实例名,和 dm.ini的INSTANCE_NAME一致

MAL_HOST = 192.168.1.1 #MAL系统监听TCP连接的IP地址

MAL_PORT = 5338 #MAL系统监听TCP连接的端口

MAL_INST_HOST = 172.16.1.1 #实例的对外服务IP地址

MAL_INST_PORT = 5238 #实例对外服务端口,和dm.ini的PORT_NUM一致

MAL_DW_PORT = 5438 #实例对应的守护进程监听TCP连接的端口

MAL_INST_DW_PORT = 5538 #实例监听守护进程TCP连接的端口

[MAL_INST2]

MAL_INST_NAME = YQDB2

MAL_HOST = 192.168.1.2

MAL_PORT = 5338

MAL_INST_HOST = 172.16.1.2

MAL_INST_PORT = 5238

MAL_DW_PORT = 5438

MAL_INST_DW_PORT = 5538

配置dmwatch.ini

vi /data/yqtest/data/YQDB/dmwatcher.ini

[GDW1]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = MANUAL #故障手动切换模式

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

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

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

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

INST_INI = /data/yqtest/data/YQDB/dm.ini #dm.ini文件路径

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

INST_STARTUP_CMD =/data/yqtest/bin/dmserver #命令行方式启动

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

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

2 部署备数据库

数据库安装

同主库安装步骤

修改dm.ini

[dmdba@~]# vi /data/yqtest/data/YQDB/dm.ini

INSTANCE_NAME              =YQDB2  #数据库实例名

PORT_NUM                        = 5238(根据实际情况设置)

DW_INACTIVE_INTERVAL           = 60

ALTER_MODE_STATUS             = 0

ENABLE_OFFLINE_TS              = 2

MAL_INI                           = 1

ARCH_INI                          = 1

RLOG_SEND_APPLY_MON          = 64

配置dmarch.ini

[dmdba@~]# vi /data/yqtest/data/YQDB/dmarch.ini

[ARCHIVE_LOCAL]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /data/yqtest/data/YQDB/arch/ #本地归档存放路径(提前创建好归档目录)

ARCH_FILE_SIZE = 1024 #单个归档大小,单位MB

ARCH_SPACE_LIMIT = 51200 #归档上限,单位MB

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME #实时归档类型

ARCH_DEST = YQDB1 #实时归档目标实例名(主库上写备实例名,备库上写主实例名

配置dmmal.ini

同主库

配置dmwatch.ini

同主库

初始化实例

./dminit path=/dm/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y

CHARSET=1 DB_NAME=YQDB INSTANCE_NAME=YQDB2  PORT_NUM=5238

恢复数据

使用dmrman工具做数据恢复,需要启动damp服务,bin目录下启动dampservice,,切换到bin目录

./dmrman

还原数据库

RMAN> RESTORE DATABASE '/data/yqtest/dm.ini' FROM BACKUPSET '/data/yqtest/db_full_bak_01';

恢复数据库

RMAN> RECOVER DATABASE '/data/yqtest/dm.ini' FROM BACKUPSET '/data/yqtest/db_full_bak_01'

更新DB_MAGIC

RMAN> RECOVER DATABASE '/data/yqtest/dm.ini' UPDATE DB_MAGIC;

注册服务

[root@~]# /data/dmdbms/script/root/dm_service_installer.sh -t dmserver -p YQDB2 -dm_ini /data/yqtest/data/YQDB/dm.ini -m mount

[root@~]# /data/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /data/yqtest/data/YQDB/dmwatcher.ini

3 配置监视进程

创建dmmonitor.ini

[dmdba@~]# vi /data/yqtest/data/YQDB/dmmonitor.ini

MON_DW_CONFIRM = 0 #0为非确认,1为确认(0可以启动多个监视服务)

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

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

MON_LOG_FILE_SIZE = 512 #单个日志大小,单位MB

MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位MB

[GDW1]

MON_INST_OGUID = 45335 #组GDW1的唯一OGUID 值

MON_DW_IP = 192.168.1.1:5436 #IP对应MAL_HOST,PORT对应MAL_DW_PORT

MON_DW_IP = 192.168.1.2:5436

注册服务(选做)

[root@~]# /data/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /opt/dmdbms/bin/dmmonitor.ini

可手动启动,进行交互操作

./dmmonitor  /data/yqtest/data/YQDB/ dmmonitor.ini

dmmonitor命令说明:

Show 查看集群节点信息,可查看同步到的位置,实例角色等

Show open info 组名.实例名 查看库的历史状态

Choose switchover 查看可切换的实例

Login  登录主库,输入用户名和密码

Switchover 组名.实例名  将命令中实例切换主的角色。

(经测试可知,switch后的前主实例会话会中断,前备实例上的会话不会中断)

启动服务并验证

在主库上面登录数据库创建表插入数据,查看备库是否同步相应操作。

./disql SYSDBA/SYSDBA:5238

CREATE TABLE TEST (ID INT,NAME VARCHAR2(50),PRIMARY KEY(ID));

INSERT INTO TEST VALUES(1,’YIQING’);

登录备库查看

Select * from test;

4 应用连接

Linux环境:dm_svc.conf放在应用服务器/etc目录下。

Windows32环境:dm_svc.conf放在应用服务器System32目录下。

Windows64环境:dm_svc.conf放在应用服务器System32和SysWOW64目录下。

创建dm_svc.conf

[root@~]# vi /etc/dm_svc.conf

TIME_ZONE=(+8:00)

LANGUAGE=(cn)

DW1=(172.16.1.1:5238,172.16.1.2:5238)

[DW1]

LOGIN_MODE=(1)

SWITCH_TIME=(300)

SWITCH_INTERVAL=(200)

应用连接

dm.jdbc.driver.DmDriver

jdbc:dm://DW1

达梦技术社区:https://eco.dameng.com

你可能感兴趣的:(linux,数据库)