暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【干货攻略】达梦数据库主备部署(同步归档模式)

达梦E学 2024-01-29
3233



前提

“同步备库”一般用于对主库性能要求较高,想要避免因备库故障或异步恢复引发的Suspend 状态切换,但又希望备库的数据延迟不要太大的应用场景。


在达梦数据库DM8中,同步备库”可以通过“同步归档模式”实现。与实时归档相比,同步归档时机为主库本地归档刷盘之后,主库发送归档到同步备库失败时,不会切换为 Suspend状态,而是直接将备库的归档状态设置为无效。 


说明:同步归档模式是新版本特性(2023年第三季度以后版本支持),老版本不支持。




部署规划


IP规划:

服务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 dmiso
    mount -o loop dm8_xxx.iso dmiso

    使用dmdba用户安装软件:

    执行以下命令,切换到 dmiso 目录下执行 DMInstall.bin 文件开始安装,选择【-i】参数以命令行方式安装。

      su - dmdba
      cd /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

              执行全备:

                dmrman  
                backup 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;

                        3.4修改dm.ini
                         主备上修改以下参数值:
                        vi dmdata/dmdb/dm.ini
                          MAL_INI = 1
                          ARCH_INI = 1
                          ALTER_MODE_STATUS = 0
                          ENABLE_OFFLINE_TS = 2
                          3.5配置归档文件dmarch.ini
                          vi dmdata/dmdb/dmarch.ini
                          主节点:
                            [ARCHIVE_LOCAL1]
                            ARCH_TYPE = LOCAL
                            ARCH_DEST = dmdata/arch
                            ARCH_FILE_SIZE = 2048
                            ARCH_SPACE_LIMIT = 102400
                            [ARCHIVE_SYNC]
                            ARCH_TYPE = SYNC
                            ARCH_DEST = dw2
                            ARCH_RECOVER_TIME = 1
                             备节点:
                              ARCHIVE_LOCAL1]
                              ARCH_TYPE = LOCAL
                              ARCH_DEST = dmdata/arch
                              ARCH_FILE_SIZE = 2048
                              ARCH_SPACE_LIMIT = 102400
                               3.6配置MAL系统配置文件dmmal.ini
                              主备节点一致:
                                vi /dmdata/dmdb/dmmal.ini
                                MAL_CHECK_INTERVAL = 5
                                MAL_CONN_FAIL_INTERVAL = 15
                                [MAL_INST1]
                                MAL_INST_NAME = dw1
                                MAL_HOST = 192.168.231.133
                                MAL_PORT = 7336
                                MAL_INST_HOST = 192.168.231.133
                                MAL_INST_PORT = 5236
                                MAL_DW_PORT = 7436
                                MAL_INST_DW_PORT = 7536
                                [MAL_INST2]
                                MAL_INST_NAME = dw2
                                MAL_HOST = 192.168.231.135
                                MAL_PORT = 7336
                                MAL_INST_HOST = 192.168.231.135
                                MAL_INST_PORT = 5236
                                MAL_DW_PORT = 7436
                                MAL_INST_DW_PORT = 7536
                                3.7配置守护进程配置文件 dmwatcher.ini

                                主备节点一致:
                                vi dmdata/dmdb/dmwatcher.ini
                                  [GRP_SN]
                                  DW_TYPE = LOCAL
                                  DW_MODE = MANUAL
                                  DW_ERROR_TIME = 30
                                  INST_RECOVER_TIME = 60
                                  INST_ERROR_TIME = 20
                                  INST_OGUID = 453331
                                  INST_INI = dmdata/dmdb/dm.ini
                                  INST_AUTO_RESTART = 1
                                  INST_STARTUP_CMD = home/dmdba/dmdbms/bin/dmserver
                                  主备启动到mount:
                                    dmserver dmdata/dmdb/dm.ini mount
                                    主库执行:
                                      disql SYSDBA/SYSDBA@localhost:5236
                                      sp_set_oguid(453331);
                                      alter database primary;
                                      备库执行:
                                        disql SYSDBA/SYSDBA@localhost:5236
                                        sp_set_oguid(453331);
                                        alter database standby;
                                        主备启动守护进程:
                                          dmwatcher dmdata/dmdb/dmwatcher.ini
                                          3.8配置监视器配置文件dmmonitor.ini
                                          vi dmdata/dmdb/dmmonitor.ini
                                            MON_DW_CONFIRM    = 0   
                                            MON_LOG_PATH = home/dmdba/dmdbms/log
                                            MON_LOG_INTERVAL = 60
                                            MON_LOG_FILE_SIZE = 200
                                            MON_LOG_SPACE_LIMIT = 1024
                                            [GRP_SN]
                                            MON_INST_OGUID = 453331
                                            MON_DW_IP = 192.168.253.133:7436
                                            MON_DW_IP = 192.168.253.135:7436
                                            登录监视器查看状态:
                                              dmmonitor dmdata/dmdb/dmmonitor.ini

                                              登录主库创建T1表测试:
                                                CREATE TABLE T1 AS SELECT * FROM DBA_USERS;

                                                登录备库查看T1表是否生成:
                                                 

                                                3.9注册服务
                                                使用 root 用户,到数据库安装目录的script/root下。
                                                注册守护进程服务(主备库都执行):
                                                  ./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 - dmdba
                                                      DmServicedw start
                                                      主备执行以下命令,启动守护进程:
                                                        su - dmdba
                                                        DmWatcherServicedw start



                                                        主备延迟测试


                                                        同步归档(Sync)在主库归档日志刷盘后,通过 MAL 系统将 Redo 日志发送到备库。同步备库的 Redo 日志重演过程与实时归档等其他类型的归档完全一致。同步归档的执行流程为:主库在归档日志刷盘后,将 Redo 日志发送到备库,备库收到Redo 日志(RLOG_PKG)后,将其加入日志重演任务系统,并马上响应主库,不需要等待Redo 日志重演结束后再响应主库。


                                                        4.1模拟测试数据

                                                          --模拟主库写入100w数据查看备库延迟情况
                                                          create table t1(a int,b varchar2(100));
                                                          declare
                                                          begin
                                                          for i in 1..1000000 loop
                                                          insert into t1 values(i,to_char(sysdate));
                                                          end loop;
                                                          commit;
                                                          end;
                                                          /

                                                          4.2检查备库同步情况

                                                          备库数据情况备库数据成功写入,用户无感知:

                                                           

                                                          查看监视器状态:

                                                           





                                                          故障模拟


                                                          同步备库的守护进程也需要配置为 LOCAL 类型,因此同步备库不支持主备库切换、备库接管等操作。若有将同步备库切换为主库的需要,可以手动执行 sql语句将其切换为 PRIMARY 模式,但此时数据守护系统并不能保证该操作的正确性,需要由用户自身确保操作正确。
                                                          5.1备库故障
                                                          模拟主库在持续写入数据,持续时间5分钟:
                                                           

                                                           主库写入时kill掉备库守护和数据库进程:

                                                           查看备库归档,状态已并更为invalid

                                                          查看压测运行结果,成功率100%:

                                                          查看响应时间平稳无明显波动:

                                                          备库恢复服务后查看监视器状态,归档状态async_send,待归档同步后变更为valid

                                                           5.2主库故障
                                                          由于同步归档LOCAL 类型,因此同步备库不支持主备库切换,需通过sql手动建备库变更为主库。
                                                          模拟主库故障,kill掉守护和数据库服务:

                                                           查看监视器状态,主库实例为error状态:

                                                          通过sql将备库切换为主库:
                                                          1)停止备库守护服务
                                                             DmWatcherServicedw  stop
                                                            2)执行命令将备库转换为PRIMARY模式
                                                              SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
                                                              ALTER DATABASE MOUNT;
                                                              ALTER DATABASE PRIMARY;
                                                              ALTER DATABASE OPEN FORCE;

                                                              5.3集群恢复
                                                              如需恢复原主备集群需重新备份恢复,参考《配置同步主备》




                                                              对比实时主备



                                                              比较类型

                                                              实时主备(最大性能模式)

                                                              同步主备

                                                              归档配置

                                                              实时备库

                                                              同步备库

                                                              主机日志

                                                              发送时机

                                                              写入联机日志前,发送到备库

                                                              归档日志刷盘之后

                                                              失败处理

                                                              Suspend 数据库,保持归档状态不变,等待守护进程干预

                                                              直接设置归档状态为无效,不会Suspend 数据库

                                                              故障切换

                                                              监视器自动或手动切换

                                                              手动将备库切换为主库

                                                              故障后恢复集群

                                                              自动加入守护集群

                                                              需重新搭建同步备库


                                                              以上为本期分享,希望能带给大家帮助。想要了解更多往期干货,可访问页面最下方#达梦技术干货攻略#合集。


                                                              相关分享:

                                                              【总结帖】2023年达梦技术干货攻略年度合集

                                                              【干货攻略】达梦数据库客户端查询SYSDATE慢8小时解决办法

                                                              【开班通知】DM8-DCP线上培训班招生中(2024年02月26日开班)

                                                              【开班通知】 DM8-DCA线上培训班招生中(2024年02月28日开班)




                                                              END

                                                              达梦知识普及

                                                              扫码关注我们
                                                              学习共享
                                                              知识普及

                                                              作者:谢卓彬
                                                              审核:青城
                                                              排版:达梦培训中心
                                                              原文:引用自“达梦在线服务平台”



                                                              文章转载自达梦E学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                              评论