中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档

DM8达梦数据库数据守护(Data Watch)实时主备环境搭建与切换测试

 

1、环境准备:

本示例中组名为“GRP1”,配置为实时主备,主库命名为“DM1”,备库命名为“DM2”

主机类型

IP地址

实例名

操作系统

主库

10.10.15.85(外)

10.10.20.85(内)

dmdb1

kylin

备库

10.10.15.84(外)

10.10.20.84(内)

Dmdb2

kylin

监视器

10.10.15.83(外)

10.10.20.83(内)

 

kylin

 

2、端口规划

实例名

PORT_NUM

MAL_INST_DW_PORT

MAL_HOST

MAL_PORT

MAL_DW_PORT

DM1

5235

5237

10.10.20.85

5238

5239

DM2

5235

5237

10.10.20.84

5238

5239

MAL系统是基于TCP协议实现的一种内部通信机制,DM通过MAL系统实现Redo日志传输,以及其他一些实例间的消息通讯。

守护进程(dmwatcher)是数据库实例和监视器之间信息流转的桥梁。数据库实例向本地守护进程发送信息,接收本地守护进程的消息和命令;

监视器(dmmonitor)接收守护进程的消息,并向守护进程发送命令;数据库实例与监视器之间没有直接的消息交互;

守护进程解析并执行监视器发起的各种命令(Switchover/Takeover/Open force等),并在必要时通知数据库实例执行相应的操作。

MAL_DW_PORT:守护进程监听端口,其他守护进程或监视器使用MAL_HOST + MAL_DW_PORT创建TCP连接。监视器配置文件dmmonitor.ini中,MON_DW_IP就是一组MAL_HOST: MAL_DW_PORT。

MAL_INST_DW_PORT:实例对守护进程的监听端口,守护进程使用MAL_HOST + MAL_INST_DW_PORT创建到实例的TCP连接。

 

3、安装数据库

安装系统包

root@tidb-03:/home# cat /etc/apt/sources.list

deb http://archive.kylinos.cn/kylin/KYLIN-ALL 4.0.2sp2-server-ft2000 main restricted universe multiverse

root@tidb-03:/home# apt install x11-xserver-utils

root@tidb-01:~# apt-get install java*

root@Kylin:~# java -version

openjdk version "1.8.0_191"

OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-0kord0.16.04.1-b12)

OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

root@Kylin:~# groupadddinstall

root@Kylin:~# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

root@Kylin:~# passwddmdba

输入新的UNIX密码:

重新输入新的UNIX密码:

passwd:已成功更新密码

 

groupadddinstall

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

passwddmdba

mkdir -p /app/dm8/

chown -R dmdba.dinstall /app/dm8/

chmod -R 775 /app/dm8/

 

cat>> /etc/security/limits.conf<< EOF

dmdbasoftnproc2047

dmdbahardnproc16384

dmdbasoftnofile1024

dmdbahardnofile65536

EOF

 

cat>> /etc/pam.d/login << EOF

session required /lib64/security/pam_limits.so

EOF

 

kernel.shmall = 2097152

kernel.shmmax = 4294967296

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 359670

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 1048576

net.core.rmem_max = 1048576

net.core.wmem_default = 262144

net.core.wmem_max = 262144

 

vi .profile

export DM_HOME=/app/dm8/

export PATH=$DM_HOME/dmdbms/bin::$PATH:$HOME/bin:

export DM_SID=dmdb

 

上传介质

mount -o loop dm8_setup_FT_arm64_ent_8.1.0.147_20190328.iso /mnt/

cchown -R dmdba:dinstall /home/dm*

chmod -R 775 /home/dm*

chown -R dmdba:dinstall /app/*

chmod -R 775 /app/*

root@Kylin:/dm8# su - dmdba

dmdba@Kylin:~$ cd /mnt/

 

root@tidb-05:~# su - dmdba

dmdba@tidb-05:~$ export DISPLAY=10.10.11.46:0

dmdba@tidb-05:~$ xhost +

access control disabled, clients can connect from any host

xhost:must be on local machine to enable or disable access control.

dmdba@tidb-05:~$ cd /mnt/

dmdba@tidb-05:/mnt$ ls

DMInstall.binDM_Install_en.pdfDM_Install_zh.pdfrelease_en.txtrelease_zh.txt

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第1张图片

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第2张图片

 

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第3张图片

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第4张图片

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第5张图片

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第6张图片

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第7张图片

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第8张图片

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第9张图片

root@tidb-05:~# /app/dm8/script/root/root_installer.sh

移动/app/dm8/bin/dm_svc.conf到/etc目录

修改服务器权限

创建DmAPService服务

Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /lib/systemd/system/DmAPService.service.

创建服务(DmAPService)完成

启动DmAPService服务

 

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第10张图片

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第11张图片

到此数据库软件安装完成。

dmdba@tidb-05:/app/dm8/bin$ ./dmi

dmimondminit

dmdba@tidb-05:/app/dm8/bin$ ./dminit PATH=/app/dm8/data/ DB_NAME=dmdb INSTANCE_NAME=dmdb1 PORT_NUM=5235

initdb V8.1.0.147-Build(2019.03.27-104581)ENT

db version: 0x7000a

filedm.key not found, use default license!

License will expire in 14 day(s) on 2020-07-21

 

log file path: /app/dm8/data/dmdb/dmdb01.log

 

log file path: /app/dm8/data/dmdb/dmdb02.log

 

write to dir [/app/dm8/data/dmdb].

createdm database success. 2020-07-07 15:59:29

 

使用dmserver启动数据库,在DM数据库第一次必须正常启动,完成初始化的动作:

 

dmdba@tidb-05:/app/dm8/bin$ ./dmserver /app/dm8/data/dmdb/dm.ini

filedm.key not found, use default license!

version info: develop

Use normal os_malloc instead of HugeTLB

Use normal os_malloc instead of HugeTLB

DM Database Server x64 V8.1.0.147-Build(2019.03.27-104581)ENTstartup...

License will expire in 14 day(s) on 2020-07-21

ckptlsn: 0

ndctdb load finished

ndct fill fast pool finished

iid page's trxid[1]

NEXT TRX ID = 2

pseg_collect_items, collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0pre_cmt_pages

pseg_process_collect_items end, 0 active trx, 0 active pages, 0 committed trx, 0 committed pages

total 0 active crash trx, pseg_crash_trx_rollback begin ...

pseg_crash_trx_rollback end

purg2_crash_cmt_trx end, total 0 page purged

set EP[0]'s pseg state to inactive

psegrecv finished

nsvr_startup end.

aud sys init success.

audrt sys init success.

trx: 2 purged 1 pages

trx: 21 purged 1 pages

trx: 22 purged 1 pages

trx: 23 purged 1 pages

trx: 24 purged 1 pages

trx: 35 purged 1 pages

trx: 155 purged 1 pages

trx: 174 purged 1 pages

trx: 175 purged 1 pages

trx: 176 purged 1 pages

trx: 177 purged 1 pages

trx: 178 purged 1 pages

trx: 179 purged 1 pages

trx: 181 purged 1 pages

trx: 183 purged 1 pages

trx: 186 purged 1 pages

trx: 192 purged 1 pages

trx: 202 purged 1 pages

trx: 1039 purged 1 pages

trx: 1040 purged 1 pages

trx: 1041 purged 1 pages

trx: 1042 purged 1 pages

trx: 1043 purged 1 pages

trx: 1044 purged 1 pages

trx: 1045 purged 1 pages

trx: 1046 purged 1 pages

trx: 1047 purged 1 pages

trx: 1048 purged 1 pages

trx: 1049 purged 1 pages

trx: 1050 purged 1 pages

trx: 1051 purged 1 pages

trx: 1052 purged 1 pages

trx: 1053 purged 1 pages

trx: 1088 purged 1 pages

trx: 1089 purged 1 pages

trx: 1090 purged 1 pages

trx: 1091 purged 1 pages

trx: 1096 purged 21 pages

trx: 1123 purged 1 pages

trx: 1124 purged 1 pages

trx: 1125 purged 1 pages

trx: 1126 purged 1 pages

trx: 1132 purged 1 pages

trx: 1134 purged 1 pages

trx: 1136 purged 1 pages

trx: 1141 purged 1 pages

trx: 1146 purged 1 pages

trx: 1151 purged 1 pages

trx: 1153 purged 1 pages

trx: 1156 purged 1 pages

trx: 1158 purged 1 pages

trx: 1168 purged 1 pages

trx: 1170 purged 1 pages

trx: 1172 purged 1 pages

trx: 1177 purged 1 pages

trx: 1178 purged 1 pages

trx: 1194 purged 7 pages

trx: 1203 purged 1 pages

systablesdescinit success.

ndct_db_load_info success.

nsvr_process_before_open begin.

nsvr_process_before_open success.

total 0 active crash trx, pseg_crash_trx_rollback begin ...

pseg_crash_trx_rollback end

SYSTEM IS READY.

 

1、   启动归档模式

dmdba@tidb-05:/app/dm8/bin$ ./disql SYSDBA/SYSDBA:5235

 

服务器[LOCALHOST:5235]:处于普通打开状态

登录使用时间: 8.119(毫秒)

disql V8.1.0.147-Build(2019.03.27-104581)ENT

SQL> alter database mount;

操作已执行

已用时间: 00:00:01.842.执行号:0.

SQL> alter database add archivelog 'DEST=/app/dm8/dmarch,TYPE=local,FILE_SIZE=128,space_limit=0';

操作已执行

已用时间: 1.112(毫秒).执行号:0.

SQL> alter database archivelog;

操作已执行

已用时间: 4.560(毫秒).执行号:0.

SQL> alter database open;

操作已执行

已用时间: 00:00:01.217.执行号:0.

SQL> select arch_mode from v$database;

 

行号ARCH_MODE

---------- ---------

1Y

 

已用时间: 1.259(毫秒).执行号:866.

 

SQL> shutdown immediate ;

操作已执行

 

2、注册服务并且启动实例

root@tidb-05:/app/dm8/script/root# ./dm_service_installer.sh -t dmserver -p dmdb -i /app/dm8/data/dmdb/dm.ini

Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicedmdb.service to /lib/systemd/system/DmServicedmdb.service.

创建服务(DmServicedmdb)完成

 

root@tidb-05:/app/dm8/script/root# systemctl start DmServicedmdb.service

root@tidb-05:/app/dm8/script/root# ps -ef | grep dm.ini

dmdba1889110 09:43 ?00:00:00 /app/dm8/bin/dmserver /app/dm8/data/dmdb/dm.ini -noconsole

root18960 183480 09:43 pts/300:00:00 grep --color=auto dm.ini

停止服务

root@tidb-05:/app/dm8/script/root# systemctl stop DmServicedmdb

脱机备份

dmdba@tidb-05:/app/dm8/bin$ ./dmrman

dmrman V8.1.0.147-Build(2019.03.27-104581)ENT

RMAN> backup database '/app/dm8/data/dmdb/dm.ini' full backupset '/app/dmbak/dbbak01';

backup database '/app/dm8/data/dmdb/dm.ini' full backupset '/app/dmbak/dbbak01';

EP[0] max_lsn: 50846

BACKUP DATABASE [dmdb],execute......

CMD CHECK LSN......

BACKUP DATABASE [dmdb],collect dbf......

CMD CHECK ......

DBF BACKUP SUBS......

total 1 packages processed...

total 3 packages processed...

total 4 packages processed...

DBF BACKUP MAIN......

BACKUPSET [/app/dmbak/dbbak01] END, CODE [0]......

META GENERATING......

total 8 packages processed...

total 8 packages processed...

total 8 packages processed!

CMD END.CODE:[0]

backup successfully!

time used: 964.395(ms)

RMAN>

 

3、创建备库利用主库备份恢复

 

dmdba@tidb-04:/app/dm8/bin$ ./dminit PATH=/app/dm8/data DB_NAME=dmdb INSTANCE_NAME=dmdb2 PORT_NUM=5235

initdb V8.1.0.147-Build(2019.03.27-104581)ENT

db version: 0x7000a

file dm.key not found, use default license!

License will expire in 14 day(s) on 2020-07-22

 

log file path: /app/dm8/data/dmdb/dmdb01.log

 

log file path: /app/dm8/data/dmdb/dmdb02.log

 

write to dir [/app/dm8/data/dmdb].

create dm database success. 2020-07-08 10:37:59

dmdba@tidb-04:/app/dm8/bin$

 

将主库的备份复制备库

dmdba@tidb-05:/app/dmbak$ scp -r dbbak01 10.10.15.84:/app/dmbak/

[email protected]'s password:

Permission denied, please try again.

[email protected]'s password:

dbbak01.meta100%69KB40.7MB/s00:00

dbbak01.bak100% 5510KB 103.6MB/s00:00

dmdba@tidb-05:/app/dmbak$

 

恢复备库

dmdba@tidb-04:/app/dm8/bin$ pwd

/app/dm8/bin

dmdba@tidb-04:/app/dm8/bin$ ./dmrman CTLSTMT="RESTORE DATABASE'/app/dm8/data/dmdb/dm.ini' FROM BACKUPSET '/app/dmbak/dbbak01'"

dmrman V8.1.0.147-Build(2019.03.27-104581)ENT

RESTORE DATABASE '/app/dm8/data/dmdb/dm.ini' FROM BACKUPSET '/app/dmbak/dbbak01'

file dm.key not found, use default license!

RESTORE DATABASE CHECK......

total 0 packages processed...

RESTORE DATABASE,dbf collect......

RESTORE DATABASE,dbf refresh ......

RESTORE BACKUPSET [/app/dmbak/dbbak01] START......

total 4 packages processed...

total 8 packages processed...

RESTORE DATABASE,UPDATE ctl file......

RESTORE DATABASE,REBUILD key file......

RESTORE DATABASE,CHECK db info......

RESTORE DATABASE,UPDATE db info......

total 8 packages processed...

total 8 packages processed!

CMD END.CODE:[0]

restore successfully.

time used: 4165.046(ms)

dmdba@tidb-04:/app/dm8/bin$ ./dmrman CTLSTMT="RECOVER DATABASE'/app/dm8/data/dmdb/dm.ini' FROM BACKUPSET '/app/dmbak/dbbak01'"

dmrman V8.1.0.147-Build(2019.03.27-104581)ENT

RECOVER DATABASE '/app/dm8/data/dmdb/dm.ini' FROM BACKUPSET '/app/dmbak/dbbak01'

file dm.key not found, use default license!

EP[0] max_lsn: 50846

RESTORE RLOGCHECK......

total 0 packages processed...

CMD END.CODE:[603],DESC:[备份集[/app/dmbak/dbbak01]备份过程中未产生日志]

备份集[/app/dmbak/dbbak01]备份过程中未产生日志

recover successfully!

time used: 168.066(ms)

dmdba@tidb-04:/app/dm8/bin$

 

dmdba@tidb-04:/app/dm8/bin$ ./dmrman CTLSTMT="RECOVER DATABASE '/app/dm8/data/dmdb/dm.ini' UPDATE DB_MAGIC"

dmrman V8.1.0.147-Build(2019.03.27-104581)ENT

RECOVER DATABASE '/app/dm8/data/dmdb/dm.ini' UPDATE DB_MAGIC

file dm.key not found, use default license!

EP[0] max_lsn: 50846

EP[0]'s begin_lsn[50846] >= end_lsn[50846]

recover successfully!

time used: 927.140(ms)

dmdba@tidb-04:/app/dm8/bin$

 

4、配置主备库参数

4.1配置dm.ini

主库

修改主备库参数,注意2个库的instance_name参数不同。

INSTANCE_NAME = DMDB1

PORT_NUM = 5235#数据库实例监听端口

ALTER_MODE_STATUS = 0#不允许手工方式修改实例模式/状态

ENABLE_OFFLINE_TS = 2#不允许备库OFFLINE表空间

MAL_INI = 1#打开MAL系统

ARCH_INI = 1#打开归档配置

备库

INSTANCE_NAME = DMDB2

PORT_NUM = 5235#数据库实例监听端口

ALTER_MODE_STATUS = 0#不允许手工方式修改实例模式/状态

ENABLE_OFFLINE_TS = 2#不允许备库OFFLINE表空间

MAL_INI = 1#打开MAL系统

ARCH_INI = 1#打开归档配置

4.2配置dmmal.ini

主库

dmdba@tidb-05:/app/dm8/data/dmdb$ cat dmmal.ini

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

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

 

[MAL_INST1]

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

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

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

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

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

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

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

 

[MAL_INST2]

MAL_INST_NAME = DMDB2

MAL_HOST = 10.10.15.84

MAL_PORT = 5238

MAL_INST_HOST = 10.10.15.84

MAL_INST_PORT = 5235

MAL_INST_DW_PORT = 5237

MAL_DW_PORT = 5239

备库

dmdba@tidb-04:/app/dm8/data/dmdb$ cat dmmal.ini

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

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

 

[MAL_INST1]

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

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

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

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

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

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

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

 

[MAL_INST2]

MAL_INST_NAME = DMDB2

MAL_HOST = 10.10.15.84

MAL_PORT = 5238

MAL_INST_HOST = 10.10.15.84

MAL_INST_PORT = 5235

MAL_INST_DW_PORT = 5237

MAL_DW_PORT = 5239

4.3配置dmarch.ini

主库

dmdba@tidb-05:/app/dm8/data/dmdb$ cat dmwatcher.ini

[GRP1]

DW_TYPE = GLOBAL#全局守护类型

DW_MODE = MANUAL#自动切换模式

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

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

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

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

INST_INI = /app/dm8/data/dmdb/dm.ini#dm.ini配置文件路径

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

INST_STARTUP_CMD = /app/dm8/bin/dmserver#命令行方式启动

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

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

备库

dmdba@tidb-04:/app/dm8/data/dmdb$ cat dmwatcher.ini

[GRP1]

DW_TYPE = GLOBAL#全局守护类型

DW_MODE = MANUAL#自动切换模式

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

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

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

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

INST_INI = /app/dm8/data/dmdb/dm.ini#dm.ini配置文件路径

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

INST_STARTUP_CMD = /app/dm8/bin/dmserver#命令行方式启动

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

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

主备库生成dmwatcher.ctl控制文件

./dmctlcvt TYPE=3 SRC=/app/dm8/data/dmdb/dmwatcher.ini DEST=/app/dm8/data/dmdb

4.4以mount模式启动主备库

主库

dmdba@tidb-05:/app/dm8/bin$ dmserver /app/dm8/data/dmdb/dm.ini mount

version info: enterprise

Use normal os_malloc instead of HugeTLB

Use normal os_malloc instead of HugeTLB

DM Database Server x64 V8.1.0.147-Build(2019.03.27-104581)ENTstartup...

License will expire on 2021-06-01

ckptlsn: 50846

ndctdb load finished

ndct fill fast pool finished

nsvr_startup end.

aud sys init success.

audrt sys init success.

systablesdescinit success.

ndct_db_load_info success.

SYSTEM IS READY.

备库

dmdba@tidb-04:/app/dm8/bin$ ./dmserver /app/dm8/data/dmdb/dm.ini mount

version info: enterprise

Use normal os_malloc instead of HugeTLB

Use normal os_malloc instead of HugeTLB

DM Database Server x64 V8.1.0.147-Build(2019.03.27-104581)ENTstartup...

License will expire on 2021-06-01

main rfil[/app/dm8/data/dmdb/dmdb01.log]'s grp collect 0 valid pwr record, discard 0 invalid pwr record

EP[0] max_lsn: 50846

ndctdb load finished

ndct fill fast pool finished

nsvr_startup end.

aud sys init success.

audrt sys init success.

systablesdescinit success.

ndct_db_load_info success.

SYSTEM IS READY.

一定要以mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成Redo日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动Open数据库。

4.5设置OGUID

在主备库分别执行:

主库

dmdba@tidb-05:/app/dm8/data/dmdb$ disqlsysdba/SYSDBA:5235

 

服务器[LOCALHOST:5235]:处于普通配置状态

登录使用时间: 7.934(毫秒)

disql V8.1.0.147-Build(2019.03.27-104581)ENT

SQL>sp_set_oguid(453331);

DMSQL过程已成功完成

已用时间: 2.971(毫秒).执行号:1.

备库

dmdba@tidb-04:/app/dm8/bin$ disqlsysdba/SYSDBA:5235

 

服务器[LOCALHOST:5235]:处于普通配置状态

登录使用时间: 7.919(毫秒)

disql V8.1.0.147-Build(2019.03.27-104581)ENT

SQL>sp_set_oguid(453331);

DMSQL过程已成功完成

已用时间: 9.767(毫秒).执行号:1.

4.6修改数据库模式

主库修改数据库为primary

SQL> alter database primary;

操作已执行

已用时间: 2.599(毫秒).执行号:0.

备库修改数据库为standby

如果当前数据库不是normal模式,需要先修改dm.ini中ALTER_MODE_STATUS值 为1,允许修改数据库模式,修改Standby模式成功后再改回为0。

dmdba@tidb-04:/app/dm8/data/dmdb$ disqlsysdba/SYSDBA:5235

 

服务器[LOCALHOST:5235]:处于普通配置状态

登录使用时间: 7.915(毫秒)

disql V8.1.0.147-Build(2019.03.27-104581)ENT

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

DMSQL过程已成功完成

已用时间: 4.406(毫秒).执行号:2.

SQL> alter database standby;

操作已执行

已用时间: 8.667(毫秒).执行号:0.

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

DMSQL过程已成功完成

已用时间: 3.844(毫秒).执行号:3.

 

5、注册并启动守护进程

备库注册服务:

root@tidb-04:/app/dm8/script/root# ./dm_service_installer.sh -t dmserver -p dmdb -i /app/dm8/data/dmdb/dm.ini

Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicedmdb.service to /lib/systemd/system/DmServicedmdb.service.

创建服务(DmServicedmdb)完成

在主备库进行注册:

主库

root@tidb-05:/app/dm8/script/root# ./dm_service_installer.sh -t dmwatcher -p dmdb -i /app/dm8/data/dmdb/dmwatcher.ini

Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicedmdb.service to /lib/systemd/system/DmWatcherServicedmdb.service.

创建服务(DmWatcherServicedmdb)完成

备库

root@tidb-04:/app/dm8/script/root# ./dm_service_installer.sh -t dmwatcher -p dmdb -i /app/dm8/data/dmdb/dmwatcher.ini

Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicedmdb.service to /lib/systemd/system/DmWatcherServicedmdb.service.

创建服务(DmWatcherServicedmdb)完成

 

主库启动服务

root@tidb-05:/home/dmdba# systemctl start DmWatcherServicedmdb.service

 

[Note] System unauthorized, Please contact the system supplier.

 

[Unauthorized System] root@tidb-05:/home/dmdba# systemctl status DmWatcherServicedmdb.service

●DmWatcherServicedmdb.service - Dameng Watcher Service(DmWatcherServicedmdb).

Loaded: loaded (/lib/systemd/system/DmWatcherServicedmdb.service; enabled; vendor preset: enabled)

Active: active (exited) since一2020-07-13 11:09:03 CST; 48s ago

Process: 6184 ExecStop=/app/dm8/bin/DmWatcherServicedmdb stop (code=exited, status=0/SUCCESS)

Process: 6424 ExecStart=/app/dm8/bin/DmWatcherServicedmdb start (code=exited, status=0/SUCCESS)

Main PID: 6424 (code=exited, status=0/SUCCESS)

 

7月13 11:08:48 tidb-05 systemd[1]: Starting Dameng Watcher Service(DmWatcherServicedmdb)....

7月13 11:08:48 tidb-05 su[6442]: Successful su for dmdba by root

7月13 11:08:48 tidb-05 su[6442]: + ??? root:dmdba

7月13 11:08:48 tidb-05 su[6442]: pam_unix(su:session): session opened for user dmdba by (uid=0)

7月13 11:09:03 tidb-05 DmWatcherServicedmdb[6424]: [42B blob data]

7月13 11:09:03 tidb-05 systemd[1]: Started Dameng Watcher Service(DmWatcherServicedmdb)..

备库启动服务

root@tidb-04:~# systemctl startDmWatcherServicedmdb

守护进程启动后,进入Startup状态,此时实例都处于Mount状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例Open,并切换为Open状态.

 

[Unauthorized System] root@tidb-04:~# systemctl start DmWatcherServicedmdb.service

 

[Note] System unauthorized, Please contact the system supplier.

 

[Unauthorized System] root@tidb-04:~# systemctl status DmWatcherServicedmdb.service

●DmWatcherServicedmdb.service - Dameng Watcher Service(DmWatcherServicedmdb).

Loaded: loaded (/lib/systemd/system/DmWatcherServicedmdb.service; enabled; vendor preset: enabled)

Active: active (exited) since一2020-07-13 11:07:11 CST; 14s ago

Process: 7164 ExecStop=/app/dm8/bin/DmWatcherServicedmdb stop (code=killed, signal=TERM)

Process: 7512 ExecStart=/app/dm8/bin/DmWatcherServicedmdb start (code=exited, status=0/SUCCESS)

Main PID: 7512 (code=exited, status=0/SUCCESS)

 

7月13 11:06:55 tidb-04 systemd[1]: Starting Dameng Watcher Service(DmWatcherServicedmdb)....

7月13 11:06:56 tidb-04 su[7531]: Successful su for dmdba by root

7月13 11:06:56 tidb-04 su[7531]: + ??? root:dmdba

7月13 11:06:56 tidb-04 su[7531]: pam_unix(su:session): session opened for user dmdba by (uid=0)

7月13 11:07:11 tidb-04 DmWatcherServicedmdb[7512]: [42B blob data]

7月13 11:07:11 tidb-04 systemd[1]: Started Dameng Watcher Service(DmWatcherServicedmdb)..

 

6、配置监视器(第三台服务器)

6.1参数文件

在监控节点的/app/dm8/data/dmdb/目录下创建并修改dmmonitor.ini配置确认监视器,其中MON_DW_IP中的IP和PORT和dmmal.ini中的MAL_HOST和MAL_DW_PORT配置项保持一致

dmdba@tidb-03:/app/dm8/data/dmdb$ cat dmmonitor.ini

MON_DW_CONFIRM = 1 #确认监视器模式

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

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

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

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

 

[GRP1]

MON_INST_OGUID = 453331#组GRP1的唯一OGUID值

MON_DW_IP = 10.10.15.85:5239

MON_DW_IP = 10.10.15.84:5239

 

cd /app/dm8/bin

./dmmonitor /app/dm8/data/dmdb/dmmonitor.ini

 

[Unauthorized System] dmdba@tidb-03:/app/dm8/bin$ ./dmmonitor /app/dm8/data/dmdb/dmmonitor.ini

[monitor]2020-07-13 11:13:36: DMMONITOR[3.0] V8.1.0.147-Build(2019.03.27-104581)ENT

[monitor]2020-07-13 11:13:36: DMMONITOR[3.0] IS READY.

 

[monitor]2020-07-13 11:13:36: Received message from(DMDB1)

WTIMEWSTATUSINST_OKINAMEISTATUSIMODERSTATN_OPENFLSNCLSN

2020-07-13 11:13:36OPENOKDMDB1OPENPRIMARYVALID66563165631

 

[monitor]2020-07-13 11:13:36: Received message from(DMDB2)

WTIMEWSTATUSINST_OKINAMEISTATUSIMODERSTATN_OPENFLSNCLSN

2020-07-13 11:13:36OPENOKDMDB2OPENSTANDBYVALID66563165631

 

 

Input command illegal, please input help to get the help information!

 

show

2020-07-13 11:14:28

#================================================================================#

GROUPOGUIDMON_CONFIRMMODEMPP_FLAG

GRP1453331TRUEMANUALFALSE

 

 

<>

IPMAL_DW_PORTWTIMEWTYPEWCTLSTATWSTATUSINAMEINST_OKN_EPISTATUSIMODERTYPERSTAT

10.10.15.8552392020-07-13 11:14:27GLOBALVALIDOPENDMDB1OK1OPENPRIMARYREALTIMEVALID

 

EP INFO:

INST_PORTINST_OKINAMEISTATUSIMODEDSC_STATUSDSC_SEQNODSC_CONTROL_NODE N_OKRTYPERSTATN_OPENFLSNCLSNDW_STAT_FLAGN_TASKTASK_MEM_USED

5235OKDMDB1OPENPRIMARYDSC_OPEN001REALTIMEVALID66563165631NONE00

 

<>

IPMAL_DW_PORTWTIMEWTYPEWCTLSTATWSTATUSINAMEINST_OKN_EPISTATUSIMODERTYPERSTAT

10.10.15.8452392020-07-13 11:14:27GLOBALVALIDOPENDMDB2OK1OPENSTANDBYREALTIMEVALID

 

EP INFO:

INST_PORTINST_OKINAMEISTATUSIMODEDSC_STATUSDSC_SEQNODSC_CONTROL_NODE N_OKRTYPERSTATN_OPENFLSNCLSNDW_STAT_FLAGN_TASKTASK_MEM_USED

5235OKDMDB2OPENSTANDBYDSC_OPEN001REALTIMEVALID66563165631NONE00

 

EP(DMDB2) APPLY INFO FROM (DMDB1):

SEQNO = 0, IS_OK = 1, SSLSN = 65631, SLSN = 65631, APPLY_LSN = 65631, N_TSK = 0, TSK_MEM_USE = 0

6.2主备同步测试

主库

dmdba@tidb-05:~$ disqlsysdba/SYSDBA:5235

 

服务器[LOCALHOST:5235]:处于主库打开状态

登录使用时间: 8.164(毫秒)

disql V8.1.0.147-Build(2019.03.27-104581)ENT

SQL> create table dave as select * from sysobjects;

操作已执行

已用时间: 13.646(毫秒).执行号:6.

备库查询

dmdba@tidb-04:~$ disqlsysdba/SYSDBA:5235

 

服务器[LOCALHOST:5235]:处于备库打开状态

登录使用时间: 8.106(毫秒)

disql V8.1.0.147-Build(2019.03.27-104581)ENT

SQL> select count(1) from dave;

 

行号COUNT(1)

---------- --------------------

11303

 

已用时间: 1.316(毫秒).执行号:3.

6.3主备切换测试

操作直接在监控器里执行

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第12张图片

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第13张图片

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第14张图片

6.4 Takeover接管

#此时可以接管了:

root@tidb-04:/home/dmdba# reboot

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第15张图片

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第16张图片

choose switchover grp1

 

Can choose one of the following instances to do switchover:

1: DMDB2

 

switchover grp1.dmdb2

[monitor]2020-07-13 11:38:09: Not login dmmonitor or server public key changed, please try to login again!

 

login

username:sysdba

password:

[monitor]2020-07-13 11:39:03: Login dmmonitor success!

6.5恢复原主库的网络后,监视器自动将原主库切换成了备库

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第17张图片

1、   以脚本方式后台停止数据库(顺序:备主主备)

配置脚本:

cd/app/dm8/bin/service_template

 

vi DmService

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第18张图片

Vi DmWatcherService

中标麒麟v10sp1系统部署达梦数据库(dm8)主备技术文档_第19张图片

1.     停止备库DmWatcher

dmdba@tidb-04:/app/dm8/bin/service_template$ ./DmWatcherService stop

Stopping DmWatcherService:[ OK ]

2.     停止主库DmWatcher

dmdba@tidb-05:/app/dm8/bin/service_template$ ./DmWatcherService stop

Stopping DmWatcherService:[ OK ]

3.停止主库DmService

dmdba@tidb-05:/app/dm8/bin/service_template$ ./DmService stop

DmService service is not running.

4.停止备库DmService

dmdba@tidb-04:/app/dm8/bin/service_template$ ./DmService stop

Stopping DmService:[ OK]

以脚本方式后台启动数据库(顺序:主备主备)

 

1.     启动主库DmService

dmdba@tidb-05:/app/dm8/bin/service_template$ ./DmService start

Starting DmService:[ OK ]

2.     启动备库DmService

dmdba@tidb-04:/app/dm8/bin/service_template$ ./DmService start

Starting DmService:[ OK ]

3.     启动主库DmWatcher

dmdba@tidb-05:/app/dm8/bin/service_template$./DmWatcherService start

Starting DmWatcherService:[ OK ]

4.启动备库DmWatcher

dmdba@tidb-04:/app/dm8/bin/service_template$ ./DmWatcherService start

Starting DmWatcherService:[ OK ]

 

作者:苏献君

你可能感兴趣的:(系统运维)