备份:

一、连接数据库服务器(在服务器端建立备份文件夹)

windows下(win+r mstsc)输入db2cmd,linux下(我使用的是xshell)

若当前用户为root则需要切换用户至数据库管理员 db2inst1

su - db2inst1

在服务器端,建立备份文件夹backup并赋予写入权限(我一般简单粗暴的赋予全部权限)

chmod -R 777 backup

将DB2命令行窗口的当前路径切换到刚建好的备份目录下

二、导出数据库的表的数据。在切换好的目录下,输入如下命令

db2move sample export -sn db2inst1 -u db2inst1 -p 123

sample 为数据库实例名

-sn 指定要导出的模式名

-u 指定导出所使用的用户

-p 指定导出所使用用户的密码

回车执行后,会在指定的备份目录下,创建很多.ixf和.msg,每张表都会产生2个文件,带lob文件的表会多一个.lob的文件。此外还有EXPORT.out文件,记录了导出的日志,db2move.lst文件记录了,导出的表与导出文件的对应关系。

注意:导出表时可能会报如下错误

 解决方法:

  • 查看数据库级配置文件db2codepage(db2 get db cfg命令)查看Database code page的值
  • 查看实例级注册变量的值(db2set -all)查看Database code page的值与之前查出的是否一样,不一样的话就设置成一样的 ,如:db2set DB2CODEPAGE=1386
  • 重启实例(db2stop force db2start)

三、导出数据库表空间、表结构、索引、视图。

db2look -d sample -z db2inst1 -l -e -o create.sql -i db2inst1 -w 123

(-e 表结构 ,-l 表空间 ,-o 文件格式)

-d 指定导出的数据库实例名

-z 指定导出数据库的模式名

-l –e 固定参数1l-

-o 指定导出的文件名和文件格式

-i 指定导出的用户名

-w 指定导出的用户密码

回车执行后,备份目录下会创建一个sql文件,里面记录了所有的表空间、表结构、视图、索引的创建语句。

四、完成数据结构以及数据的导出后进行打包压缩

1、使用tar命令进行打包

tar -cvf backup.tar backup

(backup为打包后的新文件,backup为要打包的文件夹)

tar -cvf(或xvf)+文件名+设备

c:是本地到其他设备

x:是其他设备到本地

r:是追加,比如打包时将其他文件追加进来使用该参数

t:显示tar包里边的内容,但还原文件

2、使用gzip命令对其进行压缩

gzip backup.tar

到此备份过程over!

还原 

一、创建数据库表空间

切换用户

su - db2inst1

--创建管理系统数据库 test

create database "test" alias "test" using codeset gbk territory cn

--连接数据库

db2 connect to test user db2inst1 using 123

--建缓冲池

create bufferpool aispool immediate size 1000 automatic pagesize 32 k

--建表空间 AISCOMMON (常规)

CREATE  LARGE  TABLESPACE AISCOMMON PAGESIZE 32 K  MANAGED BY DATABASE  USING ( file '/data/test/aiscommon' 1G ) AUTORESIZE YES  EXTENTSIZE 32 OVERHEAD 7.5 PREFETCHSIZE 32 TRANSFERRATE 0.06 BUFFERPOOL  aispool NO FILE SYSTEM CACHING DROPPED TABLE RECOVERY ON

 /data/test 为表空间存放目录

--建表空间 AISSYSSPACE(系统临时)

create system temporary tablespace aissysspace pagesize 32k managed by database using (file '/data/test/aissysspace' 12800 ) extentsize 32 overhead 10.67 prefetchsize 32 transferrate 0.04 bufferpool aispool

--建表空间 AISUSERSPACE(用户临时)

create user temporary tablespace aisuserspace pagesize 32 k managed by database using (file '/data/test/aisuserspace' 12800 ) extentsize 32 overhead 10.67 prefetchsize 32 transferrate 0.04 bufferpool aispool

 至此,建库工作已准备完成,接下来进入还原步骤

二、数据还原

1、将服务器上传至指定目录并解压(解压之后会生成一堆 .msg和.ixf文件)

tar -xvf backup.tar.gz

注意:

在执行create.sql脚本前,需在create.sql脚本里修改为connect to 新建数据库名;

修改create.sql中CONNECT TO 连接需还原的数据库

对解压的文件进行授权操作

chmod -R 777 /backup

2、执行create.sql建立表结构

进入到备份数据目录下

cd /backup

执行如下语句建立表结构(进行表结构建立,完成后检查 create.log,确认是否有报错出现。(update语句报错可以无视)

db2 -vtf create.sql -z create.log

 -z 指定建表过程中生成的日志文件

3、装载数据

上一步无报错之后在执行 以下语句进行数据装载

db2move sample load -lo replace -u db2inst1 -p 123>dataload.log

住:sample为数据库名 -u后为数据库用户 -p后为数据库用户密码 dataload为新生成的日志文件名

数据装载日志中无报错之后打开数据库查询工具(我用的是ADS),连接到新建的数据库,输入语句,查询出解锁表语句

select 'SET INTEGRITY FOR DB2INST1.'||tabname|| ' CHECK, FOREIGN KEY, GENERATED COLUMN, MATERIALIZED QUERY, STAGING IMMEDIATE UNCHECKED;' from syscat.tables where status='C'

解表语句查询出的结果复制在执行

注意:解表操作需反复执行多次直至如上查询结果为0时。

查看表是否都已解锁成功的语句如下,若结果为空则表示数据还原成功

select tabname,status,const_checked from syscat.tables where status='C'

至此,数据还原工作over!!

备份单张数据表

db2 connect to 数据库名 user 登陆名 using 登陆密码

备份:

db2 export to t1.ixf of ixf select * from 表名

恢复:

db2 import from t1.ixf of ixf insert into目标表名或者新表名.

因为在工作过程中经常性的会进行数据还原操作,索性发布到网络上,共勉之

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐