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!
谢谢!