- 环境检测
- 搭建环境
软硬件配置情况 | |
IP | 192.168.124.129(主机) 192.168.124.130(备机) |
操作系统 | CentOS Linux release 7.6.1810 (Core) |
CPU | Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz |
存储 | 本地磁盘60GB /dmdata DD测速,32k,平均4M/S,已经向用户提出磁盘速度太慢 |
内存 | 4G |
网卡带宽 | 100M |
数据库版本 | DM Database Server 64 V8 8.1 安全版 DB Version: 0x7000c 05134284058-20230713-195546-20046 |
-
- 系统信息检查
磁盘调度信息
[root@master .ssh]# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
Cpu信息
[root@master .ssh]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 2
座: 2
NUMA 节点: 1
厂商 ID: GenuineIntel
CPU 系列: 6
型号: 158
型号名称: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
步进: 13
CPU MHz: 2592.001
BogoMIPS: 5184.00
超管理器厂商: VMware
虚拟化类型: 完全
L1d 缓存: 32K
L1i 缓存: 32K
L2 缓存: 256K
L3 缓存: 12288K
NUMA 节点0 CPU: 0-3
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat spec_ctrl intel_stibp flush_l1d arch_capabilities
内存信息
[root@master .ssh]# free -h
total used free shared buff/cache available
Mem: 3.7G 755M 2.7G 11M 280M 358M
Swap: 2.0G 0B 2.0G
-
- 关闭seilnux
vim /etc/selinux/config
SELINUX=DISABLED
SELINUXTYPE=targeted
##生效
setenforce 0
-
- 关闭防火墙
systemctl stop firewalld
systemctl status firewalld
-
- 系统时间
[root@master .ssh]# timedatectl | grep "Time zone"
Time zone: Asia/Shanghai (CST, +0800)
-
- 磁盘测速
dd if=/dev/zero of=test bs=32k count=4k oflag=dsync
- 修改配置
2.1 limit.conf
使用root用户进行修改 vim /etc/security/limits.conf
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
dmdba soft stack 65536
dmdba hard stack 65536
2.2 sysctl.conf
vim /etc/sysctl.conf kernel.shmall = 4294967296 fs.file-max = 6815744 fs.aio-max-nr = 1048576 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 vm.dirty_ratio = 80 vm.dirty_expire_centisecs = 500 vm.dirty_writeback_centisecs = 100 kernel.core_pattern = /dmdata/core/core.%p vm.swappiness=10 vm.dirty_background_ratio = 0 vm.min_free_kbytes = 2097152 |
刷新
sysctl -p
2.3 新建用户
groupadd dinstall -g 2001
useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba
passwd dmdba
用户设置密码
2.4 实例存储
建议使用独立挂载
mkdir /dmdata
chown -R dmdba:dinstall /dmdata
chmod -R 775 /dmdata
chown -R dmdba:dinstall /home/dmdba/
2.5 环境变量配置
vim /etc/profile
export DM_HOME=/home/dmdba/dmdbms
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
- 数据库安装(主机+备机)
3.1 ISO文件挂载
3.1.1 使用root用户挂载iso镜像到/dmiso
mkdir -p /dmiso
mount -o loop dm8_20230713_x86_rh6_64.iso /dmiso
3.1.2 切换到dmdba用户安装数据库
su dmdba
/dmiso/DMInstall.sh -i
请选择安装语言(C/c:中文 E/e:英文) [C/c]:c
解压安装程序..........
欢迎使用达梦数据库安装程序
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:y
/home/dmdba/dm.key
是否设置时区? (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
所需空间: 1869M
请选择安装目录 [/home/dmdba/dmdbms]:
可用空间: 15G
是否确认安装路径(/home/dmdba/dmdbms)? (Y/y:是 N/n:否) [Y/y]:y
安装前小结
安装位置: /home/dmdba/dmdbms
所需空间: 1869M
可用空间: 15G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):y
2023-10-13 17:15:23
[INFO] 安装 基础 模块...
2023-10-13 17:15:23
[INFO] 安装达梦数据库...
2023-10-13 17:16:08
[INFO] 安装 服务器 模块...
2023-10-13 17:16:15
[INFO] 安装 客户端 模块...
2023-10-13 17:17:20
[INFO] 安装 驱动 模块...
2023-10-13 17:17:44
[INFO] 安装 手册 模块...
2023-10-13 17:17:49
[INFO] 安装 服务 模块...
2023-10-13 17:17:50
[INFO] 移动日志文件。
2023-10-13 17:17:50
[INFO] 安装达梦数据库完成。
请以root系统用户执行命令:
/home/dmdba/dmdbms/script/root/root_installer.sh
安装结束
3.1.3切换权限至root用户权限运行脚本
/home/dmdba/dmdbms/script/root/root_installer.sh
3.2 初始化实例
主机:
cd /home/dmdba/dmdbms/bin
./dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=AISITE instance_name=dw1 SYSDBA_PWD="dzy020131" SYSAUDITOR_PWD="dzy020131" BLANK_PAD_MODE=0 LENGTH_IN_CHAR=0
备机
cd /home/dmdba/dmdbms/bin
./dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=AISITE instance_name=dw2 SYSDBA_PWD="dzy020131" SYSAUDITOR_PWD="dzy020131" BLANK_PAD_MODE=0 LENGTH_IN_CHAR=0
3.3 注册服务
主机和备机都要注册
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -p AISITE -dm_ini /dmdata/AISITE/dm.ini
3.4 启动主机和备机的DM8服务
systemctl start DmServiceAISITE
这里注意要把/dmdata和/home/dmdba的权限给到dmdba,不然无法成功启动。
- 参数调优(主机和备机相同操作)
4.1 运行调优脚本
SQL>start /home/dmdba/package/AutoParaAdj3.6_dm8.sql
4.2 修改参数
alter system set 'SORT_FLAG'=0 both; alter system set 'ENABLE_ENCRYPT' = 0 spfile; alter system set 'MAX_SESSIONS'=5000 spfile; |
- 主备库搭建
5.1 主库脱机备份
DmServiceAISITE stop cd /home/dmdba/dmdbms/bin ./dmrman RMAN> backup database '/dmdata/AISITE/dm.ini' backupset ' /dmdata/dmbak/bakfull'; |
5.2 复制主库的全库备份集到备库恢复
主备执行scp命令 这里要保证备机存在/dmdata/dmbak/bakfull目录否则会传输失败 scp -r /dmdata/dmbak/bakfull dmdba@192.168.124.130:/dmdata/dmbak/bakfull/ 备库执行恢复还原修改魔术值命令 systemctl stop DmServiceAISTE $ cd /home/dmdba/dmdbms/bin $ ./dmrman 执行 restore: RMAN> restore database '/dmdata/AISITE/dm.ini' from backupset '/dmdata/dmbak/bakfull/'; 完成后执行 recover: RMAN> recover database '/dmdata/AISITE/dm.ini' from backupset '/dmdata/dmbak/bakfull'; 最后执行 recover update db_magic。 RMAN> recover database '/dmdata/AISITE/dm.ini' update db_magic; |
5.3 配置文件
守护配置文件添加完成,就可以注册守护进程了,按照这个顺序部署
修改前备份dm.ini文件,修改后备份整个实例
5.3.1主库dm.ini(修改)
vim /dmdata/AISITE/dm.ini //可用/定位参数 INSTANCE_NAME = dw1 MAL_INI = 1 ARCH_INI = 1 ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 |
5.3.2备库dm.ini(修改)
vim /dmdata/AISITE/dm.ini INSTANCE_NAME = dw2 MAL_INI = 1 ARCH_INI = 1 ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 |
5.3.3主备dmarch.ini(新建)
$ vim /dmdata/AISITE/dmarch.ini [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = dw2 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/arch ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 20480 |
5.3.4备库dmarch.ini(新建)
$ vim /dmdata/AISITE/dmarch.ini [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = dw1 #实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dmdata/arch #本地归档文件存放路径 ARCH_FILE_SIZE = 1024 #单位 MB,本地单个归档文件最大值 ARCH_SPACE_LIMIT = 20480 #单位 MB,0 表示无限制,范围 1024~4294967294 MB |
5.3.5主备库的dmmal.ini(新建)文件一致,如下
$ vim /dmdata/AISITE/dmmal.ini MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 15 #判定 MAL 链路断开的时间 [MAL_INST1] MAL_INST_NAME = dw1 #与 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST = 192.168.124.129 #MAL 系统监听 TCP 内部网络 IP MAL_PORT = 7336 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST = 192.168.124.129 #实例的对外服务 IP 地址 MAL_INST_PORT = 5236 #与 dm.ini 中的 PORT_NUM 一致 MAL_DW_PORT = 7436 #实例对应的守护进程监听 TCP 端口 MAL_INST_DW_PORT = 7536 [MAL_INST2] MAL_INST_NAME = dw2 #与 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST = 192.168.124.130 # MAL 系统监听 TCP 内部网络 IP MAL_PORT = 7336 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST = 192.168.124.130 #实例的对外服务 IP 地址 MAL_INST_PORT = 5236 #与 dm.ini 中的 PORT_NUM 一致 MAL_DW_PORT = 7436 #实例对应的守护进程监听 TCP 端口 MAL_INST_DW_PORT = 7536 |
5.3.6主备库的dmwatcher.ini(新建)文件一致,如下
$ vim /dmdata/AISITE/dmwatcher.ini [GRP_DW] DW_TYPE = GLOBAL DW_MODE = MANUAL DW_ERROR_TIME = 30 INST_RECOVER_TIME = 60 INST_ERROR_TIME = 20 INST_OGUID = 453331 INST_INI = /dmdata/AISITE/dm.ini INST_AUTO_RESTART = 1 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver RLOG_SEND_THRESHOLD = 0 RLOG_APPLY_THRESHOLD = 0 |
5.4 注册守护进程
主备库都注册守护进程服务,以root账号注册
cd /home/dmdba/dmdbms/script/root ./dm_service_installer.sh -t dmwatcher -p AISITE -watcher_ini /dmdata/AISITE/dmwatcher.ini |
- 修改数据库模式与OGUID
6.1修改数据库后台服务默认启动的状态为mount
如果环境开启多窗口很不方便,所以采用后台服务启动为mount状态(主备都改)
进行到这一步之前请再次检查防火墙以及selinux的配置情况
cd /home/dmdba/dmdbms/bin vim DmServiceAISITE 修改这个参数START_MODE=mount $ cat DmServiceAISITE | grep START_MODE START_MODE=mount |
6.2修改模式与OGUID
主备执行 DmServiceAISITE start SQL> sp_set_oguid(453331); 主库执行修改模式为primary SQL> alter database primary; 备库执行修改模式为standby SQL> alter database standby; |
- 测试集群同步功能
启动集群
主备停止数据库服务,修改mount状态为open,启动主备数据库服务,启动守护进程
$ DmServiceAISITE stop $ cd /home/dmdba/dmdbms/bin $ cat DmServiceAISITE | grep START_MODE START_MODE=open $ DmServiceAISITE start $ DmWatcherServiceAISITE start |
测试集群数据同步
测试:主库建表插入数据是否能同步到备库
主库:密码用户已经修改 ![]() 备库 ![]() |
- 创建备份策略
8.1全备:
sp_init_job_sys(1); call sp_create_job('bakfull',1,0,'',0,0,'',0,''); call sp_job_config_start('bakfull'); call SP_ADD_JOB_STEP('bakfull', 'bak1', 6, '01020000/dmdata/dmbak', 3, 3, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('bakfull', 'std1', 1, 2, 1, 64, 0, '23:59:00', NULL, sysdate, NULL, ''); call SP_JOB_CONFIG_COMMIT('bakfull'); select id,name from sysjob.sysjobs; call SP_DBMS_JOB_RUN(1670604426); |
8.2增备:
call SP_CREATE_JOB('bakincr',1,0,'',0,0,'',0,''); call SP_JOB_CONFIG_START('bakincr'); call SP_ADD_JOB_STEP('bakincr', 'bak2', 6, '41010000/dmdata/dmbak|/dmdata/dmbak', 3, 3, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('bakincr', 'std2', 1, 2, 1, 63, 0, '23:59:00', NULL, sysdate, NULL, ''); call SP_JOB_CONFIG_COMMIT('bakincr'); select id,name from sysjob.sysjobs; call SP_DBMS_JOB_RUN(1670604427); |
8.3.删除备份:
call SP_CREATE_JOB('delbak',1,0,'',0,0,'',0,''); call SP_JOB_CONFIG_START('delbak'); call SP_ADD_JOB_STEP('delbak', 'bak1', 0, 'sf_bakset_backup_dir_add(''disk'',''/dmdata/dmbak''); call sp_db_bakset_remove_batch(''disk'',now()-30);', 3, 3, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('delbak', 'del01', 1, 1, 1, 0, 0, '23:59:00', NULL, sysdate, NULL, ''); call SP_JOB_CONFIG_COMMIT('delbak'); |
- 配置监视器
9.1配置监视器
主备都配置普通监视器
dmmonitor /dmdata/AISITE/dmmonitor.ini vim /dmdata/AISITE/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_DW] MON_INST_OGUID = 453331 MON_DW_IP = 192.168.124.129:7436 MON_DW_IP = 192.168.124.130:7436 |
9.2监视器测试主备切换
choose switchover grp_dw login switchover dw2 切换完成后检查新主备写是否有问题,新备库是否能同步 测试完成后再切换回dw1作为主库 |
社区地址:https://eco.dameng.com