DM8读写分离的搭建.md
0.简介
1. 本实验是测试环境,数据库的安装目录,和路径规划,和参数就按照默认参数配置。
2. 在生产环境需要根据实际情况进行调整即可
一、主备数据库软件的安装
1.主数据库的安装
1基础环境介绍
信息 | 配置 |
---|---|
操作系统 | centos 7.8 |
cpu | 1核 |
内存 | 2G |
磁盘 | 50G |
注意事项
- 本实验为测试实验,具体的路径规划请参照之前的文档达梦数据库的运行核维护
- 本实验为测试实验,参数优化请参照之前的文档达梦数据库的运行核维护
2.用户和组的创建
[root@dm01 ~]# groupadd -g 12349 dinstall
[root@dm01 ~]# useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
[root@dm01 ~]# passwd dmdba
Changing password for user dmdba.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
3.修改linux操作系统
- 修改/etc/security/limits.conf 添加endfile 后面的内容
[root@dm01 ~]# cat /etc/security/limits.conf |tail -11 # End of file dmdba soft fsize unlimited dmdba hard fsize unlimited dmdba soft nproc 131072 dmdba hard nproc 131072 dmdba soft nofile 131072 dmdba hard nofile 131072 dmdba soft core unlimited dmdba hard core unlimited dmdba soft data unlimited dmdba hard data unlimited
4.软件的安装
- 安装包为iso文件,请在虚拟机上进行挂载即可
- 虚拟机配置iso磁盘
-
打开虚拟机设置,设置iso映像路径为安装包路径点确定
-
挂载磁盘到media 目录,并查看文件
[root@dm01 ~]# mount /dev/sr0 /media/ mount: /dev/sr0 is write-protected, mounting read-only [root@dm01 ~]# cd /media/ [root@dm01 media]# ls DMInstall.bin DM_Install.pdf [root@dm01 media]#
-
- 命令行安装,运行DMInstall.bin
[dmdba@dm01 media]$ ./DMInstall.bin -i Please select the installers language (E/e:English C/c:Chinese) [E/e]:C 解压安装程序......... 欢迎使用达梦数据库安装程序 是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:N 是否设置时区? (Y/y:是 N/n:否) [Y/y]:Y 设置时区: [ 1]: GTM-12=日界线西 [ 2]: GTM-11=萨摩亚群岛 [ 3]: GTM-10=夏威夷 [ 4]: GTM-09=阿拉斯加 [ 5]: GTM-08=太平洋时间(美国和加拿大) [ 6]: GTM-07=亚利桑那 [ 7]: GTM-06=中部时间(美国和加拿大) [ 8]: GTM-05=东部部时间(美国和加拿大) [ 9]: GTM-04=大西洋时间(美国和加拿大) [10]: GTM-03=巴西利亚 [11]: GTM-02=中大西洋 [12]: GTM-01=亚速尔群岛 [13]: GTM=格林威治标准时间 [14]: GTM+01=萨拉热窝 [15]: GTM+02=开罗 [16]: GTM+03=莫斯科 [17]: GTM+04=阿布扎比 [18]: GTM+05=伊斯兰堡 [19]: GTM+06=达卡 [20]: GTM+07=曼谷,河内 [21]: GTM+08=中国标准时间 [22]: GTM+09=汉城 [23]: GTM+10=关岛 [24]: GTM+11=所罗门群岛 [25]: GTM+12=斐济 [26]: GTM+13=努库阿勒法 [27]: GTM+14=基里巴斯 请选择设置时区 [21]:21 安装类型: 1 典型安装 2 服务器 3 客户端 4 自定义 请选择安装类型的数字序号 [1 典型安装]:1 所需空间: 1067M 请选择安装目录 [/home/dmdba/dmdbms]: 可用空间: 40G 是否确认安装路径(/home/dmdba/dmdbms)? (Y/y:是 N/n:否) [Y/y]:Y 安装前小结 安装位置: /home/dmdba/dmdbms 所需空间: 1067M 可用空间: 40G 版本信息: 有效日期: 安装类型: 典型安装 是否确认安装? (Y/y:是 N/n:否):Y 2020-10-13 10:15:27 [INFO] 安装达梦数据库... 2020-10-13 10:15:28 [INFO] 安装 基础 模块... 2020-10-13 10:15:38 [INFO] 安装 服务器 模块... 2020-10-13 10:15:40 [INFO] 安装 客户端 模块... 2020-10-13 10:15:50 [INFO] 安装 驱动 模块... 2020-10-13 10:15:54 [INFO] 安装 手册 模块... 2020-10-13 10:15:54 [INFO] 安装 服务 模块... 2020-10-13 10:15:55 [INFO] 移动ant日志文件。 2020-10-13 10:15:56 [INFO] 安装达梦数据库完成。 请以root系统用户执行命令: /home/dmdba/dmdbms/script/root/root_installer.sh 安装结束
- 执行脚本
[root@dm01 ~]# /home/dmdba/dmdbms/script/root/root_installer.sh 移动 /home/dmdba/dmdbms/bin/dm_svc.conf 到/etc目录 修改服务器权限 创建DmAPService服务 Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service. 创建服务(DmAPService)完成 启动DmAPService服务
2.备数据库的安装
1基础环境介绍
信息 | 配置 |
---|---|
操作系统 | centos 7.8 |
cpu | 1核 |
内存 | 2G |
磁盘 | 50G |
注意事项
- 本实验为测试实验,具体的路径规划请参照之前的文档达梦数据库的运行核维护
- 本实验为测试实验,参数优化请参照之前的文档达梦数据库的运行核维护
2.用户和组的创建
[root@dm02 ~]# groupadd -g 12349 dinstall
[root@dm02 ~]# useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
[root@dm02 ~]# passwd dmdba
Changing password for user dmdba.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@dm02 ~]#
3.修改linux操作系统
- 修改/etc/security/limits.conf 添加endfile 后面的内容
[root@dm02 ~]# cat /etc/security/limits.conf| tail -11f # End of file dmdba soft fsize unlimited dmdba hard fsize unlimited dmdba soft nproc 131072 dmdba hard nproc 131072 dmdba soft nofile 131072 dmdba hard nofile 131072 dmdba soft core unlimited dmdba hard core unlimited dmdba soft data unlimited dmdba hard data unlimited
4.软件的安装
- 安装包为iso文件,请在虚拟机上进行挂载即可
- 虚拟机配置iso磁盘
-
打开虚拟机设置,设置iso映像路径为安装包路径点确定
-
挂载磁盘到media 目录,并查看文件
[root@dm02 ~]# mount /dev/sr0 /media/ mount: /dev/sr0 is write-protected, mounting read-only [root@dm02 ~]# cd /media/ [root@dm02 media]# ls DMInstall.bin DM_Install.pdf
-
- 命令行安装,运行DMInstall.bin
[root@dm02 media]# su - dmdba [dmdba@dm02 ~]$ cd /media/ [dmdba@dm02 media]$ ls DMInstall.bin DM_Install.pdf [dmdba@dm02 media]$ ./DMInstall.bin -i Please select the installer's' language (E/e:English C/c:Chinese) [E/e]:C 解压安装程序......... 欢迎使用达梦数据库安装程序 是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:N 是否设置时区? (Y/y:是 N/n:否) [Y/y]:Y 设置时区: [ 1]: GTM-12=日界线西 [ 2]: GTM-11=萨摩亚群岛 [ 3]: GTM-10=夏威夷 [ 4]: GTM-09=阿拉斯加 [ 5]: GTM-08=太平洋时间(美国和加拿大) [ 6]: GTM-07=亚利桑那 [ 7]: GTM-06=中部时间(美国和加拿大) [ 8]: GTM-05=东部部时间(美国和加拿大) [ 9]: GTM-04=大西洋时间(美国和加拿大) [10]: GTM-03=巴西利亚 [11]: GTM-02=中大西洋 [12]: GTM-01=亚速尔群岛 [13]: GTM=格林威治标准时间 [14]: GTM+01=萨拉热窝 [15]: GTM+02=开罗 [16]: GTM+03=莫斯科 [17]: GTM+04=阿布扎比 [18]: GTM+05=伊斯兰堡 [19]: GTM+06=达卡 [20]: GTM+07=曼谷,河内 [21]: GTM+08=中国标准时间 [22]: GTM+09=汉城 [23]: GTM+10=关岛 [24]: GTM+11=所罗门群岛 [25]: GTM+12=斐济 [26]: GTM+13=努库阿勒法 [27]: GTM+14=基里巴斯 请选择设置时区 [21]:21 安装类型: 1 典型安装 2 服务器 3 客户端 4 自定义 请选择安装类型的数字序号 [1 典型安装]:1 所需空间: 1067M 请选择安装目录 [/home/dmdba/dmdbms]: 可用空间: 40G 是否确认安装路径(/home/dmdba/dmdbms)? (Y/y:是 N/n:否) [Y/y]:Y 安装前小结 安装位置: /home/dmdba/dmdbms 所需空间: 1067M 可用空间: 40G 版本信息: 有效日期: 安装类型: 典型安装 是否确认安装? (Y/y:是 N/n:否):Y 2020-10-20 23:57:45 [INFO] 安装达梦数据库... 2020-10-20 23:57:46 [INFO] 安装 基础 模块... 2020-10-20 23:57:57 [INFO] 安装 服务器 模块... 2020-10-20 23:57:59 [INFO] 安装 客户端 模块... 2020-10-20 23:58:10 [INFO] 安装 驱动 模块... 2020-10-20 23:58:14 [INFO] 安装 手册 模块... 2020-10-20 23:58:17 [INFO] 安装 服务 模块... 2020-10-20 23:58:18 [INFO] 移动ant日志文件。 2020-10-20 23:58:19 [INFO] 安装达梦数据库完成。 请以root系统用户执行命令: /home/dmdba/dmdbms/script/root/root_installer.sh 安装结束
- 执行脚本
[root@dm02 ~]# /home/dmdba/dmdbms/script/root/root_installer.sh 移动 /home/dmdba/dmdbms/bin/dm_svc.conf 到/etc目录 修改服务器权限 创建DmAPService服务 Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service. 创建服务(DmAPService)完成 启动DmAPService服务
二、实例的初始化()
1.主库初始化实例
-
实例初始化
[dmdba@dm01 bin]$ ./dminit PATH=/home/dmdba/dmdbms/data LOG_PATH=/home/dmdba/dmdbms/data/DMRWW/dmredo01.log LOG_PATH=/home/dmdba/dmdbms/data/DMRWW/dmredo02.log LOG_PATH=/home/dmdba/dmdbms/data/DMRWW/dmredo03.log LOG_SIZE=2048 DB_NAME=DMRWW INSTANCE_NAME=dm01 PORT_NUM=5290 initdb V8 db version: 0x7000a file dm.key not found, use default license! License will expire on 2021-06-01 log file path: /home/dmdba/dmdbms/data/DMRWW/dmredo01.log log file path: /home/dmdba/dmdbms/data/DMRWW/dmredo02.log log file path: /home/dmdba/dmdbms/data/DMRWW/dmredo03.log write to dir [/home/dmdba/dmdbms/data/DMRWW].
-
配置实例服务
[root@dm01 ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p dm01 -dm_ini /home/dmdba/dmdbms/data/DMRWW/dm.ini Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicedm01.service to /usr/lib/systemd/system/DmServicedm01.service. 创建服务(DmServicedm01)完成
-
重启数据库
[dmdba@dm01 bin]$ ./dmserver ../data/DMRWW/dm.ini file dm.key not found, use default license! version info: develop Use normal os_malloc instead of HugeTLB Use normal os_malloc instead of HugeTLB DM Database Server x64 V8 1-1-87-20.06.01-122565-ENT startup... Database mode = 0, oguid = 0 License will expire on 2021-06-01 file lsn: 0 ndct db load finished ndct fill fast pool finished iid page's trxid[1002] NEXT TRX ID = 1003 pseg_collect_items, collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages pseg_process_collect_items end, 0 active trx, 0 active pages, 0 committed trx, 0 committed pages total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ... pseg_crash_trx_rollback end purg2_crash_cmt_trx end, total 0 page purged set EP[0]'s pseg state to inactive pseg recv finished nsvr_startup end. aud sys init success. aud rt sys init success. trx: 2004 purged 1 pages trx: 2023 purged 1 pages trx: 2024 purged 1 pages trx: 2025 purged 1 pages trx: 2026 purged 1 pages trx: 2036 purged 1 pages trx: 2156 purged 1 pages trx: 2169 purged 1 pages trx: 2170 purged 1 pages trx: 2171 purged 1 pages trx: 2172 purged 1 pages trx: 2173 purged 1 pages trx: 2175 purged 1 pages trx: 2176 purged 1 pages trx: 2178 purged 1 pages trx: 2180 purged 1 pages trx: 2183 purged 1 pages trx: 2189 purged 1 pages trx: 2199 purged 1 pages trx: 2207 purged 37 pages trx: 2214 purged 1 pages trx: 2215 purged 1 pages trx: 2216 purged 1 pages trx: 2217 purged 1 pages trx: 2229 purged 1 pages trx: 2231 purged 1 pages trx: 2232 purged 1 pages trx: 2233 purged 1 pages trx: 2238 purged 21 pages trx: 2265 purged 1 pages trx: 2266 purged 1 pages trx: 2267 purged 1 pages trx: 2268 purged 1 pages trx: 2274 purged 1 pages trx: 2276 purged 1 pages trx: 2278 purged 1 pages trx: 2283 purged 1 pages trx: 2288 purged 1 pages trx: 2293 purged 1 pages trx: 2295 purged 1 pages trx: 2298 purged 1 pages trx: 2300 purged 1 pages trx: 2308 purged 1 pages trx: 2309 purged 1 pages trx: 2310 purged 1 pages trx: 2311 purged 1 pages trx: 2312 purged 1 pages trx: 2313 purged 1 pages trx: 2314 purged 1 pages trx: 2315 purged 1 pages trx: 2316 purged 1 pages trx: 2319 purged 1 pages trx: 2320 purged 1 pages trx: 2321 purged 1 pages trx: 2322 purged 1 pages trx: 2323 purged 1 pages trx: 2324 purged 1 pages trx: 2325 purged 1 pages trx: 2326 purged 1 pages trx: 2327 purged 1 pages trx: 2328 purged 1 pages trx: 2329 purged 1 pages trx: 2330 purged 1 pages trx: 2332 purged 1 pages trx: 2333 purged 1 pages trx: 2482 purged 1 pages trx: 2485 purged 8 pages trx: 2514 purged 1 pages systables desc init success. ndct_db_load_info success. nsvr_process_before_open begin. nsvr_process_before_open success. total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ... pseg_crash_trx_rollback end SYSTEM IS READY. exit Server is stopping... listener closed and all sessions disconnected purge undo records in usegs...OK full check point starting... generate force checkpoint, rlog free space[6434723328], used space[7715328] ckpt_lsn, ckpt_fil, ckpt_off are set as (34676, 0, 7719424) checkpoint: 0 pages flushed. checkpoint finished, rlog free space, used space is (6442438656, 0) full check point end. shutdown audit subsystem...OK shutdown schedule subsystem...OK shutdown timer successfully. pre-shutdown MAL subsystem...OK shutdown worker threads subsystem...OK shutdown local parallel threads pool successfully. shutdown replication subsystem...OK shutdown sequence cache subsystem...OK wait for mtsk link worker to exit..OK shutdown mpp session subsystem...OK wait for rapply is all over... OK rapply worker threads exit successfully. pre ending task & worker threads...OK shutdown dblink subsystem...OK shutdown session subsystem...OK shutdown rollback segments purging subsystem...OK shutdown rps subsystem...OK shutdown transaction subsystem...OK shutdown locking subsystem...OK shutdown dbms_lock subsystem...OK ending tsk and worker threads...OK ckpt2_exec_immediately begin. ckpt_lsn, ckpt_fil, ckpt_off are set as (34676, 0, 7719424) checkpoint: 0 pages flushed. checkpoint finished, rlog free space, used space is (6442423296, 15360) ckpt_lsn, ckpt_fil, ckpt_off are set as (34815, 0, 7734784) checkpoint: 0 pages flushed. checkpoint finished, rlog free space, used space is (6442438656, 0) ckpt_lsn, ckpt_fil, ckpt_off are set as (34815, 0, 7734784) checkpoint: 0 pages flushed. checkpoint finished, rlog free space, used space is (6442438656, 0) shutdown archive subsystem...OK shutdown redo log subsystem...OK shutdown MAL subsystem...OK shutdown message compress subsystem successfully. shutdown task subsystem...OK shutdown trace subsystem...OK shutdown svr_log subsystem...OK shutdown plan cache subsystem...OK shutdown file subsystem...OK shutdown database dictionary subsystem...OK shutdown mac cache subsystem...OK shutdown dynamic login cache subsystem...OK shutdown ifun/bifun/sfun/afun cache subsystem...OK shutdown crypt subsystem...OK shutdown pipe subsystem...OK shutdown compress component...OK shutdown slave redo subsystem...OK shutdown kernel buffer subsystem...OK shutdown SQL capture subsystem...OK shutdown control file system...OK shutdown dtype subsystem...OK shutdown huge buffer and memory pools...OK close lsnr socket DM Database Server shutdown successfully.
-
开启归档日志
- 启动数据库到mount
[dmdba@dm01 bin]$ ./dmserver ../data/DMRWW/dm.ini mount file dm.key not found, use default license! version info: develop Use normal os_malloc instead of HugeTLB Use normal os_malloc instead of HugeTLB DM Database Server x64 V8 1-1-87-20.06.01-122565-ENT startup... Database mode = 0, oguid = 0 License will expire on 2021-06-01 file lsn: 34815 ndct db load finished ndct fill fast pool finished nsvr_startup end. aud sys init success. aud rt sys init success. systables desc init success. ndct_db_load_info success. SYSTEM IS READY.
- 开启归档
[dmdba@dm01 bin]$ ./disql SYSDBA/SYSDBA:5290 服务器[LOCALHOST:5290]:处于普通配置状态 登录使用时间: 3.257(毫秒) disql V8 SQL> alter database archivelog; 操作已执行 已用时间: 5.662(毫秒). 执行号:0. SQL> alter database add archivelog 'DEST=/home/dmdba/dmdbms/data/DMRWW/arch,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=0'; 操作已执行 已用时间: 0.800(毫秒). 执行号:0. SQL> EXIT
- 关闭数据库
[dmdba@dm01 bin]$ ./dmserver ../data/DMRWW/dm.ini mount file dm.key not found, use default license! version info: develop Use normal os_malloc instead of HugeTLB Use normal os_malloc instead of HugeTLB DM Database Server x64 V8 1-1-87-20.06.01-122565-ENT startup... Database mode = 0, oguid = 0 License will expire on 2021-06-01 file lsn: 34815 ndct db load finished ndct fill fast pool finished nsvr_startup end. aud sys init success. aud rt sys init success. systables desc init success. ndct_db_load_info success. SYSTEM IS READY. checkpoint requested, rlog free space, used space is (6442438656, 0) ckpt_lsn, ckpt_fil, ckpt_off are set as (34815, 0, 7734784) checkpoint: 0 pages flushed. checkpoint finished, rlog free space, used space is (6442438656, 0) checkpoint requested, rlog free space, used space is (6442438656, 0) ckpt_lsn, ckpt_fil, ckpt_off are set as (34815, 0, 7734784) checkpoint: 0 pages flushed. checkpoint finished, rlog free space, used space is (6442438656, 0) exit Server is stopping... Sys status is mount, shutdown abort!
- 启动数据库到mount
-
做一个脱机的物理备份还原
- 启动dmap
[dmdba@dm01 bin]$ ./dmap dmap V8 dmap is ready
- 备份数据库
[dmdba@dm01 bin]$ ./dmrman dmrman V8 RMAN> backup database '/home/dmdba/dmdbms/data/DMRWW/dm.ini' to back_file_01 backupset '/home/dmdba/backup_file_01' backup database '/home/dmdba/dmdbms/data/DMRWW/dm.ini' to back_file_01 backupset '/home/dmdba/backup_file_01' file dm.key not found, use default license! Database mode = 0, oguid = 0 EP[0]s cur_lsn[34815] BACKUP DATABASE [DMRWW],execute...... CMD CHECK LSN...... BACKUP DATABASE [DMRWW],collect dbf...... CMD CHECK ...... DBF BACKUP SUBS...... total 0 packages processed... total 0 packages processed... total 0 packages processed... DBF BACKUP MAIN...... BACKUPSET [/home/dmdba/backup_file_01] END, CODE [0]...... META GENERATING...... CMD END.CODE:[0] backup successfully! time used: 00:00:01.097 RMAN> exit time used: 0.002(ms)
- 关闭dmap
[dmdba@dm01 bin]$ ./dmap dmap V8 dmap is ready i am the child process, my process id is 22461 file [backup_file_01.bak] finished, name:[backup_file_01.bak],created time:[2020-10-21 00:54:54],expire time:[2105-12-31 23:59:59],label:[],comment:[] file [backup_file_01.meta] finished, name:[backup_file_01.meta],created time:[2020-10-21 00:54:54],expire time:[2105-12-31 23:59:59],label:[],comment:[] exit dmap shutdown successfully
- 启动dmap
-
拷贝备份到备库
[dmdba@dm01 bin]$ scp -r /home/dmdba/backup_file_01/ 10.2.10.221:/home/dmdba/ The authenticity of host '10.2.10.221 (10.2.10.221)' can't be established. ECDSA key fingerprint is SHA256:lF7FXd4A/6mqygnFjvl3al7wwtz+vwdVKD50y6XDqGE. ECDSA key fingerprint is MD5:6d:64:25:76:ae:6d:54:0c:46:6e:20:2d:be:2b:78:4f. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.2.10.221' (ECDSA) to the list of known hosts. dmdba@10.2.10.221's password: backup_file_01.bak 100% 5990KB 59.7MB/s 00:00 backup_file_01.meta 100% 73KB 15.3MB/s 00:00
2.备库初始化
- 实例初始化
[dmdba@dm02 bin]$ ./dminit PATH=/home/dmdba/dmdbms/data LOG_PATH=/home/dmdba/dmdbms/data/DMRWW/dmredo01.log LOG_PATH=/home/dmdba/dmdbms/data/DMRWW/dmredo02.log LOG_PATH=/home/dmdba/dmdbms/data/DMRWW/dmredo03.log LOG_SIZE=2048 DB_NAME=DMRWW INSTANCE_NAME=dm02 PORT_NUM=5290 initdb V8 db version: 0x7000a file dm.key not found, use default license! License will expire on 2021-06-01 log file path: /home/dmdba/dmdbms/data/DMRWW/dmredo01.log log file path: /home/dmdba/dmdbms/data/DMRWW/dmredo02.log log file path: /home/dmdba/dmdbms/data/DMRWW/dmredo03.log write to dir [/home/dmdba/dmdbms/data/DMRWW]. create dm database success. 2020-10-21 01:01:26
- 重启备库
[dmdba@dm02 bin]$ ./dmserver /dm/data/DWTEST/dm.ini file dm.key not found, use default license! version info: develop Use normal os_malloc instead of HugeTLB Use normal os_malloc instead of HugeTLB DM Database Server x64 V8 1-1-87-20.06.01-122565-ENT startup... Database mode = 0, oguid = 0 License will expire on 2021-06-01 file lsn: 0 ndct db load finished ndct fill fast pool finished iid page's trxid[1002] NEXT TRX ID = 1003 pseg_collect_items, collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages pseg_process_collect_items end, 0 active trx, 0 active pages, 0 committed trx, 0 committed pages total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ... pseg_crash_trx_rollback end purg2_crash_cmt_trx end, total 0 page purged set EP[0]'s pseg state to inactive pseg recv finished nsvr_startup end. aud sys init success. aud rt sys init success. trx: 2004 purged 1 pages trx: 2023 purged 1 pages trx: 2024 purged 1 pages trx: 2025 purged 1 pages trx: 2026 purged 1 pages trx: 2036 purged 1 pages trx: 2156 purged 1 pages trx: 2169 purged 1 pages trx: 2170 purged 1 pages trx: 2171 purged 1 pages trx: 2172 purged 1 pages trx: 2173 purged 1 pages trx: 2175 purged 1 pages trx: 2176 purged 1 pages trx: 2178 purged 1 pages trx: 2180 purged 1 pages trx: 2183 purged 1 pages trx: 2189 purged 1 pages trx: 2199 purged 1 pages trx: 2207 purged 37 pages trx: 2214 purged 1 pages trx: 2215 purged 1 pages trx: 2216 purged 1 pages trx: 2217 purged 1 pages trx: 2229 purged 1 pages trx: 2231 purged 1 pages trx: 2232 purged 1 pages trx: 2233 purged 1 pages trx: 2238 purged 21 pages trx: 2265 purged 1 pages trx: 2266 purged 1 pages trx: 2267 purged 1 pages trx: 2268 purged 1 pages trx: 2274 purged 1 pages trx: 2276 purged 1 pages trx: 2278 purged 1 pages trx: 2283 purged 1 pages trx: 2288 purged 1 pages trx: 2293 purged 1 pages trx: 2295 purged 1 pages trx: 2298 purged 1 pages trx: 2300 purged 1 pages trx: 2308 purged 1 pages trx: 2309 purged 1 pages trx: 2310 purged 1 pages trx: 2311 purged 1 pages trx: 2312 purged 1 pages trx: 2313 purged 1 pages trx: 2314 purged 1 pages trx: 2315 purged 1 pages trx: 2316 purged 1 pages trx: 2319 purged 1 pages trx: 2320 purged 1 pages trx: 2321 purged 1 pages trx: 2322 purged 1 pages trx: 2323 purged 1 pages trx: 2324 purged 1 pages trx: 2325 purged 1 pages trx: 2326 purged 1 pages trx: 2327 purged 1 pages trx: 2328 purged 1 pages trx: 2329 purged 1 pages trx: 2330 purged 1 pages trx: 2332 purged 1 pages trx: 2333 purged 1 pages trx: 2482 purged 1 pages trx: 2485 purged 8 pages trx: 2514 purged 1 pages systables desc init success. ndct_db_load_info success. nsvr_process_before_open begin. nsvr_process_before_open success. total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ... pseg_crash_trx_rollback end SYSTEM IS READY. exit Server is stopping... listener closed and all sessions disconnected purge undo records in usegs...OK full check point starting... generate force checkpoint, rlog free space[529147392], used space[7715328] ckpt_lsn, ckpt_fil, ckpt_off are set as (34676, 0, 7719424) checkpoint: 0 pages flushed. checkpoint finished, rlog free space, used space is (536862720, 0) full check point end. shutdown audit subsystem...OK shutdown schedule subsystem...OK shutdown timer successfully. pre-shutdown MAL subsystem...OK shutdown worker threads subsystem...OK shutdown local parallel threads pool successfully. shutdown replication subsystem...OK shutdown sequence cache subsystem...OK wait for mtsk link worker to exit..OK shutdown mpp session subsystem...OK wait for rapply is all over... OK rapply worker threads exit successfully. pre ending task & worker threads...OK shutdown dblink subsystem...OK shutdown session subsystem...OK shutdown rollback segments purging subsystem...OK shutdown rps subsystem...OK shutdown transaction subsystem...OK shutdown locking subsystem...OK shutdown dbms_lock subsystem...OK ending tsk and worker threads...OK ckpt2_exec_immediately begin. ckpt_lsn, ckpt_fil, ckpt_off are set as (34676, 0, 7719424) checkpoint: 0 pages flushed. checkpoint finished, rlog free space, used space is (536847360, 15360) ckpt_lsn, ckpt_fil, ckpt_off are set as (34815, 0, 7734784) checkpoint: 0 pages flushed. checkpoint finished, rlog free space, used space is (536862720, 0) ckpt_lsn, ckpt_fil, ckpt_off are set as (34815, 0, 7734784) checkpoint: 0 pages flushed. checkpoint finished, rlog free space, used space is (536862720, 0) shutdown archive subsystem...OK shutdown redo log subsystem...OK shutdown MAL subsystem...OK shutdown message compress subsystem successfully. shutdown task subsystem...OK shutdown trace subsystem...OK shutdown svr_log subsystem...OK shutdown plan cache subsystem...OK shutdown file subsystem...OK shutdown database dictionary subsystem...OK shutdown mac cache subsystem...OK shutdown dynamic login cache subsystem...OK shutdown ifun/bifun/sfun/afun cache subsystem...OK shutdown crypt subsystem...OK shutdown pipe subsystem...OK shutdown compress component...OK shutdown slave redo subsystem...OK shutdown kernel buffer subsystem...OK shutdown SQL capture subsystem...OK shutdown control file system...OK shutdown dtype subsystem...OK shutdown huge buffer and memory pools...OK close lsnr socket DM Database Server shutdown successfully.
- 创建服务
[root@dm02 data]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p dm02 -dm_ini /home/dmdba/dmdbms/data/DMRWW/dm.ini Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicedm02.service to /usr/lib/systemd/system/DmServicedm02.service. 创建服务(DmServicedm02)完成
- 还原数据库
- 启动dmap
[dmdba@dm02 bin]$ ./dmap dmap V8 dmap is ready
- 恢复数据库
[dmdba@dm02 bin]$ ./dmrman dmrman V8 RMAN> restore database '/home/dmdba/dmdbms/data/DMRWW/dm.ini' from backupset '/home/dmdba/backup_file_01'; restore database '/home/dmdba/dmdbms/data/DMRWW/dm.ini' from backupset '/home/dmdba/backup_file_01'; file dm.key not found, use default license! RESTORE DATABASE CHECK...... RESTORE DATABASE,data collect...... RESTORE DATABASE,database refresh ...... RESTORE BACKUPSET [/home/dmdba/backup_file_01] START...... total 0 packages processed... RESTORE DATABASE,UPDATE ctl file...... RESTORE DATABASE,REBUILD key file...... RESTORE DATABASE,CHECK db info...... RESTORE DATABASE,UPDATE db info...... CMD END.CODE:[0] restore successfully. time used: 687.212(ms) RMAN> recover database '/home/dmdba/dmdbms/data/DMRWW/dm.ini' from backupset '/home/dmdba/backup_file_01'; recover database '/home/dmdba/dmdbms/data/DMRWW/dm.ini' from backupset '/home/dmdba/backup_file_01'; Database mode = 0, oguid = 0 EP[0]'s cur_lsn[34815] RESTORE RLOG CHECK...... CMD END.CODE:[603],DESC:[备份集[/home/dmdba/backup_file_01]备份过程中未产生日志] 备份集[/home/dmdba/backup_file_01]备份过程中未产生日志 recover successfully! time used: 257.906(ms) RMAN> recover database '/home/dmdba/dmdbms/data/DMRWW/dm.ini' update db_magic; recover database '/home/dmdba/dmdbms/data/DMRWW/dm.ini' update db_magic; Database mode = 0, oguid = 0 EP[0]'s cur_lsn[34815] EP[0]'s' apply_lsn[34815] >= end_lsn[34815] recover successfully! time used: 977.751(ms)
- 关闭dmap
[dmdba@dm02 bin]$ ./dmap dmap V8 dmap is ready i am the child process, my process id is 64722 i am the child process, my process id is 64740 i am the child process, my process id is 64775 exit dmap shutdown successfully
- 启动dmap
一个守护组的db_magic要保持不一样(这个值得作用可以看到数据库有没有备更新过)
注意
- 因为使用的是达梦8的数据库,所以不能使用复制的方式进行基础数据的复制,必须通过备份还原。
- 新初始化的数据库必须正常启停一次,才能去mount
- 从某种意义上说,只有正常启停一次,数据库才算初始化完成
三、修改配置文件
1.主库修改
1.修改dm.ini文件
在 DW_P 机器上配置主库的实例名为 DM01, dm.ini 参数修改如下:
#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16
INSTANCE_NAME = DM01
PORT_NUM = 5290 #数据库实例监听端口DM 数据守护与读写分离集群 V4.0
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
2.配置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 = 192.168.10.119 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.2.10.119 #实例的对外服务 IP 地址
MAL_INST_PORT = 5290 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5290 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = DM02
MAL_HOST = 192.168.10.221
MAL_PORT = 61142
MAL_INST_HOST = 10.2.10.221
MAL_INST_PORT = 5291
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 5291
3.配置dmarch.ini
[dmdba@dm01 DMRWW]$ cat dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments
ARCH_WAIT_APPLY = 0
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY #即时归档类型
ARCH_DEST = DM02 #即时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdbms/data/DMRWW/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 0
3. 配置dmwatcher.ini
[dmdba@dm01 DMRWW]$ cat dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453332 #守护系统唯一 OGUID 值
INST_INI = /home/dmdba/dmdbms/data/DMRWW/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
4.启动主库到mount状态
[dmdba@dm01 ~]$ dmserver dmdbms/data/DMRWW/dm.ini mount
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 1-1-87-20.06.01-122565-ENT startup...
Database mode = 0, oguid = 0
License will expire on 2021-06-01
begin redo pwr log collect, last ckpt lsn: 34815 ...
redo pwr log collect finished
main rfil[/home/dmdba/dmdbms/data/DMRWW/dmredo01.log]'s grp collect 0 valid pwr record, discard 0 invalid pwr record
EP[0]'s cur_lsn[34815]
begin redo log recover, last ckpt lsn: 34815 ...
redo log recover finished
ndct db load finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.
5.设置oguid
[dmdba@dm01 ~]$ disql SYSDBA/SYSDBA:5290
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 527.648(毫秒). 执行号:1.
SQL> sp_set_oguid(453332);
DMSQL 过程已成功完成
已用时间: 2.599(毫秒). 执行号:2.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 4.981(毫秒). 执行号:3.
6.修改数据库的模式
SQL> alter database primary;
操作已执行
已用时间: 3.250(毫秒). 执行号:0.
2.备库修改
1.修改dm.ini文件
在 DW_P 机器上配置主库的实例名为 GRP1_RWW_01, dm.ini 参数修改如下:
#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16
INSTANCE_NAME = DM02
PORT_NUM = 5291 #数据库实例监听端口DM 数据守护与读写分离集群 V4.0
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
2.配置dmmal.ini
[dmdba@dm02 DMRWW]$ cat 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 = 192.168.10.119 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.2.10.119 #实例的对外服务 IP 地址
MAL_INST_PORT = 5290 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = DM02
MAL_HOST = 192.168.10.221
MAL_PORT = 61142
MAL_INST_HOST = 10.2.10.221
MAL_INST_PORT = 5291
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
3.配置dmarch.ini
[dmdba@dm02 DMRWW]$ cat dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments
ARCH_WAIT_APPLY = 0
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY #即时归档类型
ARCH_DEST = DM01 #即时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdbms/data/DMRWW/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 0
3. 配置dmwatcher.ini
[dmdba@dm02 DMRWW]$ cat dmwatcher.ini
[GRP1]
DW_TYPE =GLOBAL #全局守护类型
DW_MODE = MANUAL #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453332 #守护系统唯一 OGUID 值
INST_INI = /home/dmdba/dmdbms/data/DMRWW/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0
4.启动备库到mount状态
[dmdba@dm02 ~]$ cd dmdbms/bin
[dmdba@dm02 bin]$ ./dmserver ../data/DMRWW/dm.ini mount
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 1-1-87-20.06.01-122565-ENT startup...
Database mode = 0, oguid = 0
License will expire on 2021-06-01
file lsn: 34815
ndct db load finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.
5.设置oguid
[dmdba@dm02 bin]$ ./disql SYSDBA/SYSDBA:5290
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 360.044(毫秒). 执行号:1.
SQL> sp_set_oguid(453332);
DMSQL 过程已成功完成
已用时间: 2.776(毫秒). 执行号:2.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 4.306(毫秒). 执行号:3.
6.修改数据库的模式
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 2.677(毫秒). 执行号:4.
SQL> alter database standby;
操作已执行
已用时间: 3.505(毫秒). 执行号:0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 4.300(毫秒). 执行号:5.
四、配置默认监视器在备库(实际生产钟单独创建机器)
1.配置dmmonitor.ini文件
MON_DW_Confirm = 0 #确认监视器模式,0表示观察监视器
MON_LOG_PATH = /home/dmdba/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453332 #组GRP1的唯一OGUID值
#以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置
#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 192.168.10.119:52142
MON_DW_IP = 192.168.10.119:52142
五、启动主备库dmwatcher.ini
1.启动主库
[dmdba@dm01 bin]$ ./dmwatcher /home/dmdba/dmdbms/data/DMRWW/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
2.启动备库
[dmdba@dm01 bin]$ ./dmwatcher /home/dmdba/dmdbms/data/DMRWW/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
3.查看监视器状态
<<DATABASE GLOBAL INFO:>>
IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.10.119 52141 2020-10-24 12:56:34 GLOBAL VALID OPEN DM01 OK 1 1 OPEN PRIMARY DSC_OPEN TIMELY VALID
EP INFO:
INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
5290 OK DM01 OPEN PRIMARY 0 0 TIMELY VALID 3943 36073 3943 36073 NONE
<<DATABASE GLOBAL INFO:>>
IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.10.221 52142 2020-10-24 12:56:34 GLOBAL VALID OPEN DM02 OK 1 1 OPEN STANDBY DSC_OPEN TIMELY VALID
EP INFO:
INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
5291 OK DM02 OPEN STANDBY 0 0 TIMELY VALID 3940 36073 3940 36073 NONE
六、配置系统服务
root用户:
主库:
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher –watcher_ini /home/dmdba/dmdbms/data/DMRWW/dmwatcher.ini -p dm01
备库:
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher –watcher_ini /home/dmdba/dmdbms/data/DMRWW/dmwatcher.ini -p dm02
/home/dmdba/dmdbms/bin/DmWatcherServicedm01 start
/home/dmdba/dmdbms/bin/DmWatcherServicedm02 start
七、启动和关闭集群的方法
关闭:
先关闭备库的守护进程,
DmWatcherServicedm02 stop
关闭主库的守护进程
DmWatcherServicedm01 stop
关闭主库实例:
DmServicedm01 stop
关闭备库的实例
DmServicedm02 stop
启动:
先启动主库守护进程,再启动备库守护进程。
因为dmwatcher.ini中配置了INST_AUTO_RESTART = 1 ,守护进程启动后,会自动拉起数据库实例。