写点什么

达梦数据库主备安装部署

作者:Geek_c327a9
  • 2022-10-29
    广东
  • 本文字数:5791 字

    阅读完需:约 19 分钟

1. 环境准备

1.1.    端口规划


1.2.    数据库初始化参数

页大小:16K

簇大小:16 页

字符集:UTF-8

字符串比较大小写敏感:是

长度以字符为单位:否

数据库名:  test01

实例名:  test01,  test02

端口:15236,25236,35236

日志文件大小:共 2 个(每个 256MB);

是否启用归档:启用

1.3.    安装部署路径规划


1.4.    安装数据库

上传安装程序

root:

mount /dev/cdrom /mnt

umount /mnt

mount -o loop /dm/dmdbms/dm8_20220720_x86_rh7_64_ent_8.1.2.114_pack11 /mnt

 

DM 数据库安装

192.168.121.232/233

cd /mnt

./DMInstall.bin -i

 

root:

/dm/dmdbms/dm8/script/root/root_installer.sh

2. 实时主备集群搭建

2.1.   创建主库实例

[dmdba@test01 ~]$ cd /dm/dmdbms/dm8/bin

 

./dminit path=/dm/dmdata db_name=dmtest instance_name=dmtest01 port_num=15236 LOG_SIZE=256 SYSDBA_PWD=dameng123 EXTENT_SIZE=16 PAGE_SIZE=16 charset=1

 

./dmserver /dm/dmdata/dmtest/dm.ini &

 

2.2.   开启归档

ALTER DATABASE MOUNT;

 

ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm/dmarch/dmtest,TYPE = local,FILE_SIZE=256,SPACE_LIMIT = 0';

 

ALTER DATABASE ARCHIVELOG;

 

ALTER DATABASE OPEN;

 

select arch_mode from v$database;

 

select * from v$dm_arch_ini;

 

2.3.   数据准备

备份主库,然后复制备份到备库

关库

DmServicedmtest01 stop

备份

cd /dm/dmdbms/dm8/bin

./dmrman

backup database '/dm/dmdata/dmtest/dm.ini' full to dmtest01_full01 backupset '/dm/dmback/dmtest01_full01'

 

scp -r /dm/dmback/dmtest01_full01 192.168.121.233:/dm/dmback/dmtest01_full01

 

2.4.   备库创建实例

su - dmdba

cd /dm/dmdbms/dm8/bin

./dminit path=/dm/dmdata db_name=dmtest instance_name=dmtest02 port_num=25236 LOG_SIZE=256 SYSDBA_PWD=dameng123 EXTENT_SIZE=16 PAGE_SIZE=16 charset=1

 

2.5.   在备库恢复数据库

./dmrman

 

restore database '/dm/dmdata/dmtest/dm.ini' from backupset '/dm/dmback/dmtest01_full01'

 

recover database '/dm/dmdata/dmtest/dm.ini' from backupset '/dm/dmback/dmtest01_full01'

 

recover database '/dm/dmdata/dmtest/dm.ini' update db_magic

 

3. 修改配置参数-主库

3.1.    修改 dm.ini

su - dmdba

cd /dm/dmdata/dmtest

 

vi dm.ini

INSTANCE_NAME =dmtest01 #主库实例

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

DW_PORT = 15237 #守护环境下,监听守护进程连接端口,为上面规划表中的 MAL_INST_DW_PORT 值

DW_ERROR_TIME = 60 #接收守护进程消息超时时间

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

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

MAL_INI = 1 #打开 MAL 系统

ARCH_INI = 1 #打开归档配置

RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

DW_ERROR_TIME = 60 #接收守护进程消息超时时间

HA_INST_CHECK_FLAG = 1 #检测是否多个实例进程同时启动

 

3.2.    修改 dmmal.ini

vi dmmal.ini

 

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

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

 

[MAL_INST1]

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

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

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

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

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

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

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

 

3.3.    修改 dmarch.ini

vi dmarch.ini

 

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME #实时归档类型

ARCH_DEST = test02 #实时归档目标实例名

 

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /dm/dmarch/dmtest #本地归档文件存放路径

ARCH_FILE_SIZE = 256 #单位 Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 0 # 单位 Mb , 0 表示无限制, 范围 1024~4294967294M

 

3.4.    修改 dmwatcher.ini

vi dmwatcher.ini

[GRP1]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = AUTO #自动切换模式,手工 MANUAL

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

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

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

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

INST_INI = /dm/dmdata/dmtest/dm.ini #dm.ini 配置文件路径

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

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

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

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

 

4. 修改配置参数-备库

4.1.    修改 dm.ini

su - dmdba

cd /dm/dmdata/dmtest

INSTANCE_NAME = dmtest02 #主库实例

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

DW_PORT = 25237 #守护环境下,监听守护进程连接端口,为上面规划表中的 MAL_INST_DW_PORT 值

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

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

MAL_INI = 1 #打开 MAL 系统

ARCH_INI = 1 #打开归档配置

DW_ERROR_TIME = 60 #接收守护进程消息超时时间

HA_INST_CHECK_FLAG = 1 #检测是否多个实例进程同时启动

RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

 

4.2.    修改 dmmal.ini

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

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

[MAL_INST1]

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

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

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

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

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

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

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

 

[MAL_INST2]

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

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

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

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

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

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

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

 

4.3.    修改 dmarch.ini

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME #实时归档类型

ARCH_DEST = dmtest01 #实时归档目标实例名

 

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /dm/dmarch/dmtest #本地归档文件存放路径

ARCH_FILE_SIZE = 256 #单位 Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 0 # 单位 Mb , 0 表示无限制, 范围 1024~4294967294M

 

4.4.    修改 dmwatcher.ini

vi dmwatcher.ini

 

[GRP1]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = AUTO #自动切换模式,MANUAL 手工切换模式。

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

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

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

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

INST_INI = /dm/dmdata/dmtest/dm.ini #dm.ini 配置文件路径

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

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

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

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

 

5. 主、备库注册服务

5.1.    主库注册服务,配置 OGUID,修改数据库模式为主库

192.168.121.232:

root:

cd /dm/dmdbms/dm8/script/root/

./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdata/dmtest/dm.ini -p dmtest

./dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dmdata/dmtest/dmwatcher.ini -p dmtest

 

su - dmdba

cd /dm/dmdbms/dm8/bin

./dmserver /dm/dmdata/dmtest/dm.ini mount

 

disql SYSDBA/dameng123@192.168.121.232:15236

select status$ from v$database;

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);

exit;

 

启动守护进程

su - dmdba

cd /dm/dmdbms/dm8/bin

 

DmServicedmtest start

DmWatcherServicedmtest start

 

ps -ef|grep dmserver

ps -ef|grep dmwatcher

5.2.    备库 注册服务,配置 OGUID,修改数据库模式为备库

192.168.121.233

root:

cd /dm/dmdbms/dm8/script/root/

./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdata/dmtest/dm.ini -p dmtest

./dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dmdata/dmtest/dmwatcher.ini -p dmtest

 

su - dmdba

cd /dm/dmdbms/dm8/bin

./dmserver /dm/dmdata/dmtest/dm.ini mount

 

disql SYSDBA/dameng123@192.168.121.233:25236

select status$ from v$database;

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);

exit;

 

启动守护进程

su - dmdba

cd /dm/dmdbms/dm8/bin

 

DmServicedmtest start

DmWatcherServicedmtest start

 

ps -ef|grep dmserver

ps -ef|grep dmwatcher

 

6. 配置监控服务器 dmmonitor

6.1.    监控服务器只需要安装 DM 软件

上传安装程序

root:

mount /dev/cdrom /mnt

umount /mnt

mount -o loop /dm/dmdbms/dm8_20220720_x86_rh7_64_ent_8.1.2.114_pack11 /mnt

 

DM 数据库安装

192.168.121.235

cd /mnt

./DMInstall.bin -i

 

root:

/dm/dmdbms/dm8/script/root/root_installer.sh

 

6.2.    配置 dmmonitor.ini

su - dmdba

mkdir /dm/dmdbms/dm8/data

vi /dm/dmdbms/dm8/data/dmmonitor.ini

 

MON_DW_CONFIRM = 1 #确认监视器模式

MON_LOG_PATH = /dm/dmdbms/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 = 192.168.121.232:15238

MON_DW_IP = 192.168.121.233:25238

#配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置

#IP 对应 dmmal.ini 中的 MAL_HOST, PORT 对应 dmmal.ini 中的 MAL_DW_PORT

 

6.3.    注册服务

su - root

cd /dm/dmdbms/dm8/script/root

./dm_service_installer.sh -t dmmonitor -monitor_ini /dm/dmdbms/dm8/data/dmmonitor.ini -p dmtest

 

启动监控

su - dmdba

DmMonitorServicedmtest start

DmMonitorServicedmtest stop

 

启动到前台命令

/dm/dmdbms/dm8/bin/dmmonitor /dm/dmdbms/dm8/data/dmmonitor.ini

 

show

 

ps -ef|grep dm

 

7. 主备集群切换测试与维护管理

7.1.    主备同步测试

业务测试:

 

登录到主库

disql SYSDBA/dameng123@192.168.121.232:15236

 

create tablespace test01 datafile '/dm/dmdata/dmtest/test01.dbf' size 100 autoextend off;

create tablespace test01_idx datafile '/dm/dmdata/dmtest/test01_idx01.dbf' size 100 autoextend off;

create user "test01" identified by "test123456" default tablespace test01 default index tablespace test01_idx;

grant dba to test01;

select PATH from v$datafile;

 

conn test01/test123456@192.168.121.232:15236;

create table test01 (id int,name varchar(50),create_date date);

insert into test01 values(1,'达梦','2022-10-15');

insert into test01 values(2,'达梦数据库','2022-10-16');

insert into test01 values(3,'DM','2022-10-17');

insert into test01 values(4,'DMDB','2022-10-18');

insert into test01 values(5,'DM8','2022-10-19');

commit;

 

select * from test01;

select count(*) from test01;

 

select TABLE_NAME,TABLESPACE_NAME from user_tables where table_name='TEST01';

 

登录到备库检查一下数据

 

disql SYSDBA/dameng123@192.168.121.233:25236

select PATH from v$datafile;

conn test01/test123456@192.168.121.233:25236;

select count(*) from test01.test01;

 

7.2.    主备切换

杀进程

ps -ef|grep dmmonitor

kill -9 xx,

 

或重启主库后,备库会自动接管,成为主库

 

/dm/dmdbms/dm8/bin/dmmonitor /dm/dmdbms/dm8/data/dmmonitor.ini

show

 

手动切换

choose switchover grp1

 

登录

login

用户名:sysdba

密码:

 

switchover grp1.DMTEST02

 

switchover grp1.DMTEST01

 

再次插入数据检查

 

disql SYSDBA/dameng123@192.168.121.233:25236

conn test01/test01123456@192.168.121.233:25236;

insert into test01 values(6,'DM','2022-10-20');

insert into test01 values(7,'DM','2022-10-21');

commit;

 

disql SYSDBA/dameng123@192.168.121.232:15236

select * from test01.test01;

 

dmmonitor /dm/dmdbms/dm8/data/dmmonitor.ini

 

8. 主备集群启停流程

8.1.    启动集群

先启动数据库实例服务

192.168.121.232

su - dmdba

DmServicetest01 start

 

192.168.121.233

su - dmdba

DmServicetest01 start

 

再启动数据库守护服务

192.168.121.232

su - dmdba

DmWatcherServicetest01 start

 

192.168.121.233

su - dmdba

DmWatcherServicetest01 start

 

再启动监视器查看集群状态

192.168.121.235

su - dmdba

dmmonitor /dm/dmdbms/dm8/data/dmmonitor.ini

如果正常,则放在后台操作

DmMonitorServicetest01 start

 

8.2.    停止集群

先确保监视器服务处于停止状态

su - dmdba

dmmonitor /dm/dmdbms/dm8/data/dmmonitor.ini

exit

或者:

DmMonitorServicetest01 stop

 

再停止数据库守护进程

192.168.121.232

su - dmdba

DmWatcherServicetest01 stop

 

192.168.121.233

su - dmdba

DmWatcherServicetest01 stop

 

再停止数据库的实例服务

192.168.121.232

su - dmdba

DmServicetest01 stop

 

192.168.121.233

su - dmdba

DmServicetest01 stop

 

用户头像

Geek_c327a9

关注

还未添加个人签名 2022-10-22 加入

还未添加个人简介

评论

发布
暂无评论
达梦数据库主备安装部署_Geek_c327a9_InfoQ写作社区