使用 pg_dump 在 PostgreSQL 中建立資料庫的備份檔案
資料備份是確保在發生資料丟失等事件時預防措施有效的關鍵過程。我們可以根據大小和環境以不同的形式和方式備份資料。
本文將討論如何建立 PostgreSQL 資料庫的備份並訪問檔案儲存在我們計算機上的不同位置。
在 PostgreSQL 中建立並連線到資料庫
處理真實使用者資料時,請將備份儲存在安全環境中,例如 USB 記憶棒、外部硬碟驅動器、雲端儲存或其他安全位置。
我們將建立一個包含一個實體的資料庫,然後建立該資料庫的備份。該實體將僅包含一條記錄,但你可以新增更多用於測試目的。
然後,我們將使用 pg_dump
命令列工具將單個資料庫備份到指令碼檔案。指令碼檔案是一個帶有 SQL 命令的文字檔案,用於將資料庫重建到儲存時的狀態。
要重建資料庫,請向 Psql 提供指令碼。
使用如下所示的命令登入 PostgreSQL 伺服器。
david@david-HP-ProBook-6470b:~$ psql -U postgres
Password for user postgres:
輸入使用者 postgres
的密碼,然後按鍵盤上的 Enter 按鈕。
psql (14.2 (Ubuntu 14.2-1.pgdg18.04+1))
Type "help" for help.
postgres=#
建立一個名為 pg_dump_db
的資料庫,其中將包含我們的實體。將以下命令複製並貼上到你的終端上,然後按鍵盤上的 Enter 按鈕。
postgres=# create database pg_dump_db;
CREATE DATABASE
使用以下命令連線到 pg_dump_db
資料庫,以確保我們正在使用正確的資料庫。
postgres=# \c pg_dump_db;
You are now connected to database "pg_dump_db" as user "postgres".
使用欄位 id
、first_name
、last_name
和 email
建立一個名為 users
的實體。將以下資料定義語言複製並貼上到你的終端,然後按 Enter。
pg_dump_db=# create table users(
pg_dump_db=# first_name varchar(30),
pg_dump_db=# last_name varchar(30),
pg_dump_db=# email varchar(50),
pg_dump_db=# id SERIAL UNIQUE NOT NULL,
pg_dump_db=# PRIMARY KEY(id));
CREATE TABLE
在 users
實體中插入一條記錄。將以下資料操作命令複製並貼上到你的終端,然後按 Enter。
pg_dump_db=# insert into users(first_name, last_name, email)
pg_dump_db-# values('john','doe','john@gmail.com');
INSERT 0 1
使用 pg_dump
在當前目錄中建立資料庫的備份檔案
由於 pg_dump
是一個命令列工具,請確保你從 PostgreSQL 伺服器登出並在登入伺服器時執行該命令。
postgres=# exit;
使用以下命令建立 pg_dump_db
資料庫的備份。輸出檔案儲存在當前目錄中。
david@david-HP-ProBook-6470b:~$ pg_dump -U postgres pg_dump_db > backup.sql
Password:
輸出檔案是在當前目錄中建立的,因為沒有指定生成檔案的路徑。
對於 Linux 使用者,當前目錄是 /home/
目錄,其中儲存了所有資料,例如與使用者有關的資料夾和檔案。
轉到 /home/
資料夾後,你將找到一個名為 backup.sql
的檔案,其中包含 pg_dump_db
資料庫的備份。
使用 pg_dump
在自定義目錄中建立資料庫的備份檔案
如果我們想在計算機上的特定位置備份,我們可以使用相同的命令並新增我們要建立檔案的路徑。
使用以下命令建立儲存在我們桌面上的 pg_dump_db
資料庫的備份。
david@david-HP-ProBook-6470b:~$ pg_dump -U postgres pg_dump_db > /home/david/Desktop/backup.sql
Password:
在上面的示例中,我們提供了桌面的絕對路徑以及在該位置建立的檔名。
轉到 /Desktop/
資料夾。你將找到一個名為 backup.sql
的檔案,其中包含 pg_dump_db
資料庫的備份。
まとめ
我們在所涵蓋的兩個示例中使用了 >
符號。但是,你可以使用 -f
標誌告訴 pg_dump
你要將結果寫入檔案。
如果你不提供要建立檔案的路徑,則該檔案將在 /home/
目錄中建立。請注意,這僅適用於 Linux 使用者,並且取決於 Linux 發行版。
如果你提供要建立檔案的路徑,則可以在該位置找到該檔案。
David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.
LinkedIn GitHub