新聞中心
PostgreSQL是一種廣泛使用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它采用開放源代碼進(jìn)行開發(fā)和維護(hù)。在Linux系統(tǒng)中使用PostgreSQL數(shù)據(jù)庫(kù)管理系統(tǒng)是很常見的,但是備份卻是一項(xiàng)需要高度專業(yè)知識(shí)和技巧的任務(wù)。在這篇文章中,我們將教授如何備份Linux系統(tǒng)中的PGSQL數(shù)據(jù)庫(kù)。

創(chuàng)新互聯(lián)建站主營(yíng)榆社網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件開發(fā)公司,榆社h5微信小程序開發(fā)搭建,榆社網(wǎng)站營(yíng)銷推廣歡迎榆社等地區(qū)企業(yè)咨詢
備份前的準(zhǔn)備工作
在開始備份之前,有一些準(zhǔn)備工作需要完成。確認(rèn)你有備份所需的權(quán)限,你需要使用該系統(tǒng)的超級(jí)用戶或擁有很高的權(quán)限來備份數(shù)據(jù)庫(kù)。另外,在備份之前,確認(rèn)系統(tǒng)的硬盤空間足夠用于存儲(chǔ)備份文件。
1. 安裝PGSQL備份工具
備份PGSQL數(shù)據(jù)庫(kù)需要使用pg_dump和pg_restore命令。這些命令可以在Linux系統(tǒng)的包管理器中安裝,使用以下命令:
“`
sudo apt-get install postgresql-client
“`
如果你使用的不是Debian/Ubuntu系統(tǒng),可以使用以下命令:
“`
sudo yum install postgresql-client
“`
2. 創(chuàng)建備份目錄
在備份數(shù)據(jù)庫(kù)之前,需要?jiǎng)?chuàng)建一個(gè)備份目錄。這個(gè)目錄可以放在本地硬盤或者遠(yuǎn)程共享的硬盤上。使用以下命令創(chuàng)建一個(gè)本地目錄:
“`
sudo mkdir /var/pgsql_backup
“`
在本地硬盤創(chuàng)建目錄后,如果你需要將備份文件存儲(chǔ)到遠(yuǎn)程共享的硬盤上,可以使用以下命令掛載共享的硬盤:
“`
sudo mount -t cifs //192.168.0.100/backup /var/pgsql_backup -o username=backupuser,password=backuppass
“`
3. 編寫備份腳本
備份腳本有助于簡(jiǎn)化備份過程,避免重復(fù)性工作。在備份腳本中,你需要設(shè)置連接數(shù)據(jù)庫(kù)的用戶名和密碼以及備份文件的位置。使用以下命令創(chuàng)建備份腳本:
“`
sudo nano /home/user/backup_pgsql.sh
“`
編輯腳本:
“`
#!/bin/sh
PGPASSWORD=Your_password
PGUSER=Your_username
PGDATABASE=Your_database
PGHOST=localhost
PGPORT=5432
BACKUP_DIR=/var/pgsql_backup
DATE=`date +%F_%H-%M`
pg_dump -F c -b -v -U$PGUSER -h$PGHOST -p$PGPORT $PGDATABASE | gzip > $BACKUP_DIR/$PGDATABASE-$DATE.sql.gz
“`
4. 設(shè)定備份計(jì)劃
在備份數(shù)據(jù)庫(kù)之前,需要設(shè)置備份計(jì)劃。備份計(jì)劃可以是每天、每周或每月進(jìn)行備份,這需要根據(jù)你的數(shù)據(jù)庫(kù)使用情況和備份需求來確定。使用以下命令打開計(jì)劃任務(wù):
“`
sudo crontab -e
“`
在任務(wù)編輯器中,添加如下計(jì)劃:
“`
0 0 * * * /bin/bash /home/user/backup_pgsql.sh
“`
這將在每天午夜12點(diǎn)進(jìn)行備份,備份文件將儲(chǔ)存在/var/pgsql_backup目錄中。
5. 檢查備份文件
備份后,你需要檢查備份文件是否已正確地生成,并且能夠被還原。使用以下命令檢查備份文件:
“`
cd /var/pgsql_backups
ls
“`
如果備份文件存在,你將看到文件的列表。你可以使用以下命令還原備份文件:
“`
gzip -d dbname-2023-08-02.sql.gz
psql -U postgres -d dbname
“`
這將還原2023年8月2日備份的dbname數(shù)據(jù)文件。
備份PGSQL數(shù)據(jù)庫(kù)可能對(duì)于初學(xué)者來說是一項(xiàng)艱巨的任務(wù),但是通過掌握這些技能,我們可以創(chuàng)建出一個(gè)完整的備份和恢復(fù)計(jì)劃。在實(shí)踐中,你可能會(huì)遇到不同的挑戰(zhàn),但在我們展示的基本備份技術(shù)上,你應(yīng)該可以很好地開展工作。記住,在備份和恢復(fù)重要數(shù)據(jù)時(shí),始終要保持周密的計(jì)劃,小心謹(jǐn)慎的實(shí)踐,以確保成功。
相關(guān)問題拓展閱讀:
- linux怎么用命令登陸postgres
- 如何在Linux下調(diào)試PostgreSQL
linux怎么用命令登陸postgres
(1)用戶實(shí)用程序:
createdb 創(chuàng)建一個(gè)新的PostgreSQL的數(shù)據(jù)庫(kù)(和SQL語(yǔ)句:CREATE DATABASE 相同)
createuser 創(chuàng)建一個(gè)新的PostgreSQL的用戶(和SQL語(yǔ)句:CREATE USER 相同)
dropdb 刪除數(shù)據(jù)庫(kù)
dropuser 刪除穗空用戶
pg_dump 將PostgreSQL數(shù)據(jù)庫(kù)導(dǎo)出到一個(gè)腳本文件
pg_dumpall 將所有的PostgreSQL數(shù)據(jù)庫(kù)導(dǎo)出到一個(gè)腳本文件
pg_restore 從一個(gè)由pg_dump或pg_dumpall程序?qū)С龅哪_本文件中恢復(fù)PostgreSQL數(shù)據(jù)庫(kù)
psql 一個(gè)基于命令行的PostgreSQL交互式客戶端程序
vacuumdb 清理和分析一個(gè)PostgreSQL數(shù)據(jù)庫(kù),它是客戶端程序psql環(huán)境下SQL語(yǔ)句VACUUM的shell腳本封裝,二者功能完全相同
(2)系統(tǒng)實(shí)用程序
initdb 創(chuàng)建一個(gè)用于存儲(chǔ)數(shù)據(jù)庫(kù)的PostgreSQL數(shù)據(jù)目錄,并創(chuàng)建預(yù)定義的模板數(shù)據(jù)庫(kù)template0和游族困template1,生成共享目錄表 catalog;此程序通常只在安裝PostgreSQL時(shí)運(yùn)行一次
initlocation 創(chuàng)建一個(gè)輔助的PostgreSQL數(shù)據(jù)庫(kù)存儲(chǔ)區(qū)域
ipcclean 從停止的PostgreSQL服務(wù)器中清神念除共享內(nèi)在和孤立信號(hào)標(biāo)志
pg_ctl 啟動(dòng)、停止、重啟PostgreSQL服務(wù)(比如:pg_ctl start 啟動(dòng)PostgreSQL服務(wù),它和service postgresql start相同)
pg_controldata 顯示PostgreSQL服務(wù)的內(nèi)部控制信息
postgres PostgreSQL單用戶模式的數(shù)據(jù)庫(kù)服務(wù)
postmaster PostgreSQL多用戶模式的數(shù)據(jù)庫(kù)服務(wù)
4.這里面最重要的是psql這個(gè)客戶端程序最為重要。啟用客戶端程序psql的方法是:
切換到PostgreSQL預(yù)定義的數(shù)據(jù)庫(kù)超級(jí)用戶postgres,啟用客戶端程序psql,并連接到自己想要的數(shù)據(jù)庫(kù),比如說:
psql template1
出現(xiàn)以下界面,說明已經(jīng)進(jìn)入到想要的數(shù)據(jù)庫(kù),可以進(jìn)行想要的操作了。
template1=#
5.在數(shù)據(jù)庫(kù)中的一些命令:
template1=# \l 查看系統(tǒng)中現(xiàn)存的數(shù)據(jù)庫(kù)
template1=# \q 退出客戶端程序psql
template1=# \c 從一個(gè)數(shù)據(jù)庫(kù)中轉(zhuǎn)到另一個(gè)數(shù)據(jù)庫(kù)中,如template1=# \c sales 從template1轉(zhuǎn)到sales
template1=# \dt 查看表
template1=# \d 查看表結(jié)構(gòu)
template1=# \di 查看索引
========================
*創(chuàng)建數(shù)據(jù)庫(kù):
create database ;
*查看數(shù)據(jù)庫(kù)列表:
\d
*刪除數(shù)據(jù)庫(kù):
drop database ;
創(chuàng)建表:
create table ( ;, ,……;);
*查看表名列表:
\d
*查看某個(gè)表的狀況:
\d
*重命名一個(gè)表:
alter table rename to ;
*刪除一個(gè)表:
drop table ;
========================================
==========================
*在已有的表里添加字段:
alter table add column ;
*刪除表中的字段:
alter table drop column ;
*重命名一個(gè)字段:
alter table rename column to ;
*給一個(gè)字段設(shè)置缺省值:
alter table alter column set default ;
*去除缺省值:
alter table alter column drop default;
在表中插入數(shù)據(jù):
insert into 表名 (,,……) values (,,……);
修改表中的某行某列的數(shù)據(jù):
update set = where ;
刪除表中某行數(shù)據(jù):
delete from where ;
delete from ;–刪空整個(gè)表
6.要注意隨時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行清理、收回磁盤空間并更新統(tǒng)計(jì)信息,使用下面的命令就搞定!
vaccumdb -d sales -z
-a 對(duì)所有的數(shù)據(jù)庫(kù)操作
-z 保證不斷地刪除失效的行,節(jié)約磁盤空間,將統(tǒng)計(jì)信息更新為最近的狀態(tài)
7.PostgreSQL用戶認(rèn)證
PostgreSQL數(shù)據(jù)目錄中的pg_hba.conf的作用就是用戶認(rèn)證,可以在/var/lib/pgsql/data中找到。
有以下幾個(gè)例子可以看看:
(1)允許在本機(jī)上的任何身份連接任何數(shù)據(jù)庫(kù)
TYPE DATABASEUSER IP-ADDRESS IP-MASK METHOD
local allall trust(無條件進(jìn)行連接)
(2)允許IP地址為192.168.1.x的任何主機(jī)與數(shù)據(jù)庫(kù)sales連接
TYPE DATABASEUSER IP-ADDRESS IP-MASK METHOD
host salesall.168.1..255.255.0 ident sameuser(表明任何操作系統(tǒng)用戶都能夠以同名數(shù)據(jù)庫(kù)用戶進(jìn)行連接)
8.看了那么多,來一個(gè)完整的創(chuàng)建PostgreSQL數(shù)據(jù)庫(kù)用戶的示例吧
(1)進(jìn)入PostgreSQL高級(jí)用戶
(2)啟用客戶端程序,并進(jìn)入template1數(shù)據(jù)庫(kù)
psql template1
(3)創(chuàng)建用戶
template1=# CREATE USER hellen WITH ENCRYPED PASSWORD’zhenzhen’
(4)因?yàn)樵O(shè)置了密碼,所以要編輯pg_hba.conf,使用戶和配置文件同步。
在原有記錄上面添加md5
local all hellen md5
(4)使用新用戶登錄數(shù)據(jù)庫(kù)
template1=# \q
psql -U hellen -d template1
PS:在一個(gè)數(shù)據(jù)庫(kù)中如果要切換用戶,要使用如下命令:
template1=# \!psql -U tk -d template1
9.設(shè)定用戶特定的權(quán)限
還是要用例子來說明:
創(chuàng)建一個(gè)用戶組:
sales=# CREATE GROUP sale;
添加幾個(gè)用戶進(jìn)入該組
sales=# ALTER GROUP sale ADD USER sale1,sale2,sale3;
授予用戶級(jí)sale針對(duì)表employee和products的SELECT權(quán)限
sales=# GRANT SELECT ON employee,products TO GROUP sale;
在sale中將用戶user2刪除
sales=# ALTER GROP sale DROP USER sale2;
10.備份數(shù)據(jù)庫(kù)
可以使用pg_dump和pg_dumpall來完成。比如備份sales數(shù)據(jù)庫(kù):
如何在Linux下調(diào)試PostgreSQL
1. 安裝Linux操作系統(tǒng)
注意把gdb、Emacs或DDD這些開發(fā)工具都安裝上。如果是在虛擬機(jī)上安裝,依然需要設(shè)置Linux系統(tǒng)的網(wǎng)絡(luò)環(huán)境;另外需要設(shè)置文件共享,方便windows下面的postgreSQL源碼能在Linux下面訪問到。
2. 安裝PostgreSQL
useradd postgre
?。ㄗ詣?dòng)建立 postgre 組;設(shè)計(jì)人員為了安全考慮,PostgreSQL 不能以root 用戶運(yùn)行,所以必須建立對(duì)應(yīng)的用戶和組。)
解壓到 /usr/local/src
tar xvfz postgresql-8.4.tar.gz
cd postgresql-8.4
./configure –prefix=/usr/local/pgsql –enable-debug –enable-assert –without-readline –without-zlib
make
make install
chown -R postgre.postgre /usr/local/pgsql
3. 設(shè)置Postgres環(huán)境變量(非必須)
vi ~postgre/.bash_profile
添加:
PGLIB=/usr/local/pgsql/lib
PGDATA=$HOME/data
PATH=$PATH:/usr/local/pgsql/bin
MANPATH=$MANPATH:/usr/local/pgsql/man
export PGLIB PGDATA PATH MANPATH
4. 建立數(shù)據(jù)庫(kù)
以 postgres 用戶登錄:
su postgre
建立數(shù)據(jù)庫(kù)目錄:
mkdir data
啟動(dòng)數(shù)據(jù)庫(kù)引擎:
initdb –D “數(shù)據(jù)庫(kù)目錄”
之后可以根據(jù)提示,通過psql進(jìn)入數(shù)據(jù)庫(kù)
5. 構(gòu)造PostgreSQL調(diào)試環(huán)境
先 psql template1進(jìn)去,然后
select pg_backend_pid();
獲得id,就是gdb后面用到的數(shù)字
gdb /usr/local/pgsql/bin/postgres 997(pid的數(shù)字)
如果只使用gdb,全部是命令行界面;而Emac、DDD分別是彩色、黑白用戶交互式圖形界面。
6. 使用gdb進(jìn)行調(diào)試
關(guān)于linux pgsql備份的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)站欄目:LinuxPGSQL數(shù)據(jù)庫(kù)備份教程(linuxpgsql備份)
本文網(wǎng)址:http://fisionsoft.com.cn/article/cojesog.html


咨詢
建站咨詢
