部署规划
配置项 | dm01 | dm02 |
业务IP | 192.168.44.13/24 | 192.168.44.15/24 |
心跳IP | 192.168.1.13/24 | 192.168.1.15/24 |
实例名 | GRP1_ASYNC_01 | GRP1_ASYNC_02 |
实例端口 | 5236 | 5236 |
MAL端口 | 5336 | 5336 |
MAL守护进程端口 | 5436 | 5436 |
守护进程端口 | 5536 | 5536 |
OGUID | 453331 | 453331 |
守护组 | GRP1 | GRP1 |
安装目录 | /opt/dmdba | /opt/dmdba |
实例目录 | /opt/dmdba/data | /opt/dmdba/data |
归档上限 | 51200 | 51200 |
确认监视器IP |
主库
实例初始化
# 实例初始化 [dmdba@dm01 ~]$ mkdir /opt/dmdba/data [dmdba@dm01 ~]$ dminit PATH=/opt/dmdbms/data/ INSTANCE_NAME=GRP1_RWW_01 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 # 启动服务 [dmdba@dm01 ~]$ dmserver /opt/dmdba/data/DAMENG/dm.ini |
主库备份数据
SQL> BACKUP DATABASE BACKUPSET '/opt/dmdba/data/DAMENG/bak/BACKUP_FILE'; 操作已执行 已用时间: 00:00:07.506. 执行号:59100. |
dm.ini参数修改
# dm.ini参数 MAL_INI = 1 ARCH_INI = 1 ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 TIMER_INI = 1 |
dmarch.ini
归档配置,使用异步归档,配置定时器名称
[dmdba@primary02 DAMENG]$ more dmarch.ini ARCH_WAIT_APPLY = 0 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /home/dmdba/dmdbms/DAMENG/arch ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 51200 ARCH_FLUSH_BUF_SIZE = 0 ARCH_HANG_FLAG = 1 [ARCHIVE_ASYNC] ARCH_TYPE = ASYNC ARCH_DEST = GRP1_ASYNC_02 ARCH_TIMER_NAME = RT_TIMER ARCH_SEND_DELAY = 1 |
dmmal.ini
# dmmal.ini MAL_CHECK_INTERVAL = 10 MAL_CONN_FAIL_INTERVAL = 10 MAL_TEMP_PATH = /opt/dmdba/dmdbms/data/malpath/ MAL_BUF_SIZE = 512 MAL_SYS_BUF_SIZE = 2048 MAL_COMPRESS_LEVEL = 0 [MAL_INST1] MAL_INST_NAME = GRP1_ASYNC_01 MAL_HOST = 192.168.1.13 MAL_PORT = 5336 MAL_INST_HOST = 191.168.44.13 MAL_INST_PORT = 5236 MAL_DW_PORT = 5436 MAL_INST_DW_PORT = 5536 [MAL_INST2] MAL_INST_NAME = GRP1_ASYNC_02 MAL_HOST = 192.168.1.15 MAL_PORT = 5336 MAL_INST_HOST = 192.168.44.15 MAL_INST_PORT = 5236 MAL_DW_PORT = 5436 MAL_INST_DW_PORT = 5536 |
dmwatcher.ini
配置守护进程,守护类型为本地守护
## dmwatcher.ini [GRP1] DW_TYPE = LOCAL DW_MODE = MANUAL DW_ERROR_TIME = 10 INST_RECOVER_TIME = 60 INST_ERROR_TIME = 10 INST_OGUID = 453331 INST_INI = /home/dmdba/dmdbms/DAMENG/dm.ini INST_AUTO_RESTART = 1 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver |
dmtimer.ini
配置定时器,触发时间为每秒更新
## dmtimer.ini 每秒更新 [RT_TIMER] TYPE= 10 FREQ_MONTH_WEEK_INTERVAL= FREQ_SUB_INTERVAL= FREQ_MINUTE_INTERVAL= REPEAT_INTERVAL= FREQ=SECONDLY;INTERVAL=1 START_TIME= 00:00:00 END_TIME= DURING_START_DATE= 2023-04-12 10:00:00 DURING_END_DATE= 9999-12-31 10:00:00 NO_END_DATE_FLAG= 1 DESCRIBE= RT TIMER IS_VALID= 1 |
拷贝备份文件到备库
[root@dm01 ~]# scp -r /opt/dmdba/data/DAMENG/bak/BACKUP_FILE dmdba@192.168.44.102:/opt/dmdba/data/DAMENG/bak |
异步备库
异步备库初始化
[dmdba@dm02 ~]$ dminit PATH=/opt/dmdba/data/ INSTANCE_NAME=GRP1_RWW_02 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 |
数据还原与恢复
[dmdba@dm02 ~]$ dmrman CTLSTMT="RESTORE DATABASE '/opt/dmdba/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdba/data/DAMENG/bak/BACKUP_FILE'" [dmdba@dm02 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdba/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdba/data/DAMENG/bak/BACKUP_FILE'" [dmdba@dm02 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdba/data/DAMENG/dm.ini' UPDATE DB_MAGIC" |
dm.ini参数修改
MAL_INI = 1 ARCH_INI = 1 ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 |
dmarch.ini
[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /home/dmdba/dmdbms/DAMENG/arch ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 51200 ARCH_FLUSH_BUF_SIZE = 0 ARCH_HANG_FLAG = 1 |
dmmal.ini
MAL_CHECK_INTERVAL = 10 MAL_CONN_FAIL_INTERVAL = 10 MAL_TEMP_PATH = /opt/dmdba/dmdbms/data/malpath/ MAL_BUF_SIZE = 512 MAL_SYS_BUF_SIZE = 2048 MAL_COMPRESS_LEVEL = 0 [MAL_INST1] MAL_INST_NAME = GRP1_ASYNC_01 MAL_HOST = 192.168.1.13 MAL_PORT = 5336 MAL_INST_HOST = 191.168.44.13 MAL_INST_PORT = 5236 MAL_DW_PORT = 5436 MAL_INST_DW_PORT = 5536 [MAL_INST2] MAL_INST_NAME = GRP1_ASYNC_02 MAL_HOST = 192.168.1.15 MAL_PORT = 5336 MAL_INST_HOST = 192.168.44.15 MAL_INST_PORT = 5236 MAL_DW_PORT = 5436 MAL_INST_DW_PORT = 5536 |
dmwatcher.ini
[GRP1] DW_TYPE = LOCAL DW_MODE = MANUAL DW_ERROR_TIME = 10 INST_RECOVER_TIME = 60 INST_ERROR_TIME = 10 INST_OGUID = 453331 INST_INI = /home/dmdba/dmdbms/DAMENG/dm.ini INST_AUTO_RESTART = 1 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver |
启动集群
# 主库以mount启动 [dmdba@primary02 DAMENG]$ dmserver /home/dmdba/dmdbms/DAMENG/dm.ini mount [dmdba@primary02 ~]$ disql SYSDBA/SYSDBA 服务器[LOCALHOST:5236]:处于普通配置状态 登录使用时间 : 4.703(ms) disql V8 ## 设置OGUID与数据库模式 SQL> SP_SET_OGUID(453331); DMSQL 过程已成功完成 已用时间: 11.043(毫秒). 执行号:0. SQL> alter database primary; 操作已执行 已用时间: 4.039(毫秒). 执行号:0. SQL> SQL> exit # 备库以mount启动 [dmdba@async01 DAMENG]$ dmserver /home/dmdba/dmdbms/DAMENG/dm.ini mount [dmdba@async01 ~]$ disql SYSDBA/SYSDBA 服务器[LOCALHOST:5236]:处于普通配置状态 登录使用时间 : 104.765(ms) disql V8 SQL> SP_SET_OGUID(453331); DMSQL 过程已成功完成 已用时间: 11.015(毫秒). 执行号:0. SQL> ALTER DATABASE STANDBY; 操作已执行 已用时间: 7.307(毫秒). 执行号:0. SQL> EXIT ## 守护进程启动 [dmdba@primary02 ~]$ dmwatcher /home/dmdba/dmdbms/DAMENG/dmwatcher.ini show 2023-04-12 11:26:59 --------------------------------------------------------------------------- GROUP_NAME TYPE MODE OGUID MPP_FLAG AUTO_RESTART DW_STATUS DW_SUB_STATUS DW_CTL_STATUS GRP1 LOCAL MANUAL 453331 FALSE TRUE OPEN SUB_STATE_START VALID INST_OK NAME SVR_MODE SYS_STATUS RTYPE FSEQ FLSN CSEQ CLSN DW_STAT_FLAG OK GRP1_ASYNC_01 PRIMARY OPEN NONE 4719 38943 4719 38944 0 --------------------------------------------------------------------------- [dmdba@async01 ~]$ dmwatcher /home/dmdba/dmdbms/DAMENG/dmwatcher.ini show 2023-04-12 11:27:05 --------------------------------------------------------------------------- GROUP_NAME TYPE MODE OGUID MPP_FLAG AUTO_RESTART DW_STATUS DW_SUB_STATUS DW_CTL_STATUS GRP1 LOCAL MANUAL 453331 FALSE TRUE OPEN SUB_STATE_START VALID INST_OK NAME SVR_MODE SYS_STATUS RTYPE FSEQ FLSN CSEQ CLSN DW_STAT_FLAG OK GRP1_ASYNC_02 STANDBY OPEN NONE 4713 38770 4713 38770 0 DATABASE(GRP1_ASYNC_02) APPLY INFO: REDOS_PARALLEL_NUM (1) DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4713, 4713, 4713], (RLSN, SLSN, KLSN)[38770, 38770, 38770], N_TSK[0], TSK_MEM_USE[0] REDO_LSN_ARR: (38770) --------------------------------------------------------------------------- |
测试表同步情况
[dmdba@primary02 DAMENG]$ disql SYSDBA/SYSDBA 服务器[LOCALHOST:5236]:处于主库打开状态 登录使用时间 : 4.177(ms) disql V8 SQL> CREATE table t1(id int); 操作已执行 已用时间: 8.574(毫秒). 执行号:600. SQL> insert into t1 values(1); 影响行数 1 已用时间: 0.910(毫秒). 执行号:601. SQL> insert into t1 values(2); 影响行数 1 已用时间: 0.727(毫秒). 执行号:602. SQL> select id from t1; 行号 ID ---------- ----------- 1 1 2 2 已用时间: 1.382(毫秒). 执行号:603. SQL> commit; 操作已执行 已用时间: 0.612(毫秒). 执行号:604. SQL> SQL> exit |
测试1:在主库上建表,插入相应数据后,等待一段时间,查看备库数据同步情况。
主库与异步备库的数据已同步。
定时器每秒触发一次,异步备库数据的同步情况
主库上在表上插入数据,commit后,查看备库同步情况:
# 主库上timer每秒触发 # 主库建表t2并插入数据 [dmdba@primary02 DAMENG]$ disql SYSDBA/SYSDBA 服务器[LOCALHOST:5236]:处于主库打开状态 登录使用时间 : 3.742(ms) disql V8 SQL> create table t2(name varchar); 操作已执行 已用时间: 11.287(毫秒). 执行号:700. SQL> insert into t2 values('a'); 影响行数 1 已用时间: 0.671(毫秒). 执行号:701. SQL> select name from t2; 行号 NAME ---------- ---- 1 a 已用时间: 0.851(毫秒). 执行号:702. SQL> commit; 操作已执行 已用时间: 0.910(毫秒). 执行号:703. SQL> |
在插入数据后,等待4秒,查看主备库数据同步情况,结论为:异步备库未与主库同步。
测试2:主库上建表,插入数据,然后正常关闭数据库,观察异步备库与主库的数据同步情况。
## 主库上创建表t3,创建后正常关闭主库 [dmdba@primary02 DAMENG]$ disql SYSDBA/SYSDBA 服务器[LOCALHOST:5236]:处于主库打开状态 登录使用时间 : 4.272(ms) disql V8 SQL> create table t3(id int); 操作已执行 已用时间: 8.263(毫秒). 执行号:800. SQL> insert into t3 values(100); 影响行数 1 已用时间: 0.695(毫秒). 执行号:801. SQL> select id from t3; 行号 ID ---------- ----------- 1 100 已用时间: 0.791(毫秒). 执行号:802. SQL> commit; 操作已执行 已用时间: 0.657(毫秒). 执行号:803. SQL> |
正常关闭数据库,观察异步备库与主库的数据同步情况,结论为:异步备库未同步到数据。
达梦技术社区:https://eco.dameng.com