Transcript ppt
Aleph
系统备份、恢复与同步
周磊
艾利贝斯北京代表处
2014 年6月
提纲
• 操作系统文件的备份与同步
• oracle数据表及数据库文件的备份与恢复
• 服务器移植与同步
2
操作系统文件的备份与同步
• 常用命令
• 本地文件系统
• mv
• cp
• tar
• 远程文件系统
• ftp
• wget
• scp
• rsync
3
本地文件系统- mv
• mv - move (rename) files
- 移动或重命名文件
• 样例
mv source_file target_file
mv source_file target_dir/
mv source_file target_dir/target_file
• 特点:保持文件属性
4
本地文件系统- cp
• cp - copy files and directories
- 拷贝文件或目录
• 参数
-r copy directories recursively 拷贝目录
-p preserve file attribute 保持属性
5
本地文件系统- tar
• tar - create tape archives and add or
extract files - 打包、解包
• FUNCTION LETTERS 功能参数:
-c create a new archive 打包
-x extract files from an archive 解包
-t list the contents of an archive 查看文件列表
-A append tar files to an archive
-d find differences between archive and file system
-r append files to the end of an archive
-u only append newer
--delete delete from the archive
6
本地文件系统- tar
• 参数:
-f file 对象是文件而不是磁带
-v verbosely list files processed 显示文件列表
-z gzip 压缩
-h dump the files the link point to 获取连接原
文件
--exclude PATTERN exclude files 排除
--keep-newer-files do not overwrite files
which are newer than the archive
-k, --keep-old-files keep existing files; don't
overwrite them from archive
7
本地文件系统- tar
• 样例:
tar -czf u20_1.tar.gz ./u20_1 打包
tar -xzf u20_1.tar.gz
解包
tar -tzvf u20_1.tar.gz 查看文件列表
tar -xzf whu01.exportSEQ.tar.gz z13.seqaa
tar -czf --exclude “*/scratch/*” u20_1.tar.gz
cat file_list |xargs tar –rf backup.tar
//可以在file_list 文件中列出需要打包的文件或目录
8
远程文件系统- ftp
• ftp - Internet file transfer program
• 命令
open, user, bye
get, mget,
put, mput
ls, pwd, cd, lcd, mkdir
ascii, bin
passive
prompt
9
远程文件系统- ftp
• 自动 ftp – 免登录
cd 到HOME 目录
创建或编辑文件 .netrc
machine 192.168.0.1 login test password test
// 注意: 在命令后面请留一个空行。
chmod 600 .netrc
编辑一个脚本文件,比如 ftp_list
bin
put ./u20_1/whu01/files/whu01.exportSEQ.tar.gz
put ./u20_1/whu09/files/whu09.exportSEQ.tar.gz
bye
运行
ftp 192.168.0.1 < ftp_list
10
远程文件系统- ftp
• 自动 ftp – 通过脚本
ftp -ni 192.168.0.1 < ftp_list > ftp.log &
• cat ftp_list
user $ftp_user $ftp_passwd
bin
cd $ftp_backup_data/$backup_date
lcd $backup_data/$backup_date
mput *.tar.gz
bye
11
远程文件系统- ftp
• lftp – mirror 镜像
mirror [OPTS] [source [target]]
Mirror specified source directory to
local target directory
12
远程文件系统- wget
• wget - The non-interactive network downloader.
• 参数
-b background 在后台运行
-o logfile
-c Continue getting a partially-downloaded file
-q --quiet turn off Wget's output.
-r turn on recursive retrieving.
-m mirror
• Examples
/usr/bin/wget -o ftp_apss.log -c -b
"ftp://bbsftp:[email protected]/apss/apss.3.3.a20_1.20100226.tar.gz"
13
远程文件系统- scp
• scp - secure copy (远程文件系统拷贝程序)
• scp -pr [[user@]host1:]file1 [...] [[user@]host2:]file2
-r copy directories recursively
-p preserve file attribute
• 样例:
scp -p 192.168.0.1:./u20_1/alephe/tab/tab_full_z39 ./
scp -p ./*.log aleph@cceu:./other/logs/
scp -pr ./* cceu:`pwd`
// 用反引号··括起pwd,是指将pwd(当前目录)命令的结果放在该位置,达到的
效果是将当前文件拷贝到另外一台服务器的相同目录下.
14
远程文件系统- scp
• 通过ssh实现免登录
创建 SSH-key: ssh-keygen。 会在 ~/.ssh/下
产生两个文件:
id_rsa.pub (公钥)
id_rsa (密钥 )
scp 公钥文件id_rsa.pub 到远程服务器
cat id_rsa.pub >> ~/.ssh/authorized_keys
(在远程服务器)
15
远程文件系统- rsync
• Rsync – Remote synchronization
可以镜像保存整个目录树和文件系统。
可以很容易做到保持原来文件的权限、时间、软硬链接等等。
无须特殊权限即可安装。
优化的流程,文件传输效率高。
可以使用rcp、ssh等方式来传输文件,当然也可以通过直接
的socket连接。
支持匿名传输,以方便进行网站镜象。
http://rsync.samba.org/
16
远程文件系统- rsync
• 安装rsync
linux 缺省安装了
solaris 请到公司ftp: soft/rsync/下载
• 以守护进程方式启动 rsync
rsync --daemon
17
远程文件系统- rsync
• Setting /etc/rsyncd.conf
use chroot = yes
max connections = 1
syslog facility = local5
pid file = /var/run/rsyncd.pid
log file = /tmp/rsync.log
hosts allow = 202.198.141.98
[utree]
path=/exlibris/aleph/u20_1
exclude=*/scratch */files */print */apache/logs
uid = aleph
gid = exlibris
read only=yes
list = yes
comment=Utree for ALEPH500.
[atree]
……
18
远程文件系统- rsync
• 语法
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
• Options
-a, --archive
保持文件属性
-b, --backup
文件被覆盖前先做备份,缺省在原文件名后面加~。
--delete 慎用!
-z, --compress
--exclude=PATTERN
--exclude-from=FILE
19
远程文件系统- rsync
• 同步脚本
$lcl_proc/exec_rsync.csh
$lcl_proc/rsync_auto.csh
• csh -f $lcl_proc/exec_rsync.csh
主要同步语句:
rsync -avb --suffix=-bak20101115 --excludefrom=/exlibris/aleph/exclude_file_rsync
aleph94:/exlibris/aleph/u18_1/cnu50/
/exlibris/aleph/u18_1/cnu50/
不参与同步的文件列表
/exlibris/aleph/exclude_file_rsync
20
cat /exlibris/aleph/exclude_file_rsync
alephe/aleph_start
# alephe/www_server.conf
# alephe/apache/conf/httpd.conf
# alephe/apache/htdocs/.index.html
# alephe/jboss_conf/main.properties
# *local_define*
# *job_list*
# *settings.jsp
*scratch/*
# *print/*
*report/*
*files/*
*Standalone*
*loan_top_ten*
*cache/*
*access_log*
*error_log*
*tmp/*
*log/*
*logs/*
*xml_logs/*
*bor_pics*
21
远程文件系统- rsync
host2-a18(1) >>csh -f $lcl_proc/exec_rsync.csh
Please input the remote server's name
aleph94
Please input the directory to do rsync
/exlibris/aleph/u18_1/cnu50
The remote server is aleph94
The dir is /exlibris/aleph/u18_1/cnu50/
Right? Y/[N]
Y
The files have the same file name in two servers will be backup with -bak20101115
as suffix.
rsync -avb --suffix=-bak20101115 --excludefrom=/exlibris/aleph/exclude_file_rsync aleph94:/exlibris/aleph/u18_1/cnu50/
/exlibris/aleph/u18_1/cnu50/ >
/exlibris/aleph/a18_1/tmp/rsync_20101115.log.20183
22
远程文件系统- rsync
rsync completed. Would you view the log? [Y]/N Y
The files have the same file name in two servers will be backup with bak20101115 as suffix.
Would you check these files? [Y]/N Y
Check completed.
1. Files different in two servers :
403
2. Files older in local servers :
0
3. Files newer in local servers :
2
4. Files which contents are the same in two servers :
5. Edit the delete file list using vi
6. Delete backup files for the same files and old files
0. Exit
Please select [0]:
23
401
远程文件系统- rsync
• 自动完成
csh -f /exlibris/aleph/a18_1/aleph/lclproc/rsync_auto.csh
需设置脚本中的
set remote_server = "aleph94"
set target_dir = "/exlibris/aleph/a18_1/"
set target_dir = "/exlibris/aleph/u18_1/"
24
提纲
• 操作系统文件的备份与同步
• oracle数据表及数据库文件的备份与恢复
• 服务器移植与同步
25
Oracle 数据表及数据库的备份与恢复
• 单表备份与恢复
• 整个库的备份与恢复
• oracle数据库的备份与恢复
26
单表的备份与恢复
• p_file_03/p_file_04方式
导出纯文本文件
导入使用sqlldr
可以对文件进行修改再导入
数据中存在控制符可能会有问题
• oracle_exp_table/oracle_imp_table
基于oracle 的exp/imp机制
• oracle_expdp_table/oracle_impdp_table
基于oracle 的expdp/impdp机制
快!
27
单表导出 p_file_03
28
单表导出 p_file_03
• 导出结果文件
在$data_files 目录下
文件名为 Znn.seqaa, Znn.seqab ……
• 导出文件格式:
定长 (FIX) 每个字段固定长度 (缺省)
定义 (DLM) 每个字段用 tab 分割
• 从命令行直接提交
csh -f $aleph_proc/p_file_03 CNU50,z31,,,DLM
csh -f $aleph_proc/p_file_03 CNU50,z31,,,FIX
29
单表导入 p_file_04
30
单表导入 p-file-04
• 要导入的文件需放在库的files目录下
• 导入方式
替换 (replace) (缺省)
追加(append)
• 导入文件格式:
定长 (FIX) 每个字段固定长度 (缺省)
定义 (DLM) 每个字段用 tab 分割
• 从命令行直接提交
csh -f $aleph_proc/p_file_04 CNU50,z31,replace,DLM
csh -f $aleph_proc/p_file_04 CNU50,z31,append,FIX
31
单表导出/导入
• 导出/导入整个库,在表名位置填 all
• 导出/导入部分表
csh -f $data_root/source/backup_znn
csh -f $data_root/source/restore_znn
注意修改其中的
set tables = 'z82 z83 z70 z72 z76 z66 z67
z601 z602 z62 z61 '
32
单表导入的日志
• 库的scratch目录下
create_ora_context_z31
create_ora_tables_z31
z31.bad.1 导入不成功的文件,确认文件大小为0
z31.length
z31_dmp_ora.ctl
z31_dmp_ora.log.1 导入日志
z31_ora_dlm.sql
• 数据中含回车符之类的控制符,导入前需处理
,方法见论坛。
33
整库导出/导入
• exp_current_library
imp_current_library
机制同p_file_03/p_file_04
• oracle_exp_current_lib
oracle_imp_current_lib
使用oracle 的exp/imp 工具
• oracle_expdp_current_lib
oracle_impdp_current_lib
使用oracle的 expdp/impdp
34
整库导出/导入
• 导出
dlib cnu01
$aleph_proc/exp_current_library >&
$TMPDIR/exp_cnu01.log &
结果文件在库的 files 目录下
cnu01.exportSEQ.tar.gz
结果文件是一系列的znn.seq* 文件打包而成
结果文件压缩之后一个库大约0.5-3G
导出时间1-4小时
35
整库导出/导入
• 导入
dlib cnu01
cnu01.exportSEQ.tar.gz文件需放在 files目录下
$aleph_proc/imp_current_library TAR YES
>& $TMPDIR/imp_cnu01.log &
注意导入时会清了整个库的数据再装入。
纯粹数据的导入,不能保留表的视图、权限等
时间2-6小时
36
备份与恢复 - exp_current_library
• 正式机job_list 中的定义
37
备份与恢复 - exp_current_library
• 备用机的job_list
38
备份与恢复 - exp_current_library
• $lcl_proc目录下脚本
• 备份目录在$backup_data/$week 目录下
• backup_data :将每个库的files目录下
$lib.exportSEQ.tar.gz的文件移到备份目录下
• backup_ftp 将每天的备份文件ftp到备份机
• restore_data:将备份目录下的备出文件拷贝
到每个库的files目录下
• imp_local_libraries 导入每个库的数据
39
整库备份 expdp/impdp
• 导出/导入
导出 csh -f $aleph_proc/oracle_expdp_current_lib
导入 csh -f $aleph_proc/oracle_impdp_current_lib
• 结果文件在 files/dpdir目录下
CNU0101.dmp
CNU0103.dmp
CNU0105.dmp
CNU0102.dmp
CNU0104.dmp
expCNU01.log
不压缩一个库备份文件大约2-10G
• 优点
快速 5-30分钟
保留表的视图、权限等
40
Oracle 数据库的备份与恢复
• 直接备份移植oracle数据文件
文件很大 60-150G
• 通过RMAN备份与恢复
41
移植oracle数据文件
• 停oracle
• 拷贝以下目录到备份服务器
/exlibris/oradata/$sid
/exlibris/app/oracle/admin/$sid
/exlibris/app/oracle/product/11/dbs
/exlibris/app/oracle/product/11/network/admin
/exlibris/app/oracle/diag (oracle 11 才需要)
• 注意保持文件属性
42
移植oracle 数据文件
• 备份机的oracle数据文件路径、sid名最好与
正式机一致
• 修改$ORACLE_HOME/network/admin下
的文件,涉及到主机名、ip等
43
移植oracle 数据文件
• 修改oracle 参数表
sqlplus /nolog
idle> conn / as sysdba;
idle> show parameters service_names
idle> show parameters db_domain
idle> alter system set service_names='aleph2'
scope=spfile;
idle> alter system set db_domain='test' scope=spfile;
idle> shutdown immediate
idle> startup
44
Oracle 数据库备份与恢复 - RMAN
• RMAN是Oracle自带的一个备份与恢复工具
• 可以对数据库实现完整备份和恢复
• 支持热备
• 支持增量备份
• 备份、恢复速度快,文件小
• 支持完全恢复、不完全恢复
• 通过脚本实现备份
• 需启动archive模式
• 需设置备份策略
45
Oracle 数据库备份与恢复 - RMAN
• Exlibris backup package
公司提供的一个备份恢复包
可以实现对数据库、数据、应用程序、参数表等的
备份与恢复
其中对数据库的备份基于RMAN
改造 backup_package.2.6.lcl.tar.gz
46
backup package
• 安装
下载 backup_package.2.6.lcl.tar.gz
解压到 /exlibris/backup 目录下
conf
logs
scripts
配置 /exlibris/backup/conf/
bkp_init.dat
bkp_param.conf
创建backup_files 目录(存放备份结果)
mkdir /exlibris/backup_files
chmod 777 /exlibris/backup_files
47
backup package
• bkp_param.conf
setenv BKP_ROOT /exlibris/backup
setenv BKP_DIR /exlibris/backup_files/
setenv SUCCESS_BKPS 3
setenv BKP_MAIL "[email protected]
[email protected]"
48
backup package
• bkp_init.dat
#Aleph
a1:aleph:aleph:/exlibris/aleph/a20_1:ora_cold
a2:aleph:aleph:/exlibris/aleph/a20_1:ora_hot
a3:aleph:aleph:/exlibris/aleph/a20_1:ora_archive
a4:aleph:aleph:/exlibris/aleph/a20_1:prd_software
a5:aleph:aleph:/exlibris/aleph/a20_1:user_data
a6:aleph:aleph:/exlibris/aleph/a20_1:exp_user_data
49
backup package
• 执行RMAN备份
cd /exlibris/backup/scripts
冷备 ./exec_backup_main a1 &
热备 ./exec_backup_main a2 &
备份归档 ./exec_backup_main a3 &
• 结果文件在 /exlibris/backup_files/
ALEPH20_11_ora_hot_20101115_460_1
ALEPH20_11_ora_hot_20101115_460_2
ALEPH20_11_ora_hot_20101115_460_3
aleph20_11_ora_hot_control_file_c-1911800232-20101115-00
50
RMAN 恢复
rman target /
set DBID 1911800232;
startup nomount;
set CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO
'/exlibris/backup_files/aleph20_11_ora_hot_control_file_%F';
RESTORE CONTROLFILE FROM AUTOBACKUP;
alter database mount;
restore database;
recover database;
alter database open resetlogs;
• 以oracle用户执行/exlibris/backup/scripts/restore_rman
• 具体请参见《RMAN备份与恢复手册》
51
RMAN 备份策略
• 推荐:每周做一次停机冷备,然后每天做热备
• 可以定义到root用户的crontab里
[root@aleph ~]# crontab -l
10 02 * * 0 /exlibris/backup/scripts/exec_backup_main a1
10 02 * * 1-6 /exlibris/backup/scripts/exec_backup_main a2
• 也可以采用每天热备方式
10 02 * * * /exlibris/backup/scripts/exec_backup_main a2
52
提纲
• 操作系统文件的备份与同步
• oracle数据表及数据库文件的备份与恢复
• 服务器移植与同步
53
ALEPH 产品目录结构
Products
- cobol
- gcc
- apache
- perl
ALEPH
(../a20_1)
data-base (../oradata)
Unix Server
alephe
(../u20_1)
Oracle
software (../app)
Libraries
(../u20_1/ndu01)
a20_1 vs. u20_1
• 通常每个用户安装时都有: a20_1 和 u20_1.
• a20_1 公司的程序
• u20_1 用户的配置
exlibris
/aleph
a20_1
usm50
usm01 …
u20_1
alephe
alephe
(original)
(active)
EXU01
…
EXU50…
ALEPH产品移植的步骤
• 标准安装的pre_exlibris部分
18版执行setup_2 到 setup_5
20版执行ikit_menu 2
完成用户创建,操作系统参数修改,目录创建等
• 标准安装或移植oracle、product
• 移植aleph目录
atree (a18_1, a20_1)
utree (u18_1, u20_1)
• 修改跟服务器有关的参数
56
ALEPH产品移植
• 需移植的目录:
/exlibris/aleph/a20_1
/exlibris/aleph/u20_1
• 以下可在安装时创建。
/exlibris/app/
/exlibris/product/
/exlibris/oradata
57
ALEPH 产品移植
• 移植后需修要文件:
alephe/aleph_start
alephe/www_server.conf
alephe/apache/conf/httpd.conf
alephe/apache/htdocs/.index.html
alephe/apache/cgi-bin/opac.conf
alephe/jakarta-tomcat-4.1.30/conf/server.xml
alephe/jakarta-tomcat-4.1.30/webapps/apsm/settings.jsp
alephe/jakarta-tomcat-4.1.30/webapps/apss/settings.jsp
alephe/jakarta-tomcat-4.1.30/webapps/easysql/settings.jsp
alephe/jboss_conf/main.properties
alephe/tab/tab100
• 修改内容
主机名,IP地址
oracle sid
58
ALEPH 产品移植
• 跨平台移植:
• 以下目录跟平台相关:
$aleph_exe
$alephm_proc
$alephe_root/aleph_start
• 以下目录下的文件需要重新编译
$alephm_source/ffs
$alephm_source/ffs_opac
$alephm_source/preorder
$alephm_source/ffs_xxx (xxx是用户代码)
所有自定义批处理服务。
59
ALEPH 产品移植
• 注意事项:
先执行aleph_shutdown 停所有应用
通过du –sh * 查看那个目录文件比较多,需要手
工删除无效文件。
60
Oracle的移植
• 同平台的情况
方法一:直接移植oradata目录下的数据文件
方法二:Rman备份恢复
修改oracle参数:db_domain,service_name,memory
修改listener,tnsname
• 跨平台的情况
需导出数据再导入到另外服务器上
导出/导入方法可以是:
exp_current_library / imp_current_library
oracle_expdp_current_lib / oracle_impdp_current_lib
oracle_exp_current_lib / oracle_imp_current_lib
需手工创建opac,easysql, 门禁的帐户或表、视图
61
服务器同步
• 在正式机上运行:
数据文件的备份与同步
exp_current_library
backup_data
backup_ftp
数据库的备份
以root用户定义crontab
10 02 * * * /exlibris/backup/scripts/exec_backup_main a2
62
服务器同步
• 在备机上
同步参数表和程序,aleph用户的crontab
00 07 * * 1 csh -f /exlibris/aleph/a20_1/aleph/lclproc/rsync_auto.csh
同步数据库备份文件,oracle用户的crontab
10 07 * * * rsync -a --delete aleph1:/exlibris/backup_files/ /exlibris/backup_files/
63
作业
• 查看本馆job_list 找出跟数据备份相关的定义
• 查看本馆root用户和aleph用户的crontab
• 确认本馆数据备份目录,查看数据备份文件大
小
64
Thank
You!
谢谢!