2节点主备群部署

 

2节点主备集群部署

 

一、部署前规划    2

1、路径规划    2

2、实例规划    2

二、搭建集群    2

1、创建实例并初始化    2

1.1、在两台机器的dmdba用户下初始化实例    2

1.2、开关库一次    2

2、在主库上脱机备份    3

3、在备库上还原、恢复、更新    3

4、配置主库DM01(192.168.138.128)    3

4.1、dm.ini文件    4

4.2、配置dmmal.ini文件    4

4.3、配置dmarch.ini文件    4

4.4、配置dmwatcher.ini文件    4

4.5、发送配置给备库    4

5、配置备库参数    4

5.1、dm.ini    4

5.2、dmarch.ini    4

6、配置OGUID    4

7、注册守护进程服务    5

8、配置监听器    5

9、启动主备机的守护进程    6

10、启动监听器    6

11、注册服务    7

12、关闭和开启    7

三、测试    7

1、创建一个用户    7

2、插入测试数据    8

3、备份    8

4、删除数据    8

4、还原集群    9

5、查看是否还原    9

 

一、部署前规划

1、路径规划

数据库安装路径

/home/dmdba/dmdbms/

数据库实例安装路径

/home/dmdba/dmdbms/data/DAMENG

归档路径

/home/dmdba/dmdbms/data/DAMENG/arch

2、实例规划

机器名

实例名

IP地址

端口号

页大小

大小写敏感

Dameng01(主)

DM01

192.168.138.128

5236

16

Dameng02(备)

DM02

192.168.138.130

5236

16

二、搭建集群

搭建之前请关闭防火墙!

systemctl stop firewalld

systemctl disable firewalld

1、创建实例并初始化

1.1、在两台机器的dmdba用户下初始化实例

cd /home/dmdba/dmdbms/bin

[dmdba@Dameng bin]$ ./dminit PAGE_SIZE=16 CASE_SENSITIVE=0 PATH=/home/dmdba/dmdbms/data

1.2、开关库一次

创建完成后务必初始化一次,不然在备份时会报错

./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini

2、在主库上脱机备份

注意:冷备一定要脱机。

  • 使用dmrman从主库备份

./dmrman ctlstmt="backup database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' full to backup20201216 backupset '/home/dmdba/dmdbms/data/bak/backup20201216'"

 

  • 将备份发送到备库

scp -r /home/dmdba/dmdbms/data/bak/backup20201216/ dmdba@192.168.138.130:/home/dmdba/dmdbms/data/bak

3、在备库上还原、恢复、更新

注意脱机操作!

还原:

./dmrman ctlstmt="restore database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmdbms/data/bak/'"

恢复:

./dmrman ctlstmt="recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmdbms/data/bak/'"

更新:

./dmrman ctlstmt="recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' update db_magic"

 

4、配置主库DM01(192.168.138.128)

4.1、dm.ini文件

这里没有涉及到具体的业务,所以不进行调优具体参数如下

INSTANCE_NAME=DM01

COMPATIBLE_MODE=2

ARCH_INI=1

MAL_INI=1

ALTER_MODE_STATUS= 0

ENABLE_OFFLINE_TS = 2

 

4.2、配置dmmal.ini文件

在dm.ini所在的目录下自己创建,两边都是一样的。

 

MAL_CHECK_INTERVAL = 5

MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]

MAL_INST_NAME = DM01

MAL_HOST = 192.168.138.128

MAL_PORT = 61141

MAL_INST_HOST = 192.168.138.128

MAL_INST_PORT = 5236

MAL_DW_PORT = 52141

MAL_INST_DW_PORT = 33141

[MAL_INST2]

MAL_INST_NAME = DM02

MAL_HOST = 192.168.138.130

MAL_PORT = 61142

MAL_INST_HOST = 192.168.138.130

MAL_INST_PORT = 5236

MAL_DW_PORT = 52142

MAL_INST_DW_PORT = 33142

 

4.3、配置dmarch.ini文件

在dm.ini所在的目录下自己创建。

 

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME

ARCH_DEST = DM02 #写出了本机之外的实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /home/dmdba/dmdbms/data/DAMENG/arch # 本地的存档地址

ARCH_FILE_SIZE = 512

ARCH_SPACE_LIMIT = 0

4.4、配置dmwatcher.ini文件

两边是一样的。

[GRP1]

DW_TYPE = GLOBAL

DW_MODE = AUTO

DW_ERROR_TIME = 10

INST_RECOVER_TIME = 60

INST_ERROR_TIME = 10

INST_OGUID = 453331

INST_INI = /home/dmdba/dmdbms/data/DAMENG/dm.ini

INST_AUTO_RESTART = 1

INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver

RLOG_SEND_THRESHOLD = 0

RLOG_APPLY_THRESHOLD = 0

 

4.5、发送配置给备库

将dmmal.ini/dmarch.ini/dmwatcher.ini发送给备库

scp ./dmarch.ini dmmal.ini dmwatcher.ini dmdba@192.168.138.130:/home/dmdba/dmdbms/data/DAMENG/

 

 

5、配置备库参数

5.1、dm.ini

INSTANCE_NAME=DM02

COMPATIBLE_MODE=2

ARCH_INI=1

MAL_INI=1

ALTER_MODE_STATUS= 0

ENABLE_OFFLINE_TS = 2

 

5.2、dmarch.ini

把将ARCH_DEST参数修改为除自己外的库,这里只有两个库,所以改成主库的名字就行了

6、配置OGUID

主库:

  • 以mount模式开启主库

./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount

  • 登录disql,修改OGUID

sp_set_oguid(453331);

  • 修改数据库模式

alter database primary;

备库:

  • 以mount模式开启备库

./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount

#登录disql,修改OGUID

sp_set_oguid(453331);

  • 修改数据库模式

alter database standby;

7、注册守护进程服务

在root账户下对主备进行dmwatcher服务注册,注册服务要在root目录下。

./dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini -p DM

 

8、配置监听器

路径配在备库的/home/dmdba/dmdbms/data/dmmonitor.ini

MON_DW_Confirm = 1 #0是非确认监视器(不可以自动切换主备)1相反

MON_LOG_PATH = /home/dmdba/dmdbms/log

MON_LOG_INTERVAL = 60

MON_LOG_FILE_SIZE = 32

MON_LOG_SPACE_LIMIT = 0

[GRP1]

MON_INST_OGUID = 453331

MON_DW_IP = 192.168.138.128:52141

MON_DW_IP = 192.168.138.130:52142

 

注意MON_DW_IP最后配的不是实例的端口,而是前面dmmal.ini配置的MAL_DW_PORT端口!!此前就是配错了而导致反复报错。

 

9、启动主备机的守护进程

主机:

    ./dmwatcher /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini

备机:

    ./dmwatcher /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini

 

或者主备库以服务方式启动 :

[dmdba@Dameng bin]$ ./DmWatcherServiceDM start

[dmdba@Dameng bin]$ ./DmWatcherServiceDM start

 

10、启动监听器

[dmbda@Dameng bin]$ ./dmmonitor /home/dmdba/dmdbms/data/dmmonitor.ini

输入show

 

 

 

 

 

 

 

 

11、注册服务

为了使实例可以开机自起所以可以注册监视器和实例的服务

主库:

监视器:

./dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini -p DM

实例DM01

./dm_service_installer.sh -t dmserver -m mount -dm_ini /home/dmdba/dmdbms/data/DAMENG/dm.ini -p DMSERVER01

备库:

./dm_service_installer.sh -t dmserver -m mount -dm_ini /home/dmdba/dmdbms/data/DAMENG/dm.ini -p DMSERVER02

 

12、关闭和开启

如果你要关机之前一定要先把集群按照争取顺序关掉!

关闭顺序:监视器à备库守护进程à主库守护进程à主库实例à备库实例

 

按顺序关闭以后重启两台机器,会自动开启集群:

 

 

开启顺序:

主库实例 à主库守护进程 à备库实例 à备库守护进程 à监视器

三、测试

建用户,插入测试数据,物理备份,删除数据, 通过备份还原集群。

1、创建一个用户

create USER dmuser IDENTIFIED BY user12345678;

grant DBA TO dmuser;//将dba角色授予dmuser用户

 

2、插入测试数据

使用dmuser登录,并创建一张测试表并插入数据

create table test(uid int ,uname VARCHAR(20));

insert into test VALUES(1,'hyf');

commit

在主备库上确认是否都同步。

 

3、备份

--先关闭集群

--在主库上进行物理备份

./dmrman ctlstmt="backup database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' full to fullbackup20201216 backupset '/home/dmdba/dmdbms/data/bak/fullbackup20201216'"

将主库上的备份发送到备库

[dmdba@Dameng bin]$ scp -r /home/dmdba/dmdbms/data/bak/fullbackup20201216/ dmdba@192.168.138.130:/home/dmdba/dmdbms/data/bak/

 

4、删除数据

开启集群,在主库登录dmuser用户,将先前建的测试表格删除

在备库登录dmuser用户,查询test表

可以看到test表已经被删除。

4、还原集群

按顺序关闭集群。

主库的bin目录下执行以下语句还原

还原:

./dmrman ctlstmt="restore database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmdbms/data/bak/fullbackup20201216'"

恢复:

./dmrman ctlstmt="recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmdbms/data/bak/fullbackup20201216'"

更新:

./dmrman ctlstmt="recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' update db_magic"

 

备库的bin目录下执行以下语句还原

还原:

./dmrman ctlstmt="restore database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmdbms/data/bak/fullbackup20201216'"

恢复:

./dmrman ctlstmt="recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmdbms/data/bak/fullbackup20201216'"

更新:

./dmrman ctlstmt="recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' update db_magic"

 

5、查看是否还原

再次启动集群

可以看到重启后的主备状态正常。

 

在主备库上登录dmuser用户查看先前删除的test表格

主库:

 

备库:

可以看到主备库数据一致,都能查看到之前删除的test表格。

原文地址:https://www.cnblogs.com/hong-yf/p/14762889.html