常见数据库备份恢复方法实用.docx

上传人:b****7 文档编号:8693033 上传时间:2023-02-01 格式:DOCX 页数:10 大小:199.70KB
下载 相关 举报
常见数据库备份恢复方法实用.docx_第1页
第1页 / 共10页
常见数据库备份恢复方法实用.docx_第2页
第2页 / 共10页
常见数据库备份恢复方法实用.docx_第3页
第3页 / 共10页
常见数据库备份恢复方法实用.docx_第4页
第4页 / 共10页
常见数据库备份恢复方法实用.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

常见数据库备份恢复方法实用.docx

《常见数据库备份恢复方法实用.docx》由会员分享,可在线阅读,更多相关《常见数据库备份恢复方法实用.docx(10页珍藏版)》请在冰豆网上搜索。

常见数据库备份恢复方法实用.docx

常见数据库备份恢复方法实用

常见数据库备份恢复方法

前言

因为现阶段不管是测试环境,预生产环境,还是生产环境,数据库都有数据的重要性存在,为了保证测试工作连续,业务工作连续,必须保证数据库可用,除了常见的双机热备,OracleRac,sqlserveralwayson,mysql的binlog复制模式,读写分离之外,数据库备份是必不可少的工作. 

本文主要是描述一下在linux以及部分windows环境上面常见数据库的备份恢复过程. 

本文按照数据库类型进行简单描述. 

本文认为操作者至少拥有简单的数据库和操作系统知识. 

一.Oracle数据库

Oracle数据库备份方式较多,除去复制文件的冷备份,不停机的热备份的方式主要主要有:

1.exp比较原始的备份方式,Oracle11.2.0.1存在部分问题. 对应的恢复语句是imp

2.expdp数据泵的备份方式,比exp的性能要高很多.比较主流对应的恢复语句是impdp

3.rman备份很强大的备份工具,但是rman备份要求备份库和恢复库的版本一致,所以不太适合测试环境的使用,本次不在详细描述.

本次主要是说明expdp数据库备份方式和impdp的恢复方式. 

前提条件:

数据库备份需要有一个数据库的目录的概念,并且要保证执行备份恢复操作的用户具有该目录实际文件路径的读写权限.

方式方法:

linux操作系统中

1.1备份操作

1.使用工具连接到oracle数据库.

2.切换到oracle用户

su-oracle

3.创建一个directory对应的目录注意为了简单起见可以在ORACLE_HOME的目录下面执行,这样的话oracle的用户可以有相应的权限.

方法为:

[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.创建跟备份环境一样的表空间,用户以及赋予相应的权限

su-oracle

sqlplus/assysdba

进入oracle的sqlplus界面

切换到相应的pdb信息.

altersessionsetcontainer=ora19cpdb;

#跟之前一样,有PDB执行没有PDB不需要执行.

#其他机器需要创建一下oracle的目录,也需要在本地路径执行创建,

#建议使用oracle用户在Oracle有权限的目录下面创建读写权限的路径.

createorreplacedirectorydiras'/opt/oracle/dir';

#注意此时暂时不能赋予权限,建议先创建表空间和用户等.

createbigfile tablespacegscloud2003b4datafile'/opt/oracle/oradata/ORA19C/ORA19CPDB/gscloud2003b4.dbf'size1024mautoextendonnext1024m;

#注意bigfile数据文件可以大于32g,建议至少使用ASM的情况下进行.不然无法充分利用多个磁盘的IO

#注意自动扩展打开,避免因为无法扩展导致数据库事务失败.

createusergscloud2003b4defaulttablespacegscloud2003b4identifiedbyTest6530;

#注意创建用户.需要设置默认表空间和密码.

grantdba,resource,connect,createanytable,createanyview,createanysequence,unlimitedtablespacetogscloud2003b4;

#注意权限可能过大,但是测试环境足够了.

给用户赋予目录的读写权限

grantread,writeondirectorydirtogscloud2003b4;

从备份好的机器的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"."SYS_IMPORT_SCHEMA_01":

gscloud2003b4/********@127.0.0.1/ora19cpdbdirectory=dirschemas=gscloud2003b4dumpfile=gscloud2003b4_0519.dumplogfile=20200519.txt

ProcessingobjecttypeSCHEMA_EXPORT/USER

ORA-31684:

ObjecttypeUSER:

"GSCLOUD2003B4"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.

SQL>

执行导出命令.

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默认路径这么写. 

createtablespacegscloud2003datafile'C:

\dmdbms\data\DAMENG\gscloud2003.dbf'size256;

createusergscloud2003identifiedby123456789defaulttablespacegscloud2003;

grantdba,resourcetogscloud2003;

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"gscloud2003";

设置密码

alterrole"gscloud2003"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"BACKUPDATABASEgscloud2003TODISK='gscloud2003mss.bak'";

Password:

Processed66400pagesfordatabase'gscloud2003',file'gscloud2003'onfile3.

Processed102pagesfordatabase'gscloud2003',file'gscloud2003_log'onfile3.

BACKUPDATABASEsuccessfullyprocessed66502pagesin22.519seconds(23.071MB/sec).

4.2恢复操作

1.将备份文件放到指定位置.

跟备份时一样保证文件也是有正常属主的执行命令即可.

备份:

sqlcmd-S.-Usa-PTest1127?

!

-Q"RESTOREDATABASEgscloud2003FROMDISK='/mssbak/gscloud2003mss.bak'";

注意备份完之后需要重建用户,并且修改密码等:

sqlcmd-S.-Usa-PTest1127?

!

 -Q"createlogingscloud2003withpassword='Test6530',default_database=gscloud2003"

有了用户之后就可以修改属主:

sqlcmd-S.-Usa-PTest1127?

!

-dgscloud2003-Q"SP_CHANGE_USERS_LOGIN'UPdate_one','gscloud2003','gscloud2003'";

#!

!

!

!

注意如果数据库已经有了需要先删除再恢复请一定注意保护好现场

sqlcmd-S.-Usa-PTest1127?

!

-Q"DROPDATABASEGSCLOUD2003";

备份恢复完之后就可以使用查询分析器进行验证了

#注意我不清楚是否还需要多加几个权限来处理.现在系统级别的security里面只有一个public但是可以正常查询部分数据,并且可以不带schemas的名字了.

 

五.简单总结

linux里面可以通过crontab的方式创建计划任务自动备份

并且通过rsync或者是scp命令实现场外存放

可以讲批处理命令连接起来以后工作起来就非常顺畅了. 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1