PostgreSQL的目錄結構及修改資料目錄

來源:互聯網
上載者:User

標籤:移動   base   tar   www   mes   通過   檔案儲存體   storage   .com   

initdb 的時候會指定一個 PGDATA 目錄,這就是 PostgresQL 儲存資料的地方,比如:/var/lib/pgsql/10/data。
======顯示資料目錄
1. 進入psql
sudo -u postgres psql
2. 找到資料目錄
postgres=# SHOW data_directory;
data_directory
------------------------
/var/lib/pgsql/10/data
(1 row)

======PGDATA 下面各項儲存的內容大概是:
檔案儲存體內容
PG_VERSION     執行個體的 版本號碼
postgresql.conf   主設定檔
postgresql.auto.conf (新功能,優先順序更高)
pg_hba.conf        認證設定檔
pg_ident.conf       映射設定檔
postmaster.opts    /usr/pgsql-10/bin/postgres "-D" "/var/lib/pgsql/10/data/"
postmaster.pid
...

目錄名: 儲存內容
base:預設資料表空間目錄,建立的表格儲存在此目錄中.每個 database 會在 base 目錄下有一個子目錄
global: 一些共用系統資料表的目錄.Postgres 自己的 meta 資料庫存放的地方(全域 DB)
pg_stat_tmp: 統計資訊的儲存目錄
pg_tblsp: 儲存了指向各個使用者自建資料表空間實際目錄的連結方式
pg_twophase: 使用兩階段交易認可功能時分散式交易的儲存目錄
==以下目錄功能待補充...
log
pg_commit_ts
pg_dynshmem
pg_logical
pg_multixact
pg_notify
pg_replslot
pg_serial
pg_snapshots
pg_stat
pg_subtrans
pg_wal
pg_xact

以下目錄應該是10.0以前版本的
pg_clog: commit log的目錄
pg_log:系統日誌目錄,在查詢一些系統錯誤時就可查看此目錄下的記錄檔
pg_xlog:wal(Write Ahead Log 預寫式日誌)日誌的目錄

base 目錄是最重要的一個目錄,放的是每一個 database 的資料。
base 目錄裡的每一個數字目錄對於一個 database 的 oid,可以通過 查看 pg_database 這張表查看每一個 資料庫的 oid 。
[[email protected]]# ls /var/lib/pgsql/10/data/base
1 13805 13806
postgres=# select oid, datname from pg_database ;
oid | datname
-------+-----------
13806 | postgres
1 | template1
13805 | template0
(3 rows)

每一張表的資料(大部分)又是放在 base/(dboid)/(relfilenode) 這個檔案裡面:
postgres=# select relname, relowner, relfilenode from pg_class where relowner = 13805;
relname | relowner | relfilenode
---------+----------+-------------
(0 rows)

查詢‘item‘表的資料檔案.這裡的‘item‘是table名稱.
lai=# select pg_relation_filepath(‘item‘);
pg_relation_filepath
----------------------
base/16385/24595
(1 row)

======PG安裝目錄,postgresql預設在/usr/pgsql-10
子目錄有:
(1)/usr/pgsql-10/bin: 二進位可執行檔目錄,此目錄下有postgres,psql等可執行程式.
(2)/usr/pgsql-10/lib: 動態庫目錄,PG程式運行需要的動態庫都在此目錄下,如libpg.so.
(3)/usr/pgsql-10/share: 此目錄下存放有文檔和配置模板檔案,一些擴充包的sql檔案,在此目錄的子目錄extension下.

-----------
修改data_directory的所有者,目錄許可權
chown -R postgres:postgres /home/pgdata
chmod 700 /home/pgdata
--------
======修改資料目錄
1. 進入psql
sudo -u postgres psql
2. 找到資料目錄
SHOW data_directory;
3. 關閉資料庫
sudo systemctl stop postgresql
sudo systemctl status postgresql
4. 我們將現有的資料庫目錄複製到新的位置用rsync。
>> 使用-a標誌保留的許可權和其他目錄屬性, 能避免未來的升級許可權問題.
>> 而-v提供詳細輸出,以便能夠按照進度。
注意:確保沒有對目錄沒有尾隨斜線,如果你使用定位字元完成可以加入。
當有一個結尾的斜線, rsync將轉儲目錄複寫到安裝點,而不是轉移成一個包含內容PostgreSQL目錄:
sudo rsync -av /var/lib/postgresql /mnt/newdir
5. 複製完成後,我們將使用.bak副檔名重新命名當前檔案夾,並保留該檔案,直到我們確認移動已成功。 通過重新命名它,我們將避免可能由於新的和舊的位置中的檔案引起的混亂:
sudo mv /var/lib/postgresql/10/data /var/lib/postgresql/10/data.bak
6. 修改設定檔:postgresql.conf
data_directory = ‘/mnt/newdir/postgresql/10/data‘
7. 啟動資料庫
sudo systemctl start postgresql
sudo systemctl status postgresql
8. 顯示資料目錄
sudo -u postgres psql
SHOW data_directory;
9. 刪除備份
sudo rm -Rf /var/lib/postgresql/9.5/main.bak
10.重啟
sudo systemctl restart postgresql
sudo systemctl status postgresql

==================
移動PostgreSQL的資料目錄移到新位置
https://www.howtoing.com/how-to-move-a-postgresql-data-directory-to-a-new-location-on-ubuntu-16-04

PG安裝目錄
79563881
Postgres 資料表檔案儲存體位置
60962451
http://veryr.com/posts/postgres-storage-location/

 

PostgreSQL的目錄結構及修改資料目錄

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.