注册
主备集群搭建笔记
专栏/培训园地/ 文章详情 /

主备集群搭建笔记

小韩 2025/04/24 84 0 0
摘要

主备集群搭建笔记

主备集群搭建还是笔记复杂繁琐的,手速普通、不出错的情况下预计需要 60~90分钟,下文是我在使用过程中的笔记,希望能给搭建带来帮助。

-- 主机、备机 mode oguid 都需要修改 select mode$ from v$instance; -- NORMAL,PRIMARY、standby select oguid from v$instance; -- 0 -- MAL 系统 -- oguid 数据库守护的唯一标识 -- 规划 -- 实例名、MAL_INST_NAME -- MAL_INST_HOST、MAL_INST_PORT、MAL_INST_DW_PORT -- MAL_HOST、MAL_PORT、MAL_DW_PORT DM01 DM01 1xx.xx.xx.192 5236 5238 1xx.xx.xx.192 15236 15238 DM02 DM02 1xx.xx.xx.144 5236 5238 1xx.xx.xx.144 15236 15238 -- 样例文件 /dm8/samples/ini_script/UTF-8/dmarch_example.ini /dm8/samples/ini_script/UTF-8/dmmal_example.ini /dm8/samples/ini_script/UTF-8/dmmonitor_example.ini /dm8/samples/ini_script/UTF-8/dmwatcher_example.ini -------------------------------------------------------------------------- -- 1. 主机环境准备好,配置好 dm.ini、dmmal.ini、dmarch.ini、dmwatcher.ini -------------------------------------------------------------------------- -- 1.1. 修该主节点 dm.ini 开启归档和 MAL: INSTANCE_NAME = DM01 ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ,原值 1 ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 ,原值 1 MAL_INI = 1 #打开 MAL 系统 ,原值 0 ARCH_INI = 1 #打开归档配置 ,原值 0 -- 1.2 创建 dmarch.ini 对数据库实例 -- ARCH_DEST 写要归档目标实例名,主库写备库,备库写主库,不一样!!! [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = DM02 #实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dm8/arch ARCH_FILE_SIZE = 64 ARCH_SPACE_LIMIT = 1024 -- 1.3 dmmal.ini 对数据库实例 MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间 [MAL_INST1] MAL_INST_NAME = DM01 #实例名,和dm.ini中的INSTANCE_NAME一致 MAL_HOST = 1xx.xx.xx.192 #MAL系统监听TCP连接的IP地址 MAL_PORT = 5240 #MAL系统监听TCP连接的端口 #MAL_INST_HOST = 1xx.xx.xx.192 #实例的对外服务IP地址 MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致 MAL_DW_PORT = 5237 #实例本地的守护进程监听TCP连接的端口 MAL_INST_DW_PORT = 5238 #实例监听守护进程TCP连接的端口 [MAL_INST2] MAL_INST_NAME = DM02 MAL_HOST = 1xx.xx.xx.144 MAL_PORT = 5240 #MAL_INST_HOST = 1xx.xx.xx.144 MAL_INST_PORT = 5236 MAL_DW_PORT = 5237 MAL_INST_DW_PORT = 5238 -------------------------------------------------------------------------- -- 2 脱机备份 -------------------------------------------------------------------------- -- 2.1 进入 disql su - dmdba export PATH=$PATH:/dm8/bin/ disql SYSDBA/\"P@ssw0rd\"@1xx.xx.xx.192:5236 -- 2.2 关闭数据库!!!! shutdown IMMEDIATE; exit systemctl status DmServiceDMSERVER systemctl stop DmServiceDMSERVER systemctl start DmServiceDMSERVER -- 2.3 冷备份 su - dmdba export PATH=$PATH:/dm8/bin/ cd /dm8/bin/ ./dmrman --backup database '/dm8/data/DAMENG/dm.ini' to fullbak01 backupset '/dm8/data/DAMENG/bak/BACK_FULL_01'; --remove backupset '/dm8/data/DAMENG/bak/BACK_FULL_01'; -- remove backupset '/dm8/backup/BACK_FULL_01'; backup database '/dm8/data/DAMENG/dm.ini' to BACK_FULL_01 backupset '/dm8/backup/BACK_FULL_01'; show backupset '/dm8/backup/BACK_FULL_01'; check backupset '/dm8/backup/BACK_FULL_01'; -- remove backupset '/dm8/backup/BACK_FULL_01'; -------------------------------------------------------------------------- -- 3 备库上还原恢复 -------------------------------------------------------------------------- -- 3.1 复制备份到备库机器上 rm -rf /dm8/backup/ scp -r -p root@1xx.xx.xx.192:/dm8/backup/ /dm8/backup/ -- 3.2 还原 su - dmdba export PATH=$PATH:/dm8/bin/ cd /dm8/bin/ ./dmrman restore database to '/dm8/data/DAMENG/' from backupset '/dm8/backup/BACK_FULL_01'; -- 3.3 更新魔术 recover database '/dm8/data/DAMENG/dm.ini' update db_magic -- 3.4 修改 dm.ini 实例名为 DM02 -- 3.5 复制 dmmal.ini、dmarch.ini 文件到备库服务 scp -r -p root@1xx.xx.xx.192:/dm8/data/DAMENG/dmarch.ini /dm8/data/DAMENG/dmarch.ini scp -r -p root@1xx.xx.xx.192:/dm8/data/DAMENG/dmmal.ini /dm8/data/DAMENG/dmmal.ini -- 3.6 /dm8/data/DAMENG/dmarch.ini 中 ARCH_DEST 改为 DM01 -------------------------------------------------------------------------- -- 4 mount 启动数据库 -------------------------------------------------------------------------- -- 4.1 启动主库 -- 第一次启动一定是 mount 启动,在 mount 下改状态 su - dmdba export PATH=$PATH:/dm8/bin/ dmserver /dm8/data/DAMENG/dm.ini mount -- 登录数据库 su - dmdba export PATH=$PATH:/dm8/bin/ disql SYSDBA/Dameng123@1xx.xx.xx.192:5236 select name,status$,MODE$ FROM v$instance; -- 改数据库模式 -- 设置 oguid mount 状态下执行 sp_set_oguid(888888); -- 不要手动 open,让数据库自动 open ALTER DATABASE PRIMARY; -- 确认实例信息 -- DM01 select name,status$,MODE$ FROM v$instance; -- 4.2 启动备库 su - dmdba export PATH=$PATH:/dm8/bin/ dmserver /dm8/data/DAMENG/dm.ini mount -- 登录数据库 su - dmdba export PATH=$PATH:/dm8/bin/ disql SYSDBA/Dameng123@1xx.xx.xx.144:5236 select name,status$,MODE$ FROM v$instance; -- 改数据库模式 -- 设置 oguid mount 状态下执行 sp_set_oguid(888888); -- 不要手动 open,让数据库自动 open ALTER DATABASE standby; -- 确认实例信息 -- DM02 select name,status$,MODE$ FROM v$instance; -------------------------------------------------------------------------- -- 5 启动 watcher 主库、从库都拷贝一个 dmwatcher.ini 对数据守护进程 -------------------------------------------------------------------------- -- /dm8/data/DAMENG/dmwatcher.ini [GRP1] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = AUTO #自动切换模式 DW_ERROR_TIME = 10 #远程守护进程故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 10 #本地实例故障认定时间 INST_OGUID = 888888 #守护系统唯一OGUID值 INST_INI = /dm8/data/DAMENG/dm.ini #dm.ini配置文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭 scp -r -p root@1xx.xx.xx.192:/dm8/data/DAMENG/dmwatcher.ini /dm8/data/DAMENG/dmwatcher.ini -- 备库:注册服务 watcher -- /dm8/script/root/dm_service_uninstaller.sh -n dmwatcher /dm8/script/root/dm_service_installer.sh -t dmwatcher -p DM02 -watcher_ini /dm8/data/DAMENG/dmwatcher.ini -- 备库:启动 watcher systemctl start DmWatcherServiceDM02 systemctl status DmWatcherServiceDM02 -- 主库:注册服务 watcher -- /dm8/script/root/dm_service_uninstaller.sh -n dmwatcher /dm8/script/root/dm_service_installer.sh -t dmwatcher -p DM01 -watcher_ini /dm8/data/DAMENG/dmwatcher.ini -- 主库:启动 watcher systemctl start DmWatcherServiceDM01 systemctl status DmWatcherServiceDM01 -- 主备 watcher 都启动后(主备不区分顺序,均可),数据守护自动将数据库变为 OPEN select name,status$,MODE$ FROM v$instance; -- 达梦服务注册 -- 主库:注册服务 DMSVR01 -- /dm8/script/root/dm_service_uninstaller.sh -n DMSVR01 -- /dm8/script/root/dm_service_uninstaller.sh -n DMSERVER 要不要删??? /dm8/script/root/dm_service_installer.sh -t dmserver -p DMSVR01 -dm_ini /dm8/data/DAMENG/dm.ini -- /dm8/script/root/dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /dm8/data/DAMENG/dm.ini systemctl status DmServiceDMSVR01 -- 主库去除原有服务注册,需要从 ./service 看 -- mv /dm8/bin/DmServiceDMSERVER.service /usr/lib/systemd/system/DmServiceDMSERVER.service -- systemctl enable DmServiceDMSERVER.service -- systemctl start DmServiceDMSERVER.service systemctl disable DmServiceDMSERVER.service mv /usr/lib/systemd/system/DmServiceDMSERVER.service /dm8/bin/DmServiceDMSERVER.service systemctl status DmServiceDMSERVER.service /dm8/script/root/dm_service_uninstaller.sh -n DMSERVER -- 从库:注册服务 DMSVR02 -- /dm8/script/root/dm_service_uninstaller.sh -n dmserver /dm8/script/root/dm_service_installer.sh -t dmserver -p DMSVR02 -dm_ini /dm8/data/DAMENG/dm.ini -- /dm8/script/root/dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /dm8/data/DAMENG/dm.ini systemctl status DmServiceDMSVR02 -- 备库只读 -------------------------------------------------------------------------- -- 6 dmmonitor.ini 监视器,自动接管 -------------------------------------------------------------------------- -- /dm8/dmmonitor.ini MON_DW_CONFIRM = 1 MON_LOG_PATH = /dm8/log MON_LOG_INTERVAL = 60 MON_LOG_FILE_SIZE = 32 MON_LOG_SPACE_LIMIT = 0 [GRP1] MON_INST_OGUID = 888888 MON_DW_IP = 1xx.xx.xx.192:5237 MON_DW_IP = 1xx.xx.xx.144:5237 --确认监视器 su - dmdba export PATH=$PATH:/dm8/bin/ /dm8/bin/dmmonitor /dm8/dmmonitor.ini --需要重新启动一个注册服务的 /dm8/script/root/dm_service_installer.sh -t dmmonitor -p DMMON -monitor_ini /dm8/dmmonitor.ini systemctl status DmMonitorServiceDMMON systemctl start DmMonitorServiceDMMON -- 再启动一个非确认监视器 MON_DW_CONFIRM = 0 cp /dm8/dmmonitor.ini /dm8/dmmonitor2.ini su - dmdba export PATH=$PATH:/dm8/bin/ /dm8/bin/dmmonitor /dm8/dmmonitor2.ini --监视器上可以查看集群的状态 show 命令查看集群状态 login 登录 choose switchover 查看选择可切换为 PRIMARY 库的备库列表 switchover 切换主库 -- 主备如何切换 -- 输入 choose switchover 提示切换 -- 输入 switchover -- 再输入 Y -- 主备归档状态 SELECT * FROM v$arch_status; -- 模拟备库故障,归档不同步 -- 备库恢复确认数据自动同步正常 -- 结束临时启动的库,用服务启动 systemctl start DmMonitorServiceDMMON systemctl start DmMonitorServiceDMMON -- 通过监视器关闭 Stop Group startup group --- 手动关闭 1. 先关闭确认监视器 2. 关闭备库守护进程 3. 关闭主库守护进程 4. shutdown 主库 5. shutdown 备库
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服