配置PostgreSQL進(jìn)行多機(jī)熱備_第1頁
配置PostgreSQL進(jìn)行多機(jī)熱備_第2頁
配置PostgreSQL進(jìn)行多機(jī)熱備_第3頁
配置PostgreSQL進(jìn)行多機(jī)熱備_第4頁
配置PostgreSQL進(jìn)行多機(jī)熱備_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、PostgreSQL備份與恢復(fù)示例文檔控制i文檔變更記錄日期版本號(hào)作者備注2009-8-13v1.0陳浩創(chuàng)建PostgreSQL 備份與恢復(fù) 1文檔控制1一、簡介3二、SQL 轉(zhuǎn)儲(chǔ)3(一)pg_dump 3(二)pg_dumpall; 4(三)備份壓縮與分割_5三、 一文件系統(tǒng)級(jí)別備份(冷備份)_5四、在線熱備份(歸檔)_6(一)備份 6(二)恢復(fù)6一、簡介Postgresql的備份分為三種:lSQL轉(zhuǎn)儲(chǔ)l文件系統(tǒng)級(jí)別備份(冷備份)l在線熱備份(歸檔)以下通過實(shí)例來講解PostgreSQL的三種備份二、SQL轉(zhuǎn)儲(chǔ)(一) pg_dump1,創(chuàng)建數(shù)據(jù)庫createdb pg2,連入數(shù)據(jù)庫pgpsq

2、l pg3,創(chuàng)建測試表,插入數(shù)據(jù)pg=# create table pg_test(a in t);pg=# insert into pg_test(a) values(1);pg=# insert into pg_test(a) values(2);4,查看數(shù)據(jù)pg=# select * from tb;12(2 rows)5, 備份pg_dump pg > /usr/local/pgsql/backup/pg.dmp6, 刪除數(shù)據(jù)庫pgdropdb pg7, 創(chuàng)建新數(shù)據(jù)庫(恢復(fù)之前需創(chuàng)建數(shù)據(jù)庫)createdb pg8, 恢復(fù)數(shù)據(jù)psql pb < /usr/local/pgs

3、ql/backup/pg.dmp9, 查看數(shù)據(jù)是否回復(fù)pg=# select * from tb;a12(2 rows)至此,數(shù)據(jù)已成功恢復(fù)!注:pg_du mp可以對針對單表或者多表進(jìn)行備份女口: pg_dump database name t table namel t table name2 >file name(二) pg_dumpallpg_dump只能備份單個(gè)數(shù)據(jù)庫,而且恢復(fù)的時(shí)候需要?jiǎng)?chuàng)建空數(shù)據(jù)庫 pg_dumpall可以備份所有數(shù)據(jù)庫,并且備份角色、表空間。1,創(chuàng)建數(shù)據(jù)庫createdb pg1createdb pg22,pg1中創(chuàng)建表并插入數(shù)據(jù)psql pgipg=# c

4、reate table tb1(a int)pg=# in sert into tb1(a) values(1);3,pg2中創(chuàng)建表并插入數(shù)據(jù)psql pg2pg=# create table tb2(a int)pg=# in sert into tb2(a) values(2);4,備份數(shù)據(jù)庫pg_dumpall > /usr/local/pgsql/backup/pg_all.dmp5,刪除數(shù)據(jù)庫dropdb pg1dropdb pg26,恢復(fù)數(shù)據(jù)庫psql - f /usr/local/pgsql/backup/pg_all.dmp postgrespostgres可以指定任何數(shù)

5、據(jù)庫名,如果恢復(fù)到一個(gè)空的集群中,通常使用數(shù)據(jù)庫7,查看數(shù)據(jù)庫pg1是否恢復(fù)psql pg1pg=# select * from tbl;a1(1 rows)8,查看數(shù)據(jù)庫pg2是否恢復(fù)psql pg2pg=# select * from tb2;a2(1 rows)至此,數(shù)據(jù)已成功恢復(fù)!(三) 備份壓縮與分割壓縮與分割的原理都是利用Linux的管線(PIP巳命令,不再進(jìn)行試驗(yàn)1)壓縮l 備份:pg_dump dbn ame | gzip > file name.gzl 恢復(fù)gun zip -c file name.gz | psql dbn ame2)分割l 備份:pg_dump db

6、n ame | split -b1m- file namel 恢復(fù)cat file name* | psql dbn ame三、文件系統(tǒng)級(jí)別備份(冷備份)文件系統(tǒng)級(jí)別的備份是冷備份,需要停止數(shù)據(jù)庫。1, 停止數(shù)據(jù)庫pg_ctl - D /usr/local/pgsql/data stop2, 備份數(shù)據(jù)庫tar jcv f /usr/local/pgsql/backup/filesystem.tar.bz2/usr/local/pgsql/data/3, 刪除/usr/local/pgsql/data/ 目錄rm - r /usr/local/pgsql/data/4, 解壓備份文件到原目錄ta

7、r jxv f /usr/local/pgsql/backup/filesystem.tar.bz2 C /5, 啟動(dòng)數(shù)據(jù)庫pg_ctl - D /usr/local/pgsql/data start6, 查看數(shù)據(jù)庫pg1是否恢復(fù)psql pg1pg=# select * from tb1;(1 rows)7, 查看數(shù)據(jù)庫pg2是否恢復(fù)psql pg2pg=# select * from tb2;a2(1 rows)至此,數(shù)據(jù)已成功恢復(fù)!四、在線熱備份(歸檔)(一)備份1, 配置歸檔模式配置歸檔需要編輯postgresql.conf文件,默認(rèn)為與/usr/local/pgsql/data/ 目

8、錄下vim /usr/local/pgsql/data/postgesql.c onfarchive_mode = onarchive_comma nd = cp %p/usr/local/pgsql/backup/archived_log/%f注:砂被歸檔的日志文件的路徑,%f是要被歸檔的日志文件的文件名2, 啟動(dòng)數(shù)據(jù)庫pg_ctl - D /usr/local/pgsql/data start3, 創(chuàng)建數(shù)據(jù)庫archcreatedb arch4, 創(chuàng)建表并插入記錄psql archarch=# create table tb(a in t);arch=# insert into tb(a)

9、 values(1);5, 創(chuàng)建備份arch=# select pg_start_backup( baseline ');6, 備份整個(gè)data目錄tar jcv f /usr/local/pgsql/backup/baseli ne.tar.bz2/usr/local/pgsql/data/7, 停止備份psql archarch=# select pg_stop_backup();8, 插入新記錄,然后切換日志,重復(fù) 3次arch=# insert into tb(a) values(2);arch=# select pg_switch_xlog();arch=# insert i

10、nto tb(a) values(3);arch=# select pg_switch_xlog();arch=# insert into tb(a) values(4);arch=# select pg_switch_xlog();9, 把/data/pg_xlog/下的WAL日志文件復(fù)制到預(yù)設(shè)的歸檔目錄下,保證產(chǎn)生的WAL日志都已歸檔(二)恢復(fù)1, 停止數(shù)據(jù)庫pg_ctl - D /usr/local/pgsql/data/ stop2, 刪除 /data/rm - r /usr/local/pgsql/data/3, 恢復(fù)備份tar jxv f /usr/local/pgsql/back

11、up/baseli ne.tar.bz2 C /4, 清空/data/pg_xlog/目錄下所有文件rm - r /usr/local/pgsql/data/pg_xlog/5,創(chuàng)建/pg_xlog/及其下面的archive_status 目錄mkdir /usr/local/pgsql/data/pg_xlog/mkdir /usr/local/pgsql/data/pg_xlog/archive_status6, 在/data/ 目錄下創(chuàng)建 recovery.confvim /usr/local/pgsql/data/recovery.c onfrestore_comma nd = cp

12、/usr/local/pgsql/backup/archived_log/%f“%p '7, 啟動(dòng)數(shù)據(jù)庫pg_ctl - D /usr/local/pgsql/data/ start一切正常的話數(shù)據(jù)庫就會(huì)自動(dòng)應(yīng)用WAI日志進(jìn)行恢復(fù)8, 查看數(shù)據(jù)庫arch是否恢復(fù)psql archarch=# select * from tb;a34(4 rows)至此,數(shù)據(jù)已成功恢復(fù)!配置PostgreSQL進(jìn)行多機(jī)熱備文檔控制i文檔變更記錄日期版本號(hào)作者備注2009-9-8v1.0陳浩創(chuàng)建1規(guī)劃說明主機(jī)備機(jī)Linux 版本Debia n502Debia n502IP address192.168.1

13、5.90192.168.15.91PostgreSQL版本8.48.4PostgreSQL安裝目錄/usr/local/pgsql/usr/local/pgsql/數(shù)據(jù)文件目錄/usr/local/pgsql/data/usr/local/pgsql/data歸檔日志目錄/usr/local/pgsql/backup/archive_log/熱備日志目錄/usr/local/pgsql/backup/sta ndby_log/2 安裝 PostgreSQL下載PostgreSQL8.4版本,安裝到主機(jī)和備機(jī)規(guī)劃的目錄中,并初始化數(shù)據(jù)庫集 群,創(chuàng)建standby數(shù)據(jù)庫。3 安裝 pg_stand

14、by備機(jī)進(jìn)入編譯后的/postgresql-8.4.0/contrib./pg_standby目錄,執(zhí)行以下命令makemake in stall這時(shí)便安裝好pg_standby。4安裝設(shè)定SCP無密碼傳送文件4.1主機(jī)和備機(jī)分別安裝SSHapt-get in stall ope nssh-server4.2主機(jī)和備機(jī)分別創(chuàng)建/home/postgres/.ssh/ 目錄mkdir p /home/postgres/.ssh/4.3主機(jī)以postgres用戶登錄,創(chuàng)建密碼文件ssh-keygen - t rsa,三個(gè)回車,密碼文件默認(rèn)會(huì)創(chuàng)建在 /home/postgres/.ssh/下4.4把

15、主機(jī)的id_rsa.pub 傳送到備機(jī)同目錄,命名為 authorized_keysscp /home/postgres/.ssh/id_rsa.pub postgres192.168.15.91:/home/postg res/.ssh/authorized_keys ,出現(xiàn)提示時(shí)輸入備機(jī) postgres用戶的密碼4.5輸入ssh 192.168.15.91進(jìn)行測試,無需輸入密碼即可連接,這時(shí)主機(jī)向備 機(jī)傳送歸檔 WA日志文件時(shí)就不用輸入密碼了。5主機(jī)設(shè)定WAL歸檔vim /usr/local/pgsql/data/postgres.c onf設(shè)定如下參數(shù):archive_mode = o

16、narchive_comma nd = scp %p192.168.15.91:/usr/local/pgsql/backup/sta ndby_log/%f v/dev/null'archive_timeout = 1200archive_mode參數(shù),開啟WAL歸檔archive_command參數(shù),設(shè)定歸檔時(shí)執(zhí)行的命令,我們這里通過scp把主機(jī)的 WAL 歸檔日志傳送到備機(jī)的/usr/local/pgsql/backup/standby_log/ 目錄下archive_timeout參數(shù),規(guī)定了最多多久執(zhí)行一次歸檔,也是發(fā)生故障時(shí)數(shù)據(jù)庫 丟失數(shù)據(jù)的最長時(shí)間。設(shè)定很小的話保證了安全

17、性,增加了網(wǎng)絡(luò)傳輸量。6主機(jī)進(jìn)行備份,恢復(fù)到備機(jī)6.1主機(jī)開始備份psql sta ndbyselect pg_start_backup( baseline ');6.2主機(jī)壓縮備份整個(gè)data目錄tar jcv f /usr/local/pgsql/backup/baseli ne.tar.bz2/usr/local/pgsql/data/6.3主機(jī)通過scp復(fù)制到備機(jī)scp /usr/local/pgsql/backup/baseli ne.tar.bz2 192.168.15.90: /usr/loca l/pgsql/backup/baseli ne.tar.bz26.4備機(jī)解

18、壓縮備份文件tar jxv f /usr/local/pgsql/backup/baseli ne.tar.bz2 C /6.5備機(jī)更改目錄權(quán)限chown - R postgres:postgres /usr/local/pgsql/6.6主機(jī)結(jié)束備份psql sta ndbyselect pg_stop_backup();7備機(jī)進(jìn)行設(shè)置,啟動(dòng)到恢復(fù)模式7.1 在/usr/local/pgsql/data 目錄內(nèi)建立 recovery.conf 文件,設(shè)置如下: restore_comma nd = 'pg_sta ndby -d -s 2 -t /tmp/pgsql.trigger.5432 /usr/local/pgsql/backup/sta ndby_log %f %p %r 2>>sta ndby.log'recovery_e nd_comma nd = 'rm -f /tmp/pgsql.trigger.5432'7.2 更改/usr/local/pgsql/data/postgres.conf文件中備份設(shè)置vim /usr/local/pgsql/data/postgres.c onf把 archive_mode、archive_command archi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論