首页 > 架构设计 > 数据架构 > 达梦数据库基础知识(一)数据库物理存储结构
达梦数据库物理结构由.ini配置文件,控制文件,数据文件,重做日志文件、归档日志文件以及用于告警和事件跟踪的各类告警日志等组成。
1、.ini配置文件
配置文件是达梦数据库用来设置功能选项的一些文本文件的集合,配置文件以ini 为扩
展名,它们具有固定的格式,用户可以通过修改其中的某些参数取值来达成如下两个方面的功能:启用/禁用特定功能项;针对当前系统运行环境设置更优的参数值以提升系统性能。
1) dm.ini配置文件
是达梦数据库最基础的配置文件,数据库服务启动,读取第一个文件是dm.ini,并根据dm.ini内的各项配置参数,启动数据库实例及装载数据库,主要可以配置内容可参考官方手册。
当dm.ini 中的某参数值设置为非法值时,若设置值与参数类型不兼容,则参数实际取值为默认值;若设置值小于参数取值范围的最小值,则实际取值为最小值;若设置值大于参数取值范围的最大值,则实际取值为最大值。
参数属性分为三种:静态、动态和手动。
静态,可以被动态修改,修改后重启服务器才能生效;
动态,可以被动态修改,修改后即时生效。动态参数又分为会话级和系统级两种。会话级参数被修改后,新参数值只会影响新创建的会话,之前创建的会话不受影响;系统级参数的修改则会影响所有的会话;
手动,不能被动态修改,必须手动修改dm.ini 参数文件,然后重启才能生效。
主要的参数及相关的操作介绍,后续会有章节详述。
2) dmmal.ini
dmmal.ini 是 MAL 系统的配置文件,该文件用于配置同步复制,同步的所有节点该参数文件都应该一致。
3) dmarch.ini
dmarch.ini用于配置本地归档和远程归档的参数,开归档功能,必须配置此参数文件。
4) dm_svc.conf
dm_svc.conf 文件中包含数据库各接口及客户端需要配置的一些参数,属于监听及用户接入的参数配置。
5) sqllog.ini
sqllog.ini用于配置sql日志参数,当dm.ini 参数 SVR_LOG=1 时,该参数开始生效
sql 日志可记录所有连入会话执行操作的 sql 语句,执行状态,报错信息等。
另外,还有 dmrep.ini 、 dmllog.ini 、 dmtimer.ini 用于配置数据库复制节点、逻辑日志、定时器等。
2、控制文件
每个达梦数据库都有一个名为dm.ctl 的控制文件。控制文件是一个二进制文件,它记
录了数据库必要的初始信息,其中主要包含以下内容:
1) 数据库名称;
2) 数据库服务器模式;
3) OGUID 唯一标识;
4)数据库服务器版本;
5)数据文件版本;
6)数据库的启动次数;
7)数据库最近一次启动时间;
8)表空间信息,包括表空间名,表空间物理文件路径等,记录了所有数据库中使用的表空间,数组的方式保存起来;
9)控制文件校验码,校验码由数据库服务器在每次修改控制文件后计算生成,保证控制文件合法性,防止文件损坏及手工修改。
3、数据文件
数据文件以.dbf 为扩展名,它是数据库中最重要的文件类型,一个数据文件对应磁盘上的一个物理文件或者达梦分布式数据库中的一个逻辑文件,数据文件是真实数据存储的地方,每个数据库至少有一个与之相关的表空间。在实际应用中,一个表空间通常有多个数据文件,一个数据文件只从属于一个表空间。
当数据文件空间用完时,它可以自动扩展。可以在创建数据文件时通过MAXSIZE
参数限制其扩展量,当然,也可以不限制。但是,数据文件的大小最终会受物理磁盘大小的
限制。在实际使用中,一般不建议使用单个巨大的数据文件,为一个表空间创建多个较小的
数据文件是更好的选择。
数据文件在物理上按照页、簇和段的方式进行管理,关于表空间、页、簇和段的概念将在下一章《达梦数据库基础知识(一)数据库逻辑结构》中介绍。
4、重做日志文件
重做日志(即 REDO 日志)指在 达梦 数据库中添加、删除、修改对象,或者改变数据, 数据库 都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件中。重做日志文件以 log 为扩展名。每个数据库实例必须至少有 2 个重做日志文件,默认两个日志文件为 DAMENG01.log 、 DAMENG02.log ,这两个文件循环使用。
重做日志文件的作用有三个:
1) 记录了数据库所有ddl和dml操作。数据库主备同步,DMHS数据库同步都是从源端数据库采集重做日志或归档日志数据库,然后在目标端应用;
2) 可以避免数据提交后直接写入数据文件。对所有数据库来说,IO操作都是最昂贵的,先将操作提交至重做日志(log buff),然后在检查点将变更批量写入磁盘(数据文件),可极大提升数据库性能;
3) 实例恢复和介质恢复。理想情况下,数据库系统不会用到重做日志文件中的信息。然而现实世界总是充满了各种意外,比如电源故障、系统故障、介质故障,或者数据库实例进程被强制终止等,数据库缓冲区中的数据页会来不及写入数据文件。这样,在重启 DM 实例时,通过重做日志文件中的信息,就可以将数据库的状态恢复到发生意外时的状态。
5、归档日志文件
日志文件分为联机日志文件和归档日志文件。DM 数据库可以在归档模式和非归档模式下运行。非归档模式下,数据库会只将重做日志写入联机日志文件中进行存储;归档模式下,数据库会同时将重做日志写入联机日志文件和归档日志文件中分别进行存储。
归档日志文件,就是在归档模式下,重做日志被连续写入到归档日志后,所生成了归档
日志文件。归档日志文件以归档时间命名,扩展名也是 log。但只有在归档模式下运行时,数据库才会将重做日志写入到归档日志文件中。采用归档模式会对系统的性能产生影响,然而系统在归档模式下运行会更安全,当出现故障时其丢失数据的可能性更小,这是因为一旦出现介质故障,如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点,而如果没有归档日志文件,则只能利用备份进行恢复。
6、告警日志文件
1)事件日志文件
数据库系统在运行过程中,会在log 子目录下产生一个“dm_实例名_日期”命名的事件日志文件。事件日志文件对数据库运行时的关键事件进行记录,如系统启动、关闭、内存申请失败、IO 错误等一些致命错误。事件日志文件主要用于系统出现严重错误时进行查看并定位问题。事件日志文件随着数据库服务的运行一直存在。事件日志文件打印的是中间步骤的信息,所以出现部分缺失属于正常现象。
2) SQL 日志文件
用户在dm.ini 中配置SVR_LOG 参数后就会打开SQL 日志。
SQL 日志内容包含系统各会话执行的SQL 语句、参数信息、错误信息等。跟踪日志主要用于分析错误和分析性能问题,基于跟踪日志可以对系统运行状态有一个分析,比如,可以挑出系统现在执行速度较慢的SQL 语句,进而对其进行优化。
打开SQL 日志会对系统的性能会有较大影响,一般用于查错和调优的时候才会打开,默认情况下系统是关闭跟踪日志的。
3) 逻辑日志文件
如果在数据库上配置了复制功能,复制源就会产生逻辑日志文件。逻辑日志文件是一个流式的文件,它有自己的格式,页,簇和段的管理之下。
逻辑日志文件内部存储按照复制记录的格式,一条记录紧接着一条记录,存储着复制源端的各种逻辑操作。用于发送给复制目的端。
4) 物理逻辑日志文件
物理逻辑日志,是按照特定的格式存储的服务器的逻辑操作,专门用于DBMS_LOGMNR包挖掘获取数据库系统的历史执行语句。当开启记录物理逻辑日志的功能时,这部分日志内容会被存储在重做日志文件中。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29210902/viewspace-2839238/ ,如需转载,请注明出处,否则将追究法律责任。