DM的常规运维
总结了达梦数据库新手运维部分内容,如下:
1 常用的tool(图形化界面)
dbca.sh 创建新数据库实例使用较多
manager 管理数据库
dmservice.sh 启停数据库服务
console 控制台,包含了参数 、脱机备份等功能
dts 实现多种形式的数据导入
2 DM启动与停止
2.1启动DM节点
服务器1 IP:xx.xx.xx.71
cd /opt/dmdbms/bin
./DmServiceDM71 start
./DmWatcherServiceDM71 start
服务器2 IP:xx.xx.xx.72
cd /opt/dmdbms/bin
./DmServiceDM72 start
./DmWatcherServiceDM72 start
监视器IP:xx.xx.xx.xx
cd /opt/dmdbms/bin
./dmmonitor dmmonitor_noconfirm.ini
show命令查看集群正常后执行exit退出
./DmMonitorServiceDMM start
2.2 停止DM节点
监视器IP:xx.xx.xx.xx
cd /opt/dmdbms/bin
./dmmonitor dmmonitor_noconfirm.ini
show命令查看集群状态,例如71为主库,72为备库
./DmMonitorServiceDMM stop
服务器2 IP:xx.xx.xx.72
cd /opt/dmdbms/bin
./DmWatcherServiceDM72 stop
服务器1 IP:xx.xx.xx.71
cd /opt/dmdbms/bin
./DmWatcherServiceDM71 stop
./DmServiceDM71 stop
服务器2 IP:xx.xx.xx.72
./DmServiceDM72 stop
3 DM登录
cd /opt/dmdbms/bin
./disql username/password@服务名
4 DM环境检查
- 网络环境检查,数据库服务器都建议关闭防火墙
- 调整ulimit 设置(nofile,nproc)
- 配置NTP时钟同步
- 磁盘环境检查,确认磁盘大小以及挂载点,根据实际情况规划数据库程序安装位置以及数据文件、备份文件位置,归档日志文件大小限制以及位置。
5 DM命令行工具
disql |
命令行客户端工具 |
dimp/dexp |
数据导入导出工具 |
dmrman |
脱机备份恢复工具 |
6 监视集群状态监控
使用监视器对集群进行监控,具体命令如下:
1.help —显示帮助信息
2.exit —退出监视器
3.show version —显示监视器自身版本信息
4.show global info —显示所有组的全局信息
5.show database [group_name.]db_name —显示指定库的详细信息
6.show [group_name] —显示指定组的详细信息,如果未指定组名,则显示所有组的详细信息
7.show i[nterval] n —每隔n秒自动显示所有组的详细信息
8.q —取消自动显示
9.list [[group_name.]db_name] —列出指定组的库对应的守护进程配置信息,如果都未指定,则列出所有守护进程配置信息
10.show open info [group_name.]db_name —显示指定库的OPEN历史信息
11.show arch send info [group_name.]db_name —查看源库到指定组的指定库的归档同步信息(包含恢复间隔信息)
12.show apply stat [group_name.]db_name —查看指定组的指定库的日志重演信息
13.show monitor [group_name[.]] [db_name] —列出连接到指定守护进程的所有监视器信息
14.tip - -查看系统当前运行状态
15.login —登录监视器
16.logout —退出登录
- get takeover time —获取备库开始自动接管需要延迟等待的时间
18.startup dmwatcher [group_name] —启动指定组的守护进程监控功能
19.stop dmwatcher [group_name] —关闭指定组的守护进程监控功能
20.startup group [group_name] —启动指定组中的所有库
21.stop group [group_name] —关闭指定组中的所有库
22.kill group [group_name] —强制杀掉指定组中的所有活动库
23.choose switchover [group_name] —选择可切换为PRIMARY库的备库列表
24.choose takeover [group_name] —选择可接管故障PRIMARY库的备库列表
25.choose takeover force [group_name] —选择可强制接管故障PRIMARY库的备库列表
26.set group [group_name] auto restart on —打开指定组中所有节点的自动拉起功能
27.set group [group_name] auto restart off —关闭指定组中所有节点的自动拉起功能
- set group [group_name] para_name para_value
--修改指定组的所有守护进程的指定配置参数(同时修改ini文件和内存值),如果未指定组名,则通知所有组执行
--para_name指定参数名称,para_value指定参数值
--支持修改参数: DW_ERROR_TIME/INST_RECOVER_TIME/INST_ERROR_TIME/INST_AUTO_RESTART/
INST_SERVICE_IP_CHECK/RLOG_SEND_THRESHOLD/RLOG_APPLY_THRESHOLD
- set group [group_name] recover time time_value
--修改指定组中所有备库的恢复间隔为time_value指定的整数值(time_value取值:3~86400,单位为秒)(只修改守护进程内存值)
--如果未指定组名,则通知所有组执行
30.set group [group_name] arch invalid —修改指定组中所有备库的归档为无效状态,如果未指定组名,则通知所有组执行
31.clear group [group_name] arch send info —清理指定组中源库到所有备库(包括异步备库)的最近N次归档发送信息(通知源库执行),没有指定组名则通知所有组执行
--N值取主库dm.ini中配置的RLOG_SEND_APPLY_MON值和实际归档发送次数中的较小值
32.clear group [group_name] apply stat —清理指定组中所有备库的最近N次重演信息(通知组中所有备库执行),没有指定组名则通知所有组执行
--N值取备库dm.ini中配置的RLOG_SEND_APPLY_MON值和实际重演次数中的较小值
33.check recover [group_name.]db_name —检查指定组的指定库是否满足自动恢复条件
34.check open [group_name.]db_name —检查指定组的指定库是否满足自动OPEN条件
35.open database [group_name.]db_name —强制OPEN指定组的指定库
36.switchover [group_name[.]] [db_name] —切换指定组的指定库为PRIMARY库
37.takeover [group_name[.]] [db_name] —使用指定组的指定库接管故障PRIMARY库
38.takeover force [group_name[.]] [db_name] —使用指定组的指定库强制接管故障PRIMARY库
39.set database [group_name.]db_name recover time time_value
--修改指定组的指定库的恢复间隔为time_value指定的整数值(time_value取值:3~86400,单位为秒)(只修改守护进程内存值)
- set database [group_name.]db_name arch invalid
--修改指定组的指定库的归档为无效状态
41.detach database [group_name.]db_name —将指定的备库分离出守护进程组
42.attach database [group_name.]db_name —将分离出去的备库重新加回到守护进程组
43.startup dmwatcher database [group_name.]db_name
--启动指定库的守护进程监控功能
- stop dmwatcher database [group_name.]db_name
--关闭指定库的守护进程监控功能
- startup database [group_name.]db_name
--启动指定组的指定库
- stop database [group_name.]db_name
--关闭指定组的指定库
- kill database [group_name.]db_name
--强杀指定组的指定库
- clear database [group_name.]db_name arch send info
--清理指定组中主库到指定备库的最近N次归档发送信息(通知主库执行)
--N值取主库dm.ini中配置的RLOG_SEND_APPLY_MON值和实际归档发送次数中的较小值
- clear database [group_name.]db_name apply stat
--清理指定备库的最近N次重演信息(通知备库执行)
--N值取备库dm.ini中配置的RLOG_SEND_APPLY_MON值和实际重演次数中的较小值
7 DM用户创建与管理
- 创建用户
create user “USERNAME” identified by “PASSWORD” password_policy 2 limit failed_login_attemps 3, password_lock_time 1, password_grace_time 10 default tablespace “tablespace_name” default index tablespace “tablespace_name”;
- 删除用户
drop user username cascade;
- 修改密码
alter user username identified by “PASSWORD”;
8 DM配置文件
达梦数据库主要的配置文件有如下5个:
- dm.ini是DM数据库启动所必须的配置文件
- dmmal.ini是DM数据库 MAL系统的配置文件
- dmarch.ini是DM数据库Redo日志归档配置文件。
- dmwatcher.ini是DM数据库守护进程配置文件。
- dmmonitor.ini是DM数据库监视器配置文件。
- dm_svc.conf是包含DM各接口及客户端参数的文件,配置如下:
TIME_ZONE=(+480)
LANGUAGE=(en)
ZGRS=(xx.xx.xx.xx:5236,xx.xx.xx.xx:5236) #ZGRS为服务名
[ZGRS]
LOGIN_MODE=(1)
SWITCH_TIME=(6000)
SWITCH_INTERVAL=(10)
9 数据库状态和模式
DM数据库包含以下几种状态:
1. 配置状态(MOUNT):不允许访问数据库对象,只能进行控制文件维护、归档配置、数据库模式修改等操作;
2. 打开状态(OPEN):不能进行控制文件维护、归档配置等操作,可以访问数据库对象,对外提供正常的数据库服务;
3. 挂起状态(SUSPEND):与OPEN状态的唯一区别就是,限制磁盘写入功能;一旦修改了数据页,触发REDO日志、数据页刷盘,当前用户将被挂起。
OPEN状态与MOUNT和SUSPEND能相互转换,但是MOUNT和SUSPEND之间不能相互转换。
DM数据库包含以下几种模式:
1.普通模式(NORMAL):用户可以正常访问数据库,操作没有限制;
2.主库模式(PRIMARY):用户可以正常访问数据库,所有对数据库对象的修改强制生成REDO日志,在归档有效时,发送REDO日志到备库;
3.备库模式(STANDBY):接收主库发送过来的REDO日志并重做。数据对用户只读。
三种模式只能在MOUNT状态下设置,模式之间可以相互转换。
对于新初始化的库,首次启动不允许使用mount方式,需要先正常启动并正常退出,然后才允许mount方式启动。
一般情况下,数据库为NORMAL模式,如果不指定MOUNT状态启动,则自动启动到OPEN状态。
在需要对数据库配置时(如配置数据守护、数据复制),服务器需要指定MOUNT状态启动。当数据库模式为非NORMAL模式(PRIMARY、STANDBY模式),无论是否指定启动状态,服务器启动时自动启动到MOUNT状态。
10 DM的备份恢复
10.1 物理备份恢复
物理备份则直接扫描数据库文件,找出那些已经分配、使用的数据页,拷贝并保存到备份集中。物理备份过程中,不关心数据页的具体内容是什么,也不关心数据页属于哪一张表,只是简单的根据数据库文件系统的描述,来挑选有效的数据页。
10.1.1 数据库联机备份
数据库处于运行状态、并正常提供数据库服务情况下进行的备份操作,我们称为联机备份。
联机备份则使用客户端工具连接到数据库实例后,通过执行SQL语句进行;也可以通过配置作业,定时完成自动备份。联机备份不影响数据库正常提供服务,是最常用的备份手段之一。
联机备份时,可能存在一些处于活动状态的事务正在执行,为确保备份数据的一致性,需要将备份期间产生的REDO日志一起备份。因此,只能在配置本地归档、并开启本地归档的数据库上执行联机备份。
1.数据库全量备份
SQL>BACKUP DATABASE FULL BACKUPSET ‘/home/dm_bak/db_full_bak_01’;
2.数据库增量备份
SQL>BACKUP DATABASE INCREMENT WITH BACKUPDIR ‘/home/dm_bak’BACKUPSET ‘/home/dm_bak/db_increment_bak_02’;
10.1.2 数据库脱机备份
数据库处于关闭状态时进行的备份操作,被称为脱机备份。
使用DMRMAN工具进行脱机备份,并且支持对异常关闭的数据库进行脱机库备份。备份异常关闭的数据库,要求配置了本地归档,如果本地归档不完整,则需要先修复本地归档,再进行备份。
cd /opt/dmdbms/bin
./dmrman
RMAN>BACKUP DATABASE ‘/opt/dmdbms/data/DAMENG/dm.ini’ FULL BACKUPSET ‘/home/dm_bak/db_full_bak_01’;
RMAN>exit
10.1.3 数据库还原和恢复
- 校验备份
RMAN>CHECK BACKUPSET ‘/home/dm_bak/db_full_bak_for_recover_backupset’;
- 还原数据库
使用全备还原语句
RMAN>RESTORE DATABASE ‘/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini’ FROM BACKUPSET ‘/home/dm_bak/db_full_bak_for_recover_backupset’;
使用增备还原语句
RMAN>RESTORE DATABASE ‘/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini’ FROM BACKUPSET ‘/home/dm_bak/db_increment_bak_for_recover_backupset’ WITH BACKUPDIR ‘/home/dm_bak/db_full_bak_for_recover_backupset’
- 恢复数据库
使用全备恢复语句
RMAN>RECOVER DATABASE ‘/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini’ FROM BACKUPSET ‘/home/dm_bak/db_full_bak_for_recover_backupset’;
使用增备恢复语句
RMAN>RECOVER DATABASE ‘/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini’ FROM BACKUPSET ‘/home/dm_bak/db_increment_bak_for_recover_backupset’ WITH BACKUPDIR ‘/home/dm_bak/db_full_bak_for_recover_backupset’
10.2 逻辑备份恢复
逻辑备份是指利用dexp导出工具,将指定对象(库级、模式级、表级)的数据导出到文件的备份方式。逻辑备份针对的是数据内容,并不关心这些数据物理存储在什么位置。
10.2.1 dexp逻辑导出
格式: ./dexp KEYWORD=value 或 KEYWORD=(value1,value2,…,valueN)
例程: ./dexp SYSDBA/SYSDBA GRANTS=Y TABLES=(SYSDBA.TAB1,SYSDBA.TAB2,SYSDBA.TAB3)
USERID 必须是命令行中的第一个参数
关键字 说明(默认值)
-———————————————————————————————————————-
USERID 用户名/口令 格式:USER/PWD*MPP_TYPE@SERVER:PORT#SSLPATH@SSLPWD
FILE 导出文件 (dexp.dmp)
DIRECTORY 导出文件所在目录
FULL 整库导出 (N)
OWNER 以用户方式导出 格式 (user1,user2,…)
SCHEMAS 以模式方式导出 格式 (schema1,schema2,…)
TABLES 以表方式导出 格式 (table1,table2,…)
FUZZY_MATCH TABLES选项是否支持模糊匹配 (N)
QUERY 用于导出表的子集的select 子句
PARALLEL 用于指定导出的过程中所使用的线程数目
TABLE_PARALLEL 用于指定导出的过程中表内的并发线程数目,MPP模式下会转换成单线程
TABLE_POOL 用于指定表的缓冲区个数
EXCLUDE 忽略指定的对象
格式 EXCLUDE=(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS) or
EXCLUDE=TABLES:table1,table2 or
EXCLUDE=SCHEMAS:sch1,sch2
INCLUDE 包含指定的对象
格式 INCLUDE=(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS) or
INCLUDE=TABLES:table1,table2
CONSTRAINTS 导出约束 (Y)
TABLESPACE 导出对象带有表空间 (N)
GRANTS 导出权限 (Y)
INDEXES 导出索引 (Y)
TRIGGERS 导出触发器 (Y)
ROWS 导出数据行 (Y)
LOG 屏幕输出的日志文件
NOLOGFILE 不使用日志文件(N)
NOLOG 屏幕上不显示日志信息(N)
LOG_WRITE 日志信息实时写入文件: 是(Y),否(N)
DUMMY 交互信息处理: 打印(P), 所有交互都按YES处理(Y),NO(N)
PARFILE 参数文件名
FEEDBACK 每 x 行显示进度 (0)
COMPRESS 导出数据是否压缩 (N)
ENCRYPT 导出数据是否加密 (N)
ENCRYPT_PASSWORD 导出数据的加密密钥
ENCRYPT_NAME 加密算法的名称
FILESIZE 每个转储文件的最大大小
FILENUM 一个模板可以生成的文件数
DROP 导出后删除原表,但不级联删除 (N)
DESCRIBE 导出数据文件的描述信息,记录在数据文件中
LOCAL MPP模式下登录使用MPP_LOCAL方式(N)
HELP 打印帮助信息
./dexp USERNAME/PASSWORD@IP:端口 FILE=dexp01.dmp LOG=dexp01.log DIRECTORY=/emc_2/data/dexp FULL=Y
10.2.2 dimp逻辑导入
格式: ./dimp KEYWORD=value 或 KEYWORD=(value1,value2,…,vlaueN)
例程: ./dimp SYSDBA/SYSDBA IGNORE=Y ROWS=Y FULL=Y
USERID 必须是命令行中的第一个参数
关键字 说明(默认值)
-———————————————————————————————————————-
USERID 用户名/口令 格式:USER/PWD*MPP_TYPE@SERVER:PORT#SSLPATH@SSLPWD
FILE 导入文件名称 (dexp.dmp)
DIRECTORY 导入文件所在目录
FULL 整库导入 (N)
OWNER 以用户方式导入 格式 (user1,user2,…)
SCHEMAS 以模式方式导入 格式 (schema1,schema2,…)
TABLES 以表名方式导入 格式(table1,table2,…)
PARALLEL 用于指定导入的过程中所使用的线程数目
TABLE_PARALLEL 用于指定导入的过程中每个表所使用的子线程数目,在FAST_LOAD为Y时有效
IGNORE 忽略创建错误 (N)
TABLE_EXISTS_ACTION 需要的导入表在目标库中存在时采取的操作[SKIP | APPEND | TRUNCATE | REPLACE]
FAST_LOAD 是否使用dmfldr来导数据(N)
FLDR_ORDER 使用dmfldr是否需要严格按顺序来导数据(Y)
COMMIT_ROWS 批量提交的行数(5000)
EXCLUDE 忽略指定的对象格式 EXCLUDE=(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS)
GRANTS 导入权限 (Y)
CONSTRAINTS 导入约束 (Y)
INDEXES 导入索引 (Y)
TRIGGERS 导入触发器 (Y)
ROWS 导入数据行 (Y)
LOG 指定日志文件
NOLOGFILE 不使用日志文件(N)
NOLOG 屏幕上不显示日志信息(N)
LOG_WRITE 日志信息实时写入文件(N): 是(Y),否(N)
DUMMY 交互信息处理(P): 打印(P), 所有交互都按YES处理(Y),NO(N)
PARFILE 参数文件名
FEEDBACK 每 x 行显示进度 (0)
COMPILE 编译过程, 程序包和函数… (Y)
INDEXFILE 将表的索引/约束信息写入指定的文件
INDEXFIRST 导入时先建索引(N)
REMAP_SCHEMA 格式(SOURCE_SCHEMA:TARGET_SCHEMA)
将SOURCE_SCHEMA中的数据导入到TARGET_SCHEMA中
ENCRYPT_PASSWORD 数据的加密密钥
ENCRYPT_NAME 加密算法的名称
SHOW/DESCRIBE 打印出指定文件的信息(N)
LOCAL MPP模式下登录使用MPP_LOCAL方式(N)
TASK_THREAD_NUMBER 用于设置dmfldr处理用户数据的线程数目
BUFFER_NODE_SIZE 用于设置dmfldr读入文件缓冲区大小
TASK_SEND_NODE_NUMBER 用于设置dmfldr发送节点个数[16,65535]
LOB_NOT_FAST_LOAD 如果一个表含有大字段,那么不使用dmfldr,因为dmfldr是一行一行提交的
PRIMARY_CONFLICT 主键冲突的处理方式[IGNORE|OVERWRITE],默认报错
TABLE_FIRST 是否先导入表(N):是(Y),否(N)
HELP 打印帮助信息
./dimp USERNAME/PASSWORD@IP:端口 FILE=/emc_2/data/dexp/dexp01.dmp LOG=dimp02.log DIRECTORY=/emc_2/data/dimp SCHEMAS=SCHEMA_NAME1,SCHEMA_NAME2