postgresql备份与恢复(在线备份)
postgresql同样支持在线备份,该备份方式与oracle中用户热备的方式相同,手动拷贝数据文库文件与归档日志。可以根据测试过程将备份直接写成script,通过定制,完成数据库的自动备份。 postgresql的恢复支持基于时间戳与事务ID,可以通过时间戳或事务ID的方式,完成数据库的不完全恢复或者因错误操作的故障恢复。 该测试目的:postgresql的在线备份;通过在线备份完成恢复。 1,开启归档
2,重新启动数据库
3,启动备份
|
4,使用tar命令备份数据库文件,不包含pg_xlog目录
[postgre@daduxiongarchive]$tar--exclude$PGDATA/pg_xlog-cvjpf/archive/pgbackup.tar.bz2$PGDATA |
5,完成备份
[postgre@daduxiongarchive]$psqlpostgres-c"selectpg_stop_backup();"pg_stop_backup----------------0/70133A0(1row) |
6,在postgres数据库中创建表并插入记录,作为恢复时的判断。
7,此时假设数据库出现问题,停止数据库,拷贝日志
8,删除"发生错误"的data目录 9,解压之前的备份文件压缩包
10,恢复data目录,重新创建pg_xlog目录及其子目录archive_status
11,配置恢复配置文件 12,启动数据库,观察数据库启动的日志 13,验证恢复结果。检查之前创建的表与记录。 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
[postgre@daduxiongarchive]$psqlpostgres
Welcometopsql8.3.10,thePostgreSQLinteractiveterminal.
Type:copyrightfordistributionterms
hforhelpwithSQLcommands
?forhelpwithpsqlcommands
gorterminatewithsemicolontoexecutequery
qtoquit
postgres=#createtableabc(idinteger);
CREATETABLE
postgres=#insertintoabcvalues(1);
INSERT01
postgres=#q
[root@daduxiongpgsql]#servicepostgresqlstop
StoppingPostgreSQL:serverstopped
ok
[postgre@daduxiongarchive]$cp$PGDATA/pg_xlog/*00*/archive/
[root@daduxiongpgsql]#rm-rfdata
[postgre@daduxiongpgsql]$tar-xvf/archive/pgbackup.tar.bz2
....省略
/usr/local/pgsql/data/global/2843
/usr/local/pgsql/data/postmaster.opts
/usr/local/pgsql/data/pg_twophase/
/usr/local/pgsql/data/postmaster.pid
/usr/local/pgsql/data/backup_label
/usr/local/pgsql/data/PG_VERSION
[root@daduxiongpgsql]#mv/archive/usr/local/pgsql/data/usr/local/pgsql
[root@daduxiongdata]#mkdirpg_xlog
[root@daduxiongdata]#chmod0700pg_xlog/
[root@daduxiongdata]#chownpostgre:postgrepg_xlog/
[root@daduxiongdata]#cdpg_xlog/
[root@daduxiongpg_xlog]#mkdirarchive_status
[root@daduxiongpg_xlog]#chmod0700archive_status/
[root@daduxiongpg_xlog]#chownpostgre:postgrearchive_status/
[root@daduxiongpg_xlog]#mv/archive/*00*/usr/local/pgsql/data/pg_xlog
[root@daduxiongpg_xlog]#cd..
[root@daduxiongdata]#ls
backup_labelpg_clogpg_multixactpg_twophasepostgresql.conf
basepg_hba.confpg_subtransPG_VERSIONpostmaster.opts
globalpg_ident.confpg_tblspcpg_xlogpostmaster.pid
[root@daduxiongdata]#touchrecovery.conf
[root@daduxiongdata]#echo"restore_command='cp-i/archive/%f%p'">>recovery.conf
[root@daduxiongdata]#chownpostgre:postgrerecovery.conf
[root@daduxiongdata]#chmod0750recovery.conf
[root@daduxiongdata]#servicepostgresqlstart
StartingPostgreSQL:ok
---省略日志部分内容
LOG:selectednewtimelineID:3
LOG:restoredlogfile"00000002.history"fromarchive
LOG:archiverecoverycomplete
LOG:autovacuumlauncherstarted
LOG:databasesystemisreadytoacceptconnections(编辑:李大同)