同步机制:主库在 Redo 日志(RLOG_PKG)写入联机日志文件前,将 Redo 日志发送到备库,备库通过异步ntask线程处理日志,进行校验与重演。一个主库可以配置 1~8 个实时备库。
实时归档有两种模式,高性能模式与强一致模式:
强一致模式:备机重做完成后通知主机,确保了主备之间事务的强一致性,但其性能受备机影响最大。
高性能模式:备机REDO校验后即返回主机消息,主机收到消息继续演进该事务。由于该模式下备机会比主机REDO更多,所以备机并不会直接进行REDO重演,而是引入KEEP_PKG机制缓存未应用的REDO,该机制一定程度上也增强了备机的重演性能。
特点:数据一致性最高,但主机性能受网络IO、备库处理能力影响最大。
适用场景:核心交易型场景,例如金融、交易等对数据一致性要求严格的业务。
同步机制: 同步归档的执行流程是,主库在归档日志刷盘后,将 Redo 日志发送到备库,备库收到 Redo 日志(RLOG_PKG)后将其加入日志重演任务系统,并马上响应主库,不需要等待 Redo 日志重演结束后再响应主库。一个主库可以配置 1~8 个同步备库。
特点:其性能比即时归档模式更高,同时数据一致性保障略低,备库会产生一定延迟。其备库也有日志堆积控制机制,如果出现日志堆积,同样会延迟响应主库,这个延迟有可能会导致主库上的归档任务堆积,如果堆积过多,可能会反向影响到联机日志刷盘速度。
适用场景: 同步备库一般用于对主库性能要求较高,想要避免因备库故障或异步恢复引发的Suspend 状态切换,但又希望备库的数据延迟不要太大的场合。
同步机制: 依赖定时器来周期性地触发源库向异步备库发送归档日志。这种机制使得异步备库在数据同步上具有一定的延迟容忍性,适用于对数据一致性要求不是极为严苛的场景。每个 Primary 或 Standby 模式的数据库最多可以配置 8 个异步备库,Normal 模式下配置的异步备库会自动失效。异步备库可以级联配置,异步备库本身也可以作为源库配置异步备库。
特点:无阻塞设计,主库不会因备库同步失败而挂起或阻塞联机日志刷盘,同时对主机影响最小。主库性能最优,备库延迟较高,也有组分裂风险。监视器也不允许switchover/takeover操作。
适用场景:历史数据查询、分析型业务等非实时需求场景。
两节点vmware虚拟机:4G、4C、nvme
DM Database Server 64 V8.1 安全版
利用Sysbench模拟业务
--tables=25 --table-size=2500 --db-driver=dm --dm-db=localhost:5236 --dm-user=SYSDBA --auto-inc=0 --threads=64 --time=180 --report-interval=10
限制网络IO:
tc qdisc add dev ens160 root tbf rate 10000kbit burst 10000kbit latency 10ms
模拟备机磁盘性能不稳定
#ionice -c 1 -n 1 -p PID
while true; do dd if=/dev/zero of=/dbdata/dmdata/DAMENG/file bs=1G count=5; done
模拟主库异常
mv dmserver dmserver_bak
./dmseverd stop
模拟mal通信异常
vi dmmal.ini
MAL_PORT = ##修改MAL_PORT
./dmserverd restart
由于测试过程较为繁琐,故将测试过程截图整理到附件文档中
资源限制说明:受测试环境虚拟机配置(4核/4G/NVMe)及模拟工具限制,部分结果存在波动,建议生产环境结合实际硬件性能与业务负载进行验证。
在模拟备机性能异常的场景中,触发备库日志堆积则会导致主库业务延迟,不同归档模式主库性能呈现较大差异:
主库性能排序:异步归档(ASYNC)> 同步归档(SYNC)>实时归档(REALTIME)
备库数据时效性排序:实时归档(REALTIME)> 同步归档(SYNC)> 异步归档(ASYNC)
注:性能与数据一致性呈负相关,需根据业务需求权衡选择。
在模拟网络异常的场景中,各归档模式性能如下:
实时/同步归档: 主库性能受备库日志堆积影响显著,尤其在网络带宽受限时,联机日志传输速度下降,事务延迟显著。
异步归档:得益于无阻塞设计,主库性能最优,但备库数据延迟较高,存在潜在分裂风险,不适用于强一致性场景。
在生产环境中,应及时对主备数据同步网络、备库性能进行监控,网络层面建议尽量减低RTT时间,有条件可以配置万兆网;备机性能不能过低,避免IOPS低于主库,导致木桶效应。
文章
阅读量
获赞