达梦数据库
达梦数据库DM8安装流程
创建达梦数据库实例
达梦数据库实例优化与配置
模式和用户及库之间的概念理解
常见数据库运维问题
达梦数据库日常运维指令
达梦8主从集群同步模式部署测试
客户端连接达梦数据库的方式(dm_svc)
删除达梦数据库实例
达梦数据库disql操作存储过程
本文档使用 MrDoc 发布
-
+
home page
达梦数据库实例优化与配置
# 实例参数优化 实例参数优化可通过手动方式和自动方式进行调整。为增强参数优化的适用性,降低参数修改的过程风险,建议使用达梦数据库提供的 `AutoParaAdj.sql` 脚本进行实例参数优化。 参数自动优化脚本:[【附件】AutoParaAdj.sql](/media/attachment/2023/04/AutoParaAdj.sql) 下载sql文件到数据库主机/home/dmdba/目录后,执行如下命令: ``` # 根据实际主机资源修改脚本参数 mems=$(free -m|grep Mem|awk '{print $2}') # 实际的内存大小,单位MB cpus=$(cat /proc/cpuinfo |grep processor|wc -l) # 实际的cpu核数 sed -i "s/v_mem_mb int:=.*;/v_mem_mb int:= $mems;/g" AutoParaAdj.sql sed -i "s/v_cpus int:=.*;/v_cpus int:= $cpus;/g" AutoParaAdj.sql # 使用disql或管理工具执行脚本优化 SQL> set serveroutput on SQL> start /home/dmdba/AutoParaAdj.sql ``` 脚本执行成功: ![](/media/202304/2023-04-06_124409_2290230.36066891803285284.png) >**==注意==**: 脚本执行成功后,须重启数据库使参数修改生效。 # 开启本地归档 ## 归档概述 在达梦数据库归档模式下,数据库会同时将重做日志写入联机日志文件和归档日志文件中分别进行存储。采用归档模式会对系统的性能产生影响,然而,当系统一旦出现介质故障,如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻, 也可以还原到指定的时间点,而如果没有归档日志文件,则只能利用备份进行恢复。因此,系统在归档模式下运行会更安全,当出现故障时,丢失数据的可能性更小。 ## 开启方法 开启数据库归档可通过两种方式实现。 - 方式一:通过 SQL 命令方式开启归档 - 方式二:通过修改数据库配置文件方式开启归档。 下面详细介绍这两种配置方式。 数据库归档目录示例位置:`/dmArchive` | 参数名称 | 默认值 | 推荐值 | 说明 | |------------------|-----|--------|-----------------------------------------------------| | ARCH_FILE_SIZE | 128 | 2048 | 本地单个归档文件最大值(单位:M)。 | | ARCH_SPACE_LIMIT | 0 | 102400 | 归档大小上限,0 表示无限制(按数据量的 1/5 保留,例如 500G 数据,保留 100G 归档)。 | ### 方法1:SQL 命令方式开启 登录数据库执行如下 SQL 语句: ```SQL #示例为默认账密。根据实际修改 [dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@localhost:3306 ALTER DATABASE MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmArchive, TYPE=LOCAL, FILE_SIZE=2048, SPACE_LIMIT=102400'; ALTER DATABASE OPEN; ``` ### 方法2:修改配置方式开启 修改数据库实例的 dm.ini文件中 ARCH_INI 参数值 ```bash # 开启归档功能 sed -i 's/ARCH_INI.*=.*0/ARCH_INI = 1/g' dm.ini ``` 在数据库实例目录下,新增文件归档配置文件 ```bash test -f dmarch.ini && rm dmarch.ini.bak; mv dmarch.ini dmarch.ini.bak tee -a dmarch.ini << 'EOF' #DaMeng Database Archive Configuration file #this is comments ARCH_WAIT_APPLY = 0 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /data/archiveDm8 ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 102400 ARCH_FLUSH_BUF_SIZE = 0 ARCH_HANG_FLAG = 1 EOF chown dmdba.dmdba dmarch.ini ``` **-- 最后重启数据库完成归档配置--** >**==注意: ==** >1. 相关路径及归档大小上限参数需按照实际要求配置,建议以生产环境每日增量数据的 1 至 2 倍设置归档上限; >2. 不论使用以上哪种方法,均需要对数据库进行 mount 或重启操作。 # 配置 SQL 日志 ## SQL 日志概述 SQL 日志内容包含系统各会话执行的 SQL 语句、参数信息、错误信息等。SQL 跟踪日志主要用于分析错误和分析性能问题,基于跟踪日志可以对系统运行状态有一个分析,比如,可以挑出系统现在执行速度较慢的 SQL 语句,进而对其进行优化。 打开 SQL 日志会对系统的性能会有较大影响,一般用于查错和调优的时候才会打开,默认情况下系统是关闭 SQL 跟踪日志的。若需要 SQL 跟踪日志但对日志的实时性没有严格的要求,又希望系统有较高的效率,可以设置 sqllog.ini 参数 `SQL_TRACE_MASK` 和 `MIN_EXEC_TIME` 只记录关注的相关记录,减少日志总量;设置 sqllog.ini 参数 `ASYNC_FLUSH` 打开 SQL 日志异步刷盘功能,以提高系统性能。 ## 开启 SQL 日志 创建 SQL 日志存放目录。 ``` su - dmdba mkdir -p /sqlLogCommit ``` 检查 SVR_LOG 参数。 ``` select * from v$parameter where name like 'SVR_LOG%'; LINEID ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION ---------- ----------- ------------ ---- -------- --------- ---------- --------------------------------------------------------------------------------------------------------------------------- DEFAULT_VALUE ISDEFAULT ------------- ----------- 1 550 SVR_LOG_NAME SYS SLOG_ALL SLOG_ALL SLOG_ALL Using which sql log sys in sqllog.ini NULL 1 2 553 SVR_LOG SYS 0 0 0 Whether the Sql Log sys Is open or close. 1:open, 0:close, 2:use switch and detail mode. 3:use not switch and simple mode. 0 1 used time: 25.376(ms). Execute id is 500. ``` 修改实例路径下 sqllog.ini 文件如下: 设置 sql 日志为异步,按照文件大小进行切换,每个 1024M,20 个文件循环写。 ``` # sql日志生成路径 Path='/sqlLogCommit' sed -i "s#FILE_PATH.*=.*#FILE_PATH = $Path#g" sqllog.ini # 每个日志文件大小 sed -i 's/SWITCH_LIMIT.*=.*/SWITCH_LIMIT = 2048/g' sqllog.ini # 循环收集20个文件,可以根据实际情况做调整 sed -i 's/FILE_NUM.*=.*/FILE_NUM = 20/g' sqllog.ini ``` 调用存储过程使其配置文件生效,并开启 SQLLOG 日志。 ```sql SQL> SP_REFRESH_SVR_LOG_CONFIG(); SQL> sp_set_para_value(1,'SVR_LOG',1); --检查 SVR_LOG 参数。 SQL> select * from v$parameter where name like 'SVR_LOG'; ``` 检查日志生成情况。 ``` ls /sqlLogCommit ``` # 数据库备份 ## 备份概述 达梦数据库中的数据存储在数据库的物理数据文件中,数据文件按照页、簇和段的方式进行管理,数据页是最小的数据存储单元。任何一个对达梦数据库的操作,其根本都是对某个数据文件页的读写操作。因此,DM 备份的本质就是从数据库文件中拷贝有效的数据页保存到备份集中,这里的有效数据页包括数据文件的描述页和被分配使用的数据页。 数据库备份可按照实际需求进行手动备份或设置定时备份。 ## 设置手动备份 手动备份详细内容可参考数据库安装目录 doc 路径下《DM8 备份与还原》手册。 ## 设置定时备份 达梦数据库提供定时备份功能。在设置定时备份前,应依据实际业务需求和数据量大小,采用不同的备份策略,达梦数据库常用备份策略包括 - 全量备份 + 删除 - 全量备份 + 增量备份 + 删除 ## 1. 全量备份+删除(推荐) >此备份策略适用于数据量小于 100G 的场景下。注意开启数据库归档,确定备份路径。 备份示例: 1、设置每天 23:00 全量备份 2、删除 30 天前的全量备份 3、备份路径为 /opt/dmdbms/data/DAMENG/bak。 >**==注意==**: >DM8 数据库中,使用命令行配置备份任务时,V8.1.1.190 版本前后 `SP_ADD_JOB_STEP` 的 `SUCC_ACTION` 和 `FAIL_ACTION` 参数可能存在一定差异,详细可参考达梦数据库安装目录 doc 路径下《作业系统使用手册》。 ### 命令行配置备份 如下涉及到名称项建议均采用英文表示 ```SQL call SP_INIT_JOB_SYS(1); call SP_CREATE_JOB('任务名称',1,0,'',0,0,'',0,'任务描述'); call SP_JOB_CONFIG_START('任务名称'); call SP_ADD_JOB_STEP('任务名称', '步骤名称', 6, '备份路径', 3, 1, 0, 0, NULL, 0); call SP_ADD_JOB_STEP('任务名称', '步骤名称', 0, 'SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''备份路径''); CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'',SYSDATE-保留备份天数);', 1, 1, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('任务名称', '任务调度名称', 1, 1, 1, 0, 0, '每日执行的24小时制时:分:秒', NULL, '任务开始时间:yyyy-mm-dd hh:mm:ss', NULL, ''); call SP_JOB_CONFIG_COMMIT('任务名称'); ``` ## 2. 全量备份+增量备份+删除 此备份策略适用于数据量大于 100G 并且小于 3T 的场景下。注意开启数据库归档,确定备份路径。 例如:设置每月第一个周六 23:00 全量备份。每天(除周六) 23:00 增量备份、删除 30 天前的增量备份、删除 40 天前的全量备份。全量备份路径为 /opt/dmdbms/data/DAMENG/bak/all,增量备份路径为 /opt/dmdbms/data/DAMENG/bak/add。 ### 命令行配置备份 ```sql --设置 2 分钟后自动进行一次全量备份 call SP_INIT_JOB_SYS(1); call SP_CREATE_JOB('bakall_one',1,0,'',0,0,'',0,'执行一次全量备份'); call SP_JOB_CONFIG_START('bakall_one'); call SP_ADD_JOB_STEP('bakall_one', 'bakall', 6, '01020000/opt/dmdbms/data/DAMENG/bak/all', 1, 1, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('bakall_one', 'bakall_one_time01', 1, 0, 0, 0, 0, NULL, NULL, SYSDATE()+0.0014, NULL, ''); call SP_JOB_CONFIG_COMMIT('bakall_one'); --设置全量备份 call SP_CREATE_JOB('bakall',1,0,'',0,0,'',0,'每月第一个周六23:00全量备份'); call SP_JOB_CONFIG_START('bakall'); call SP_ADD_JOB_STEP('bakall', 'bakall', 6, '01020000/opt/dmdbms/data/DAMENG/bak/all', 1, 1, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('bakall', 'bakall_time01', 1, 4, 1, 7, 0, '23:00:00', NULL, '2019-01-01 01:01:01', NULL, ''); call SP_JOB_CONFIG_COMMIT('bakall'); --设置增量备份 + 删除备份 call SP_CREATE_JOB('bakadd_delbak',1,0,'',0,0,'',0,'每天(除周六)23:00增量备份、删除30天前的增量备份、删除40天前的全量备份'); call SP_JOB_CONFIG_START('bakadd_delbak'); call SP_ADD_JOB_STEP('bakadd_delbak', 'bakadd', 6, '11020000/opt/dmdbms/data/DAMENG/bak/all|/opt/dmdbms/data/DAMENG/bak/add', 3, 1, 0, 0, NULL, 0); call SP_ADD_JOB_STEP('bakadd_delbak', 'delbak', 0, 'SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/opt/dmdbms/data/DAMENG/bak/add''); CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'',SYSDATE-30); SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/opt/dmdbms/data/DAMENG/bak/all''); CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'',SYSDATE-40);', 1, 1, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('bakadd_delbak', 'bakadd_delbak_time01', 1, 2, 1, 63, 0, '23:00:00', NULL, '2019-01-01 01:01:01', NULL, ''); call SP_JOB_CONFIG_COMMIT('bakadd_delbak'); ``` ## 常用备份参数 ### 压缩 达梦支持对备份数据进行压缩,在执行备份时,可以指定不同的压缩级别,以获得不同的数据压缩比。默认情况下,备份是不进行压缩的。达梦共支持 9 个级别(1~9 级)的压缩处理,级别越高压缩比越高,但相应的压缩速度越慢、CPU 开销越大。考虑到备份效率及备份文件大小,建议压缩级别为 1。 ### 并行 达梦数据库可以进行并行备份,用户可以在备份步骤中指定并行数。考虑到备份过程中对于数据库的压力以及有可能和业务同时进行,达梦共支持 10 个级别(0~9 级),建议选择 2,可在尽可能在不影响业务的情况下,尽快完成数据备份
Nathan
April 6, 2023, 4:13 p.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
PDF文件
Docx文件
share
link
type
password
Update password