常见数据库备份恢复方法实用Word格式文档下载.docx
《常见数据库备份恢复方法实用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《常见数据库备份恢复方法实用Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
[root@CentOS8~]#su-oracle
[oracle@CentOS8~]$echo$ORACLE_HOME
/opt/oracle/product/19c/dbhome_1
[oracle@CentOS8~]$mkdir/opt/oracle/dir
[oracle@CentOS8~]$ll/opt/oracle/
验证该目录/opt/oracle/dir下oracle的用户有读写权限.
4.执行sqlplus进入控制台操作
sqlplus/assysdba
5.创建directory.
注意如果使用了PDB的特性需要在PDB相应的数据库实例下面执行相应的操作,操作如下:
altersessionsetcontainer=ora19cpdb;
#注意这一步为修改session;
等于后面是oracle的pdb的sid名字.如果没有pdb模式不需要执行这个命令.
createorreplacedirectorydiras'
/opt/oracle/dir'
;
#注意dir为变量名字是定义oracle目录的名称.
grantread,writeondirectorydirtogscloud2003b4;
#保证自己的用户有相应的权限
6.输入exit退出相应的sqlplus命令界面,进入linux命令行.
expdpgscloud2003b4/"
Test1127?
!
"
@127.0.0.1/ora19cpdbdirectory=dirschemas=gscloud2003b4dumpfile=gscloud2003b4_0519.dumplogfile=20200519.txtversion=12.2.0
#注意1:
oracle的安装路径的bin路径需要在环境变量PATH中,保证expdp的命令能够直接使用,或者是进入oracle的bin路径使用./expdp的方式执行.windows环境一致,只需要修改为expdp.exe即可.
#注意2:
如果密码存在特殊字符需要使用双引号扩起来,注意输入ip地址信息以及注意目录信息一定是在oracle的服务器上面的虽然其他客户端机器也可以执行备份,但是文件不是导到客户端本地的.
#注意3:
可以使用version字段进行备份恢复,但是注意如果版本号差距较大会有一些错误,生产环境强烈不建议使用降低版本备份恢复.
备份恢复的操作比较简单:
2.1恢复操作
注意很多变量比如路径文件名用户名表空间名字需要根据情况进行自定义处理.
前面几步操作都是一致的就是恢复语句有所区别
1.在需要恢复环境上面创建目录等操作.
2.为了保证环境正常可用,建议同名备份恢复,并且不适用remaptablespace以及remapschemas的操作.
3.创建跟备份环境一样的表空间,用户以及赋予相应的权限
进入oracle的sqlplus界面
切换到相应的pdb信息.
#跟之前一样,有PDB执行没有PDB不需要执行.
#其他机器需要创建一下oracle的目录,也需要在本地路径执行创建,
#建议使用oracle用户在Oracle有权限的目录下面创建读写权限的路径.
#注意此时暂时不能赋予权限,建议先创建表空间和用户等.
createbigfile
tablespacegscloud2003b4datafile'
/opt/oracle/oradata/ORA19C/ORA19CPDB/gscloud2003b4.dbf'
size1024mautoextendonnext1024m;
#注意bigfile数据文件可以大于32g,建议至少使用ASM的情况下进行.不然无法充分利用多个磁盘的IO
#注意自动扩展打开,避免因为无法扩展导致数据库事务失败.
createusergscloud2003b4defaulttablespacegscloud2003b4identifiedbyTest6530;
#注意创建用户.需要设置默认表空间和密码.
grantdba,resource,connect,createanytable,createanyview,createanysequence,unlimitedtablespacetogscloud2003b4;
#注意权限可能过大,但是测试环境足够了.
给用户赋予目录的读写权限
从备份好的机器的directory目录里面讲dump文件copy到恢复的机器的目录里面去.
scporacle@10.24.22.237:
/opt/oracle/dir/gscloud2003b4_0519.dump/opt/oracle/dir/
#这个命令可以从远程机器复制文件过来到本地的dir目录里面去
在Oracle的shell里面执行相应的操作.
impdpgscloud2003b4/Test6530@127.0.0.1/ora19cpdbdirectory=dirschemas=gscloud2003b4dumpfile=gscloud2003b4_0519.dumplogfile=20200519.txt
根据数据库的性能需要等待很长时间.
恢复过程简要为;
[oracle@CentOS8~]$impdpgscloud2003b4/Test6530@127.0.0.1/ora19cpdbdirectory=dirschemas=gscloud2003b4dumpfile=gscloud2003b4_0519.dumplogfile=20200519.txt
Import:
Release19.0.0.0.0-ProductiononTueMay1911:
06:
272020
Version19.3.0.0.0
Copyright(c)1982,2019,Oracleand/oritsaffiliates.Allrightsreserved.
Connectedto:
OracleDatabase19cEnterpriseEditionRelease19.0.0.0.0-Production
ORA-39060:
table(s)droppedbecauseofconflictwithmastertable
Mastertable"
GSCLOUD2003B4"
."
SYS_IMPORT_SCHEMA_01"
successfullyloaded/unloaded
Starting"
:
gscloud2003b4/********@127.0.0.1/ora19cpdbdirectory=dirschemas=gscloud2003b4dumpfile=gscloud2003b4_0519.dumplogfile=20200519.txt
ProcessingobjecttypeSCHEMA_EXPORT/USER
ORA-31684:
ObjecttypeUSER:
alreadyexists
ProcessingobjecttypeSCHEMA_EXPORT/SYSTEM_GRANT
ProcessingobjecttypeSCHEMA_EXPORT/ROLE_GRANT
ProcessingobjecttypeSCHEMA_EXPORT/DEFAULT_ROLE
ProcessingobjecttypeSCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
我的数据库性能比较烂.备份恢复大概如下完成:
二.达梦数据库
达梦数据库是国产数据库里面市占率和技术最好的(官方说辞)
备份恢复其实与oracle类似但是要稍微简单一些.
我没找到expdp类似的命令,但是找到了exp类似的命令dexp以及dimp(怀疑d就是dameng的简写.)
2.1备份操作
注意我发现达梦的时候特殊字符的密码没有做转义,并且我没找到比较简单的导出的方法.
我实现的办法是先修改密码导出,再改回去密码..不推荐.
设置密码去掉特殊字符
[root@CentOS8deploy]#
disql
disqlV7.6.0.178-Build(2019.07.24-110005)ENT
username:
sysdba
password:
Server[LOCALHOST:
5236]:
modeisnormal,stateisopen
loginusedtime:
4.303(ms)
SQL>
alterusergscloud2003identifiedby123456789
2;
executedsuccessfully
usedtime:
19.325(ms).Executeidis193401.
执行导出命令.
dexpgscloud2003/123456789@127.0.0.1file=/gscloud2003dm.dumplog=/20200519.txt
我这边虚拟机的导出的文件大小为:
335M的备份文件,大概耗时132秒导出完成.
2.2恢复操作
验证一下windows和linux的数据库可以互相转换,这次试用windows上面的数据库进行恢复操作,并且windows上面的版本比较高一些.
#注意创建数据库字符集需要使用GB18030不然可能会报错,不建议使用韩文.也不建议使用UTF-8
windows上面登录disql创建表空间以及赋权等操作.
与oracle一样建议同名,同表空间进行备份恢复,问题会少很多.
disql登录
创建表空间用户等.
如果是linux默认路劲这么写:
createtablespacegscloud2003datafile'
/opt/dmdbms/data/DAMENG/gscloud2003.dbf'
size256;
createusergscloud2003identifiedby123456789defaulttablespacegscloud2003;
grantdba,resourcetogscloud2003;
如果是windows默认路径这么写.
C:
\dmdbms\data\DAMENG\gscloud2003.dbf'
windows上面的操作界面很简单:
将备份文件放到windows机器上面的c盘执行相应的操作
dimpgscloud2003/123456789@127.0.0.1fromuser=gscloud2003touser=gscloud2003file=c:
\gscloud2003dm.dumplog=c:
\20200519.txt
三.PG数据库
PG数据库需要注意的一点是需要安装OSSP-UUID的组件才能使用.
PG的备份恢复方式有很多种,感觉最简单和直接的还是pg_dump和pg_restore的操作.
简要过程如下
本次以linux为例进行相应的操作.
3.1备份操作
pg_dump-h127.0.0.1-Upostgres-p5432-Fc-f/gscloud2003pg.dmpgscloud2003
#注意备份命令比较简单.-h指定服务器-U知道备份用的用户-p指定端口-f指定备份文件最后面说明要备份的数据库.
然后在跟目录下面就能看到相应的文件了.
#注意本次使用的是二进制方式备份,不是纯sql文件.
注意PG的备份时没有任何提示.
使用time命令发现60m的数据库备份大约耗时20秒钟.输入密码之后安心等待即可.
3.2恢复操作
切换到pg的系统用户
su-postgres
登录数据库
psql
创建表空间和用户等信息
创建用户
createrole"
gscloud2003"
superuserlogin;
创建数据库
createdatabase"
;
设置密码
alterrole"
withpassword'
Test6530'
#注意使用双引号比较好能够包含大小写的数据库名字.
执行恢复操作.
pg_restore-Upostgres-dgscloud2003/gscloud2003pg.dmp
注意PG备份恢复的速度还是挺快的.
注意瀚高数据库可以使用PG的备份方式进行备份恢复.
四.SQLSERVER的备份恢复操作
SQLSERVER2017之后微软开始提供linux上面的安装介质了
其中sql2017onlinux还是不支持分布式事务的sql2019onlinux就可以支持分布式事务了.
可以直接登录sa用户使用命令进行相应的操作.
4.1备份操作
Linux上面执行相关的操作需要有安装mssql-tools才可以
需要先创建一个sqlserver有读写权限的目录
比如
mkdir/mssbak
chownmssql:
mssql/mssbak/
chmod777/mssbak/
备份命令非常简单.
sqlcmd-S127.0.0.1-Usa-PTest1127?
-Q"
BACKUPDATABASEgscloud2003TODISK='
/mssbak/gscloud2003mss.bak'
但是注意一点如果不创建目录的话这个备份文件是默认放到了
ll-h./var/opt/mssql/data/gscloud2003mss.bak
-rw-rw----1mssqlmssql1.5GMay1914:
31./var/opt/mssql/data/gscloud2003mss.bak
注意备份恢复时的提示信息:
[root@CentOS8/]#sqlcmd-S127.0.0.1-Usa-Q"
gscloud2003mss.bak'
Password:
Processed66400pagesfordatabase'
gscloud2003'
file'
onfile3.
Processed102pagesfordatabase'
gscloud2003_log'
BACKUPDATABASEsuccessfullyprocessed66502pagesin22.519seconds(23.071MB/sec).
4.2恢复操作
1.将备份文件放到指定位置.
跟备份时一样保证文件也是有正常属主的执行命令即可.
备份:
sqlcmd-S.-Usa-PTest1127?
RESTOREDATABASEgscloud2003FROMDISK='
注意备份完之后需要重建用户,并且修改密码等:
createlogingscloud2003withpassword='
default_database=gscloud2003"
有了用户之后就可以修改属主:
-dgscloud2003-Q"
SP_CHANGE_USERS_LOGIN'
UPdate_one'
'
#!
注意如果数据库已经有了需要先删除再恢复请一定注意保护好现场
DROPDATABASEGSCLOUD2003"
备份恢复完之后就可以使用查询分析器进行验证了
#注意我不清楚是否还需要多加几个权限来处理.现在系统级别的security里面只有一个public但是可以正常查询部分数据,并且可以不带schemas的名字了.
五.简单总结
linux里面可以通过crontab的方式创建计划任务自动备份
并且通过rsync或者是scp命令实现场外存放
可以讲批处理命令连接起来以后工作起来就非常顺畅了.