
“同步备库”一般用于对主库性能要求较高,想要避免因备库故障或异步恢复引发的Suspend 状态切换,但又希望备库的数据延迟不要太大的应用场景。
在达梦数据库DM8中,“同步备库”可以通过“同步归档模式”实现。与实时归档相比,同步归档时机为主库本地归档刷盘之后,主库发送归档到同步备库失败时,不会切换为 Suspend状态,而是直接将备库的归档状态设置为无效。
服务ip | 心跳ip | 数据库名 | 实例名 |
192.168.231.133 | 192.168.231.133 | dmdb | DW1 |
192.168.231.135 | 192.168.231.135 | dmdb | DW2 |
端口规划:
实例名 | 实例端口 | MAL 系统监听 TCP 连接的端口 | 实例本地的守护进程监听 TCP 连接的端口 | 实例监听守护进程 TCP 连接的端口 |
DW1 | 5236 | 7336 | 7436 | 7536 |
DW2 | 5236 | 7336 | 7436 | 7536 |
目录规划:(在对应服务器上创建目录owner为dmdba组为dinstall)
数据库软件安装目录 | /home/dmdba/dmdbms |
实例安装目录 | /dmdata/ |
归档日志存放目录 | /dmdata/arch |
备份文件存放目录 | /dmdata/dmbak/ |
使用root用户挂载数据库软件的iso文件:
mkdir -p dmisomount -o loop dm8_xxx.iso dmiso
使用dmdba用户安装软件:
执行以下命令,切换到 dmiso 目录下执行 DMInstall.bin 文件开始安装,选择【-i】参数以命令行方式安装。
su - dmdbacd /dmiso./DMInstall.bin -i
选择安装程序的语言 c/C 为中文,e/E 为英文。
提示是否安装 key 文件,输入 N 跳过。
选择时区,21 即东 8 区。
选择安装类型,默认典型安装(包含所有内容)。
选择软件安装目录,默认/home/dmdba/dmdbms
确认安装
安装完成提示使用root执行脚本:
/home/dmdba/dmdbms/script/root/root_installer.sh
解决方法:修改dm_svc.conf配置文件,将多余的+去掉。注意:这个system32下的配置文件不可直接修改,需要在外面修改好后复制进去,替换掉原来的文件。
3.1初始化实例
主库:
dminit path=/dmdata page_size=32 extent_size=32 log_size=2048 db_name=dmdb instance_name=dw1
备库:
dminit path=/dmdata page_size=32 extent_size=32 log_size=2048 db_name=dmdb instance_name=dw2
3.2脱机备份数据库
主库启动数据库出现system is ready后输入exit停止数据库:
dmserver dmdata/dmdb/dm.ini
执行全备:
dmrmanbackup database '/dmdata/dmdb/dm.ini' backupset '/home/dmdba/bakfull’;

3.3备份还原备库
将主库备份文件scp到备库,进行备份还原备库:
dmrman use_ap=2
执行 restore:
restore database '/dmdata/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';
完成后执行 recover:
recover database '/dmdata/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';
最后执行 recover update db_magic:
recover database '/dmdata/dmdb/dm.ini' update db_magic;

MAL_INI = 1ARCH_INI = 1ALTER_MODE_STATUS = 0ENABLE_OFFLINE_TS = 2
[ARCHIVE_LOCAL1]ARCH_TYPE = LOCALARCH_DEST = dmdata/archARCH_FILE_SIZE = 2048ARCH_SPACE_LIMIT = 102400[ARCHIVE_SYNC]ARCH_TYPE = SYNCARCH_DEST = dw2ARCH_RECOVER_TIME = 1
ARCHIVE_LOCAL1]ARCH_TYPE = LOCALARCH_DEST = dmdata/archARCH_FILE_SIZE = 2048ARCH_SPACE_LIMIT = 102400
vi /dmdata/dmdb/dmmal.iniMAL_CHECK_INTERVAL = 5MAL_CONN_FAIL_INTERVAL = 15[MAL_INST1]MAL_INST_NAME = dw1MAL_HOST = 192.168.231.133MAL_PORT = 7336MAL_INST_HOST = 192.168.231.133MAL_INST_PORT = 5236MAL_DW_PORT = 7436MAL_INST_DW_PORT = 7536[MAL_INST2]MAL_INST_NAME = dw2MAL_HOST = 192.168.231.135MAL_PORT = 7336MAL_INST_HOST = 192.168.231.135MAL_INST_PORT = 5236MAL_DW_PORT = 7436MAL_INST_DW_PORT = 7536
[GRP_SN]DW_TYPE = LOCALDW_MODE = MANUALDW_ERROR_TIME = 30INST_RECOVER_TIME = 60INST_ERROR_TIME = 20INST_OGUID = 453331INST_INI = dmdata/dmdb/dm.iniINST_AUTO_RESTART = 1INST_STARTUP_CMD = home/dmdba/dmdbms/bin/dmserver
dmserver dmdata/dmdb/dm.ini mount
disql SYSDBA/SYSDBA@localhost:5236sp_set_oguid(453331);alter database primary;
disql SYSDBA/SYSDBA@localhost:5236sp_set_oguid(453331);alter database standby;
dmwatcher dmdata/dmdb/dmwatcher.ini
MON_DW_CONFIRM = 0MON_LOG_PATH = home/dmdba/dmdbms/logMON_LOG_INTERVAL = 60MON_LOG_FILE_SIZE = 200MON_LOG_SPACE_LIMIT = 1024[GRP_SN]MON_INST_OGUID = 453331MON_DW_IP = 192.168.253.133:7436MON_DW_IP = 192.168.253.135:7436
dmmonitor dmdata/dmdb/dmmonitor.ini

CREATE TABLE T1 AS SELECT * FROM DBA_USERS;


./dm_service_installer.sh -t dmwatcher -p dw -watcher_ini/dmdata/dmdb/dmwatcher.ini
./dm_service_installer.sh -t dmserver -p dw -dm_ini/dmdata/dmdb/dm.ini
su - dmdbaDmServicedw start
su - dmdbaDmWatcherServicedw start
同步归档(Sync)在主库归档日志刷盘后,通过 MAL 系统将 Redo 日志发送到备库。同步备库的 Redo 日志重演过程与实时归档等其他类型的归档完全一致。同步归档的执行流程为:主库在归档日志刷盘后,将 Redo 日志发送到备库,备库收到Redo 日志(RLOG_PKG)后,将其加入日志重演任务系统,并马上响应主库,不需要等待Redo 日志重演结束后再响应主库。
4.1模拟测试数据
--模拟主库写入100w数据查看备库延迟情况create table t1(a int,b varchar2(100));declarebeginfor i in 1..1000000 loopinsert into t1 values(i,to_char(sysdate));end loop;commit;end;/
4.2检查备库同步情况
备库数据情况备库数据成功写入,用户无感知:

查看监视器状态:










DmWatcherServicedw stop
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);ALTER DATABASE MOUNT;ALTER DATABASE PRIMARY;ALTER DATABASE OPEN FORCE;

比较类型 | 实时主备(最大性能模式) | 同步主备 |
归档配置 | 实时备库 | 同步备库 |
主机日志 发送时机 | 写入联机日志前,发送到备库 | 归档日志刷盘之后 |
失败处理 | Suspend 数据库,保持归档状态不变,等待守护进程干预 | 直接设置归档状态为无效,不会Suspend 数据库 |
故障切换 | 监视器自动或手动切换 | 手动将备库切换为主库 |
故障后恢复集群 | 自动加入守护集群 | 需重新搭建同步备库 |
以上为本期分享,希望能带给大家帮助。想要了解更多往期干货,可访问页面最下方#达梦技术干货攻略#合集。
相关分享:
【干货攻略】达梦数据库客户端查询SYSDATE慢8小时解决办法
【开班通知】DM8-DCP线上培训班招生中(2024年02月26日开班)
【开班通知】 DM8-DCA线上培训班招生中(2024年02月28日开班)





