Fastore数据库备份恢复和日常维护
上篇文章给大家具体讲解了Fastore数据库部署安装,这篇文章再展开给大家讲解下Fastore数据库备份恢复和日常维护,希望能对你们有所帮助,创作不易,如果喜欢请点个关注支持一下!一、备份恢复概述
在数据库运行前或数据迁移时,将数据通过各种手段镜像拷贝到备份媒质上。 在数据库运行过程中,使用运行在数据库中的备份工具对数据库进行备份。 当FaStore运行正常时,将共享内存中数据库拷贝到磁盘。全量备份通过gmbar工具备份持久化文件(Redo日志文件和Data文件)。 当FaStore运行正常时,将共享内存中数据库表定义和表数据以文本方式导出。逻辑备份通过gmdcp工具备份表定义和表数据。 业务系统的数据库损坏,不能通过故障定位、动态恢复等手段修复的情况下而采用基线恢复至最近一次基线状态,并根据实际情况采用动态恢复将业务系统恢复至最近一次备份前的状态。 业务系统的数据库或业务程序因客观因素,例如误操作等,损坏单个或多个数据,根据实际情况进行动态恢复将业务系统恢复至最近一次备份前的状态。二、全量备份
全量备份是指按一定时间隔保留数据库的多个历史备份,当持久化文件异常、误操作时恢复数据库。
建议每天定时自动触发进行一次全量备份。需要手工执行全量备份的典型场景如下: FaStore运行正常时,持久化文件(Redo日志文件和Data文件)损坏。 FaStore运行正常时,持久化文件(Redo日志文件和Data文件)无法使用。 Redo日志文件和Data文件。其中Data文件存放在Data目录,Redo日志文件存放在Redo目录,Data目录路径和Redo目录路径在配置文件“${GMDB_HOME}/config/server.ini”中配置。如果“DATA_PATH”和“REDO_PATH”配置项值为空,则“DATA_PATH”和“REDO_PATH”默认值为“${GMDB_HOME}/data”和“${GMDB_HOME}/redo”。4.1 创建备份目录:
假设备份目录为“backup_dir”,“backup_dir”目录的空闲空间需要大于Data目录和Redo目录使用空间的总和。4.2 检查gmserver进程是否正常:
gmp系统显示类似如下信息,表明gmserver进程运行正常。UID PID PPID %CPU START TTY TIME CMD
gmdb 20240 1 32.4 00:39 pts/6 00:55:12 gmserver
“backup_path”为备份目录“backup_dir”的绝对路径,“-c”表示采用压缩方式备份。gmbar -b /backup_dir -c
<97 fastore11 [gmdb1] /home/gmdb1>gmbar -b /backup_dir -c
Backup device ... [100%].
Backup redolog ... [100%].
Backup database to /backup_dir success.
4.4 检查备份文件:
ls -l /backup_dir
<98 fastore11 [gmdb1] /home/gmdb1>ls -l /backup_dir
total 0
drwx------ 1 gmdb1 onip 44 Sep 15 16:03 gmdb_data_bak
三、逻辑备份
逻辑备份是指将数据库中表定义和表数据以文本方式导出,当数据库存储数据异常时,恢复数据。 建议每天定时自动触发进行一次逻辑备份。需要手工执行逻辑备份的典型场景如下:5.1 创建备份目录:
假设备份目录为“txt_backup_dir_date”,“txt_backup_dirdate”目录的空闲空间大于内存数据库总大小。5.2 检查gmserver进程是否正常:
gmp系统显示类似如下信息,表明gmserver进程运行正常。UID PID PPID %CPU START TTY TIME CMD
gmdb 20240 1 32.4 00:39 pts/6 00:55:12 gmserver
gmdcp -c /as dba -e -p /backup_dir/txt_backup_dir
注:-c参数输入连接串,-e参数指定导出操作,-p参数指定到处目录,可根据参数指定导入导出操作以及多带带导出表结构表数据等。
<114 fastore11 [gmdb1] /backup_dir/txt_backup_dir>gmdcp -c /as dba -e -p /backup_dir/txt_backup_dir
Start to export definition...
Export definition of user "sysman" successfully.
Export definition of table "sys.fastore_jobs" successfully.
Export definition successfully.
Start to export data...
Export "sys.fastore_jobs" successfully.
Export data successfully.
All job finished, total time 0.154 seconds.
5.4 检查文件是否存在:
<115 fastore11 [gmdb1] /backup_dir/txt_backup_dir>ls -l
total 8
-rw------- 1 gmdb1 onip 558 Sep 15 16:13 gmdb.sql
-rw------- 1 gmdb1 onip 386 Sep 15 16:13 sys.fastore_jobs.sql
-rw------- 1 gmdb1 onip 0 Sep 15 16:13 sys.fastore_jobs.unl
全量恢复是指将全量备份生成的持久化文件(Redo日志文件和Data文件)导入到数据库,恢复数据库。- >>持久化文件(Redo日志文件和Data文件)正常,共享内存不存在。
全量备份生成的持久化文件(Redo日志文件和Data文件)。4.1 以安装用户登录主机停止数据库:
4.2 检查gmserver是否停止:
gmp
gmadm -s gmserver ----强制停止命令
4.3 备份Data目录和Redo目录
Data目录路径和Redo目录路径在配置文件“${GMDB_HOME}/config/server.ini”中配置。如果“DATA_PATH”和“REDO_PATH”配置项值为空,则“DATA_PATH”和“REDO_PATH”默认值为“${GMDB_HOME}/data”和“${GMDB_HOME}/redo”。4.4 清除共享内存:
4.5 系统显示类似如下信息,表明共享内存已经删除。Successfully delete shared memory.
4.6 恢复数据库:
gmbar -r backup_path -force
backup_path为全量备份文件所在路径,-force表示不显示提示信息,强制恢复。
load device ... [100%] Flush device ... [100%].
Copy redolog ... [100%].
Rebuild redolog ... [100%].
Restore from file succeed.
4.7 启动数据库:
4.8 检查gmserver进程:
gmsql /as dba "exit;" | grep "Successfully CONNECT to DB"
系统显示类似如下信息,则表示启动成功,否则请等待10秒再执行命令检查。Successfully CONNECT to DB.
4.9 检查数据库准确性
五、逻辑恢复
逻辑恢复是指将逻辑备份生成的表定义和表数据文件导入到数据库,恢复数据。>>数据库升级成功后导入变更的表定义和表数据。
>>共享内存中存储数据异常。
4.1 以安装用户登录主机停止数据库:
4.2 检查gmserver是否停止:
系统未显示任何信息,则表示gmserver进程已经停止,否则请等待10秒,再执行命令检查。 如果gmserver进程仍然在运行,应停止业务进程访问数据库,并停止gmserver进程。如果需要强制停止gmserver进程,可以执行如下命令。4.3 备份Data目录和Redo目录:
Data目录路径和Redo目录路径在配置文件“${GMDB_HOME}/config/server.ini”中配置。如果“DATA_PATH”和“REDO_PATH”配置项值为空,则“DATA_PATH”和“REDO_PATH”默认值为“${GMDB_HOME}/data”和“${GMDB_HOME}/redo”。4.4 删除共享内存:
Successfully delete shared memory.
4.5 启动数据库:
4.6 检查gmserver进程是否启动正常。
gmsql /as dba "exit;" | grep "Successfully CONNECT to DB"
系统显示类似如下信息,则表示启动成功,否则请等待10秒再执行命令检查。Successfully CONNECT to DB.
4.7 恢复数据库:
gmdcp -c /as dba -i -p txt_backup_dir_20150130
txt_backup_dir_20150130为逻辑备份文件所在路径。
Start to import definition ...
Import definition of entire DB successfully.
Import definition successfully.
Start to import data...
Import data successfully.
All job finished, total time 0.124 seconds.
4.8 检查数据库准确性
一、管理用户
1.1 启动gmsql
<127 fastore11 [gmdb1] /home/gmdb1>gmsql
gmsql V200R005C52SPC230 - Production on Apr 10 2020
SQL>
1.2 使用sys用户链接数据库
SQL>connect sys/Admin123 ipc;
Connected through DB ...
Successfully CONNECT to DB.(IPC)
1.3 创建用户账号:
如果你想创建只有查询权限的帐户user_read,并预设其密码为User_read1(密码要符合规则,否则会执行失败,详细请参见密码规则),可在gmsql中输入CREATE USER user_read IDENTIFIED BY User_read1;SQL>CREATE USER user_read IDENTIFIED BY User_read1;
SQL Executed Successfully
2. 修改密码
1.1 sys密码管理:
登录sys用户:在gmsql中输入connect sys/password ipc 修改sys密码:如果新密码为Newpwd123,则在gmsql中输入password sysSQL>password sys
Old password:********
New password:********
Retype new password:********
Password changed successfully.
测试密码连接:CONNECT sys/Newpwd123 ipc; 登录sys用户:在gmsql中输入connect sys/password ipc 修改用户密码:如果你想将用户user_read的密码改为User_read2,则在gmsql中输入password sys 测试密码连接:CONNECT user_read/User_read2 ipc;3. 锁定账户
登录sys用户:在gmsql中输入connect sys/password ipc; 锁定用户:ALTER USER user_read ACCOUNT LOCK;4. 解锁账户
登录sys用户:在gmsql中输入connect sys/password ipc; 解锁用户:ALTER USER user_read ACCOUNT UNLOCK;5. 删除账户
登录sys用户:在gmsql中输入connect sys/password ipc; 删除用户:DROP USER user_read;6. 审计账户
登录sys用户:在gmsql中输入connect sys/password ipc; 审计账户:假如你要对用户帐户的DML操作进行审计,可在gmsql中输入ALTER USER user_read SET AUDIT DML ON;,然后执行。二、管理权限
1. 创建角色
- FaStore数据库默认的管理员帐户为sys,仅sys用户具有创建角色的权限。
- 角色名称最长为30个字符,可以包含大小写字母、数字及下划线,首字符必须为字母。
1.2 登录sys用户:在gmsql中输入connect sys/password ipc;1.3 创建角色:CREATE ROLE rolename;1.4 查看角色:SELECT * FROM sys.SYSROLES;2. 授予系统权限给用户或自定义角色
- FaStore数据库默认的管理员帐户为sys,仅sys用户具有授予系统权限的权限。
2.2 登录sys用户:在gmsql中输入connect sys/password ipc;GRANT sys_prives1,sys_privs2, ... TO username1,username2, ...;GRANT sys_prives1,sys_privs2, ... TO rolename1,rolename2, ...;2.5 查询角色“roletest”和用户“usertest”拥有的系统权限表信息:SELECT * FROM SYSDBPRIVS WHERE GRANTEE = ‘ROLETEST’;SELECT * FROM SYSDBPRIVS WHERE GRANTEE = ‘usertest’;
注:授予多个系统权限时采用逗号分隔并且不能重复。授予多个用户和自定义角色时采用逗号分隔并且不能重复。用户名和自定义角色名可交叉。3. 授予对象权限给用户或自定义角色
- 授予对象权限需要有GRANT ANY OBJECT PRIVILEGE权限。
- 不支持授予所有schema对象的语法,即GRANT select on userA.* to userB。
3.2 登录sys用户:在gmsql中输入connect sys/password ipc;3.3 授予表或视图的对象权限:GRANT obj_prives1,obj_privs2, ... ON obj_name TO username1,username2,rolename1,rolename2, ...;3.4 授予其他对象权限:GRANT obj_prives1,obj_privs2, ... ON obj_keyword obj_name TO username1,username2,rolename1,rolename2, ...;3.5 查询对象权限表“SYSOBJPRIVS”:SELECT * FROM SYSOBJPRIVS; 注:obj_name指对象名称,obj_keyword指对象关键词。授予多个对象权限时采用逗号分隔并且不能重复。授予多个用户和自定义角色时采用逗号分隔并且不能重复。用户名和自定义角色名可交叉。4. 授予角色给用户
- FaStore数据库默认的管理员帐户为sys,仅sys用户具有授予角色的权限。
4.2 登录sys用户:在gmsql中输入connect sys/password ipc;4.3 授予角色给用户:Grant rolename1,rolename2, ... to username1,username2, ...; 注:授予多个角色时采用逗号分隔并且不能重复。授予多个用户时采用逗号分隔并且不能重复。4.4 查询用户角色表信息:SELECT * FROM SYSUSERROLES;5. 撤销用户和自定义角色的系统权限
- FaStore数据库默认的管理员帐户为sys,仅sys用户具有撤销系统权限的权限。
- 撤销用户和角色的权限后,该用户和角色用户新建句柄将不再具有已经撤销的系统权限,对当前句柄无影响。
- 撤销的系统权限必须为用户或自定义角色所拥有,否则会撤销失败。
5.2 登录sys用户:在gmsql中输入connect sys/password ipc;REVOKE sys_prives1,sys_privs2, ... from username1,username2, ...;REVOKE sys_prives1,sys_privs2, ... from rolename1,rolename2, ...; 注:撤销多个系统权限时采用逗号分隔并且不能重复。撤销多个用户和自定义角色时采用逗号分隔并且不能重复。用户名和自定义角色名可交叉。6. 撤销用户和自定义角色的对象权限
- 撤销对象权限需要有GRANT ANY OBJECT PRIVILEGE权限。
- 撤销不存在的权限或者不属于用户或角色的权限会失败。
- 撤销用户和自定义角色的对象权限后,该用户和角色用户新建句柄将不再具有已经撤销的对象权限,对当前句柄无影响。
6.2 登录sys用户:在gmsql中输入connect sys/password ipc;6.3 撤销表或视图的对象权限:REVOKE obj_prives1,obj_privs2, ... ON obj_name FROM username1,username2,rolename1,rolename2, ...;6.4 撤销其他对象权限:REVOKE obj_prives1,obj_privs2, ... ON obj_keyword obj_name FROM username1,username2,rolename1,rolename2, ...; 注:obj_name指对象名称,obj_keyword指对象关键词。撤销多个对象权限时采用逗号分隔并且不能重复。撤销多个用户和自定义角色时采用逗号分隔并且不能重复。用户名和自定义角色名可交叉。7. 撤销用户角色
登录sys用户:在gmsql中输入connect sys/password ipc;撤销用户角色:Revoke rolename1,rolename2, ... from username1,username2, ...;8. 删除角色
登录sys用户:在gmsql中输入connect sys/password ipc; 注:删除角色时,系统会提示将会撤销该角色下的所有权限并且不能回滚,需要进行确认。三、管理对象
1. 管理表空间
1.1 概述:
表空间(tablespace)是数据库的逻辑划分。数据库将数据存放在数据文件中。在其内部,数据库将不同的数据分开存储,这些逻辑划分称为表空间。从物理角度来看,表空间将数据存储在一个或多个数据文件中。一个数据库通常包含了若干表空间,一个表空间通常对应若干个数据文件。 数据文件位于磁盘中,用于存放逻辑结构、管理信息、业务数据。数据文件在创建、修改表空间时由数据库自动生成。- 数据文件创建之后,既不能改变它的大小,也不能删除它。
- 数据文件的命名规则:可包含字母、数字、下划线。不能以点号开头。
PERM:系统默认会创建名为USER和SYSTEM的PERM类型表空间,用于存放用户数据库对象的持久化信息(比如表和索引)和系统表的持久化信息。用户如果要在创建对象时未指定表空间,则默认存储在USER表空间。 UNDO:存储用户表的UNDO持久化信息,表空间名为UNDO。 TEMP_UNDO:存储临时表的UNDO信息,表空间名为TEMP_UNDO。 HASH:存放索引的哈希桶信息,表空间名为HASH。 TEMP_HASH:存储临时表索引的哈希桶信息,表空间名为HASH_TEMP。 REP:存储RT表(Replication Table)信息,表空间名为REP。 REP_UNDO:存储RT表的UNDO信息,表空间名为REP_UNDO。1.2 创建表空间
- 已启动gmsql工具,并通过有CREATE SESSION和CREATE TABLESPACE权限的帐户连接到用户库。
- 当前的操作系统用户要拥有相应目录的读写权限,该目录用于存放数据文件。
1.2.2 登录一个用户gmsql;connect user_read/User_read1 192.168.56.111:8500;1.2.3 创建表空间:CREATE TABLESPACE MYTBS ON (mytbs.dat SIZE 64k);1.2.4 查看表空间:SELECT * FROM V$TABLESPACE WHERE NAME =MYTBS;1.3 扩容表空间
- 已启动gmsql工具,并通过有CREATE SESSION和CREATE TABLESPACE权限的帐户连接到用户库。
- 当前的操作系统用户要拥有相应目录的读写权限,该目录用于存放数据文件。
SELECT NAME,(SPACE_SIZE-SPACE_FREE_SIZE)/SPACE_SIZE SPACE_USED FROM v$tablespace;ALTER TABLESPACE tablespace_name ADD DATAFILE datafile_name SIZE size_num K|M|G;1.4 缩减表空间
1.4.1 前提条件:
- 在创建数据库之后,不支持在线缩小表空间,用户可以通过重建数据库对表空间整改,实现缩小表空间。
% mkdir ${GMDB_HOME}/gmdb_data_bak_4_tbs
% gmsql /as dba "checkpoint;exit;"
% gmbar -b ${GMDB_HOME}/gmdb_data_bak_4_tbs -c
% mkdir ${GMDB_HOME}/gmdb_data_bak_4_tbs_lg
- 导出数据库:由于备份数据量大,备份文件所在磁盘文件空间大小大于备份数据量大小。导出时间因不同环境(包括现场数据量、服务器性能等因素)耗时不同。
gmdcp -c /as dba -e -n 5 -p ${GMDB_HOME}/gmdb_data_bak_4_tbs_lg
- 删除“DATA_PATH”和“REDO_PATH”配置项对应目录下的所有文件
查看server.ini文件中“DATA_PATH”和“REDO_PATH”配置项的值。如果“DATA_PATH”和“REDO_PATH”配置项值为空,则“DATA_PATH”和“REDO_PATH”默认值为“${GMDB_HOME}/data”和“${GMDB_HOME}/redo”。- 启动FaStore,检查gmserver进程是否启动正常
startdb.sh;gmsql /as dba "exit;" | grep "Successfully CONNECT to DB";
gmsql /as dba "drop table FASTORE_JOBS;exit;"
cd ${GMDB_HOME}/gmdb_data_bak_4_tbs_lg
cp gmdb.sql gmdb.sql.bak
使用VI编辑器编辑“gmdb.sql”,根据整改目标对CREATE TABLESPACE、CREATE TEMPORARY TABLESPACE和ALTER TABLESPACE语句的表空间文件名以及表空间大小进行修改。修改完成后,保存退出VI编辑器gmdcp -c /as dba -i -n 5 -p ${GMDB_HOME}/gmdb_data_bak_4_tbs_lg
2. 管理表
如果想要手动清理该表的碎片,可在gmsql中输入VACUUM TABLE TBL; 如果要手动清理所有表的碎片,可在gmsql中输入VACUUM TABLE ALL;本 文 原 创 来 源:IT那活儿微信公众号(上海新炬王翦团队)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129716.html