欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PostgreSQL 安裝部署及配置使用教程

 更新時間:2025年11月07日 14:54:49   作者:猩火燎猿  
PostgreSQL是一個功能強大的開源對象關系型數(shù)據(jù)庫系統(tǒng),支持 SQL 標準和擴展,適合各種規(guī)模應用,本文給大家介紹PostgreSQL 安裝部署及配置使用,感興趣的朋友跟隨小編一起看看吧

一、PostgreSQL 簡介

PostgreSQL 是一個功能強大的開源對象關系型數(shù)據(jù)庫系統(tǒng),支持 SQL 標準和擴展,適合各種規(guī)模應用。

二、安裝 PostgreSQL

1. Linux(以 Ubuntu 為例)

1.1 更新系統(tǒng)包列表

sudo apt update

1.2 安裝 PostgreSQL

sudo apt install postgresql postgresql-contrib

1.3 查看 PostgreSQL 服務狀態(tài)

sudo systemctl status postgresql

2. CentOS/RHEL

sudo yum install -y postgresql-server postgresql-contrib
sudo postgresql-setup initdb
sudo systemctl enable postgresql
sudo systemctl start postgresql

3. Windows

  1. 訪問 PostgreSQL 官網(wǎng) 下載安裝包。
  2. 運行安裝程序,按提示選擇安裝路徑、端口、超級用戶密碼等。
  3. 安裝完成后,可通過 pgAdmin 或命令行管理數(shù)據(jù)庫。

三、基本配置

1. 配置文件位置

  • postgresql.conf:主配置文件,通常在 /etc/postgresql/<版本>/main/ 或 /var/lib/pgsql/data/
  • pg_hba.conf:客戶端連接認證配置文件

2. 修改監(jiān)聽地址(允許遠程連接)

編輯 postgresql.conf

listen_addresses = '*'

編輯 pg_hba.conf,添加如下一行允許所有 IP 通過密碼方式訪問:

host    all             all             0.0.0.0/0               md5

修改后重啟服務:

sudo systemctl restart postgresql

3. 設置端口號

在 postgresql.conf 中修改:

port = 5432

四、數(shù)據(jù)庫管理

1. 切換到 PostgreSQL 用戶(Linux)

sudo -i -u postgres

2. 進入數(shù)據(jù)庫命令行

psql

3. 創(chuàng)建數(shù)據(jù)庫和用戶

-- 創(chuàng)建用戶
CREATE USER myuser WITH PASSWORD 'mypassword';
-- 創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE mydb OWNER myuser;
-- 授權
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;

4. 修改用戶權限

ALTER USER myuser WITH SUPERUSER;

五、基本使用

1. 連接數(shù)據(jù)庫

命令行連接

psql -U myuser -h localhost -d mydb

使用 pgAdmin(圖形化工具)

  • 打開 pgAdmin,添加服務器,填寫連接信息。

2. 常用 SQL 操作

-- 創(chuàng)建表
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(100)
);
-- 插入數(shù)據(jù)
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
-- 查詢數(shù)據(jù)
SELECT * FROM users;
-- 更新數(shù)據(jù)
UPDATE users SET name = 'Bob' WHERE id = 1;
-- 刪除數(shù)據(jù)
DELETE FROM users WHERE id = 1;

六、備份與恢復

1. 備份數(shù)據(jù)庫

pg_dump -U myuser -h localhost mydb > mydb_backup.sql

2. 恢復數(shù)據(jù)庫

psql -U myuser -h localhost -d mydb < mydb_backup.sql

七、常用維護命令

  • 查看數(shù)據(jù)庫列表:\l
  • 切換數(shù)據(jù)庫:\c dbname
  • 查看表列表:\dt
  • 查看用戶列表:\du
  • 退出:\q

八、附加說明

  • 推薦使用 pgAdmin 進行圖形化管理。
  • 可以使用 Docker 快速部署:
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres

九、進階配置

1. 連接數(shù)與內存參數(shù)

在 postgresql.conf 中調整:

max_connections = 100          # 最大連接數(shù)
shared_buffers = 128MB         # 數(shù)據(jù)庫緩存區(qū)大小,建議為物理內存的 1/4
work_mem = 4MB                 # 每個查詢操作分配的內存
maintenance_work_mem = 64MB    # 維護操作(如 VACUUM)的內存
effective_cache_size = 512MB   # 操作系統(tǒng)可用于緩存的內存估算

修改后需重啟 PostgreSQL 服務。

2. 日志設置

logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_statement = 'all'   # 建議生產環(huán)境設置為 'none' 或 'mod'

3. 自動清理(VACUUM)

PostgreSQL 自動進行垃圾回收,但可手動執(zhí)行:

VACUUM;
VACUUM FULL;      -- 更徹底,可能會鎖表

十、性能優(yōu)化建議

索引優(yōu)化
創(chuàng)建索引可加速查詢:

CREATE INDEX idx_users_email ON users(email);

查詢優(yōu)化
使用 EXPLAIN 分析 SQL 性能:

EXPLAIN SELECT * FROM users WHERE email = 'xxx';

分區(qū)表
大表可分區(qū)提升性能:

CREATE TABLE measurement (
  city_id         int,
  logdate         date,
  peaktemp        int,
  unitsales       int
) PARTITION BY RANGE (logdate);

連接池
建議使用連接池(如 PgBouncer)減少資源消耗。

十一、擴展插件

PostGIS:地理空間數(shù)據(jù)庫擴展

sudo apt install postgis
CREATE EXTENSION postgis;

uuid-ossp:生成 UUID

CREATE EXTENSION "uuid-ossp";
SELECT uuid_generate_v4();

pg_stat_statements:SQL 統(tǒng)計分析

CREATE EXTENSION pg_stat_statements;
SELECT * FROM pg_stat_statements;

十二、安全加固

密碼策略
強密碼,定期更換,禁用默認用戶 postgres 的遠程訪問。

限制訪問 IP
編輯 pg_hba.conf,只允許信任 IP 段訪問。

SSL 加密
配置 SSL,保護數(shù)據(jù)傳輸安全。

ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'

定期備份
使用 pg_dump 或 pg_basebackup 定期備份,保存到安全位置。

十三、常見問題及解決方法

  • 無法遠程連接
    • 檢查 listen_addresses 和 pg_hba.conf 配置。
    • 檢查防火墻是否開放 5432 端口。
  • 密碼認證失敗
    • 確認用戶名、密碼正確。
    • 檢查 pg_hba.conf 的認證方式(如 md5scram-sha-256)。
  • 數(shù)據(jù)庫啟動失敗
    • 查看日志文件(pg_log 目錄)。
    • 檢查磁盤空間和配置文件語法。
  • 性能變慢
    • 檢查慢查詢日志。
    • 執(zhí)行 VACUUM 和 REINDEX。
    • 增加內存分配。

十四、高可用與主從復制

1. 主從流復制

主庫配置

編輯 postgresql.conf

wal_level = replica
max_wal_senders = 10
archive_mode = on
archive_command = 'cp %p /var/lib/postgresql/wal_archive/%f'

在 pg_hba.conf 添加從庫 IP:

host replication all <slave_ip>/32 md5

從庫初始化

使用 pg_basebackup

pg_basebackup -h <master_ip> -D /var/lib/postgresql/data -U replication -P --wal-method=stream

配置 recovery.conf(PostgreSQL 12 及以上為 standby.signal 文件)。

十五、常用工具推薦

  • pgAdmin:官方圖形化管理工具
  • DBeaver:多數(shù)據(jù)庫管理工具
  • Navicat:商業(yè)數(shù)據(jù)庫管理工具
  • psql:命令行工具
  • PgBouncer:輕量級連接池

十六、自動備份與定時任務

1. 使用cron定時備份(Linux)

編輯 crontab,例如每天凌晨2點自動備份數(shù)據(jù)庫:

crontab -e

添加如下內容:

0 2 * * * pg_dump -U myuser -h localhost mydb > /backup/mydb_$(date +\%F).sql

注意:確保 /backup/ 目錄存在且有寫權限,myuser 用戶有備份權限。

2. 自動清理過期備份腳本示例

保留最近7天備份,其余自動刪除:

find /backup/ -name "mydb_*.sql" -mtime +7 -exec rm {} \;

3. Windows 定時任務

可用“任務計劃程序”調用批處理或 PowerShell 腳本實現(xiàn)定時備份。

十七、數(shù)據(jù)庫監(jiān)控

1. 內置視圖

  • pg_stat_activity:查看當前連接和執(zhí)行的SQL
  • pg_stat_database:數(shù)據(jù)庫級統(tǒng)計信息

示例:

SELECT * FROM pg_stat_activity;
SELECT datname, numbackends, xact_commit, xact_rollback FROM pg_stat_database;

2. 監(jiān)控工具

  • pgAdmin:自帶部分監(jiān)控功能
  • Prometheus + Grafana:結合 postgres_exporter 進行可視化監(jiān)控
  • Zabbix、Nagios 等企業(yè)級監(jiān)控工具

十八、升級與遷移

1. 版本升級

1.1 使用pg_upgrade工具(推薦大版本升級)

  1. 安裝新版本 PostgreSQL
  2. 停止舊服務,備份數(shù)據(jù)
  3. 執(zhí)行 pg_upgrade
  4. 檢查數(shù)據(jù)完整性,切換新服務

詳細官方文檔:pg_upgrade

1.2 邏輯備份還原(跨平臺、跨版本)

pg_dumpall -U postgres > all.sql
# 在新環(huán)境還原
psql -U postgres -f all.sql

2. 數(shù)據(jù)遷移

  • 跨服務器遷移:使用 pg_dump + psql,或 pg_basebackup(物理遷移)
  • 跨數(shù)據(jù)庫類型:可用 DBConvert 等工具

十九、常用SQL腳本示例

1. 批量插入數(shù)據(jù)

INSERT INTO users (name, email)
VALUES
  ('Tom', 'tom@example.com'),
  ('Jerry', 'jerry@example.com'),
  ('Spike', 'spike@example.com');

2. 批量更新

UPDATE users SET status = 'active' WHERE id IN (1,2,3);

3. 查詢表結構

\d+ users

4. 查詢某表空間大小

SELECT pg_size_pretty(pg_total_relation_size('users'));

5. 查詢數(shù)據(jù)庫當前連接數(shù)

SELECT count(*) FROM pg_stat_activity;

6. 查看鎖等待

SELECT * FROM pg_locks WHERE NOT granted;

二十、PostgreSQL 優(yōu)秀學習資源

二十一、FAQ 補充

如何重置用戶密碼?

ALTER USER myuser WITH PASSWORD 'newpassword';

如何查看數(shù)據(jù)庫版本?

SELECT version();

如何導出/導入表結構而不帶數(shù)據(jù)?

pg_dump -U myuser -h localhost -s mydb > mydb_schema.sql

如何只導出/導入部分表?

pg_dump -U myuser -h localhost -t users mydb > users.sql
psql -U myuser -d mydb < users.sql

二十三、表分區(qū)(Partition)

1. 適用場景

  • 大數(shù)據(jù)量表,按時間、ID等字段分區(qū),提高查詢與維護效率。

2. 分區(qū)創(chuàng)建示例(按日期分區(qū))

CREATE TABLE sales (
    id serial PRIMARY KEY,
    sale_date date NOT NULL,
    amount numeric
) PARTITION BY RANGE (sale_date);
CREATE TABLE sales_2023 PARTITION OF sales FOR VALUES FROM ('2023-01-01') TO ('2024-01-01');
CREATE TABLE sales_2024 PARTITION OF sales FOR VALUES FROM ('2024-01-01') TO ('2025-01-01');

3. 查看分區(qū)信息

SELECT
    inhrelid::regclass AS child,
    inhparent::regclass AS parent
FROM
    pg_inherits;

二十四、事務與并發(fā)控制

1. 事務基礎

BEGIN;
UPDATE users SET balance = balance - 100 WHERE id = 1;
UPDATE users SET balance = balance + 100 WHERE id = 2;
COMMIT;

用于保證操作的原子性,一致性,隔離性,持久性(ACID)。

2. 隔離級別

  • READ COMMITTED
  • REPEATABLE READ
  • SERIALIZABLE

設置示例:

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

3. 并發(fā)與鎖

  • 行級鎖:SELECT ... FOR UPDATE
  • 表級鎖:LOCK TABLE table_name IN ACCESS EXCLUSIVE MODE;

查看鎖信息:

SELECT * FROM pg_locks WHERE NOT granted;

二十五、觸發(fā)器與存儲過程

1. 觸發(fā)器示例

自動記錄更新日志:

CREATE TABLE users_log (
    id serial PRIMARY KEY,
    user_id int,
    action varchar(20),
    log_time timestamp DEFAULT now()
);
CREATE OR REPLACE FUNCTION log_user_update()
RETURNS trigger AS $$
BEGIN
    INSERT INTO users_log(user_id, action) VALUES (NEW.id, 'update');
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER user_update_trig
AFTER UPDATE ON users
FOR EACH ROW EXECUTE FUNCTION log_user_update();

2. 存儲過程(函數(shù))示例

CREATE OR REPLACE FUNCTION add_user(name text, email text)
RETURNS void AS $$
BEGIN
    INSERT INTO users(name, email) VALUES (name, email);
END;
$$ LANGUAGE plpgsql;

調用:

SELECT add_user('Bob', 'bob@example.com');

二十六、JSON 與全文搜索

1. JSON 數(shù)據(jù)類型

CREATE TABLE orders (
    id serial PRIMARY KEY,
    info jsonb
);
INSERT INTO orders(info) VALUES ('{"customer": "Tom", "items": ["apple", "banana"]}');
SELECT info->>'customer' FROM orders;

2. 全文搜索

CREATE TABLE docs (id serial PRIMARY KEY, content text);
INSERT INTO docs(content) VALUES ('PostgreSQL is a powerful database system.');
SELECT * FROM docs WHERE to_tsvector('english', content) @@ to_tsquery('powerful & database');

二十七、常用運維腳本

1. 清理無用連接

SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE state = 'idle' AND pid <> pg_backend_pid();

2. 自動重建索引

REINDEX TABLE users;

3. 檢查表膨脹

SELECT relname, n_dead_tup
FROM pg_stat_user_tables
WHERE n_dead_tup > 1000;

二十八、故障處理方法

1. 數(shù)據(jù)庫無法啟動

  • 檢查日志文件(默認在 pg_log 目錄)
  • 檢查磁盤空間、配置文件語法
  • 使用 pg_resetwal 修復 WAL 日志損壞

2. 數(shù)據(jù)丟失恢復

  • 立即停止服務,備份現(xiàn)有數(shù)據(jù)目錄
  • 通過備份文件和 WAL 日志恢復

3. 鎖表導致阻塞

  • 查詢阻塞 SQL
  • 殺死阻塞進程(注意數(shù)據(jù)一致性)

二十九、集群與分布式方案

1. 主從復制(同步/異步)

見前文說明。

2. 讀寫分離

  • 主庫寫,從庫讀
  • 應用層或中間件(如 Pgpool-II)實現(xiàn)

3. 分布式擴展

  • Citus:PostgreSQL 分布式擴展插件,適合大數(shù)據(jù)分表分庫
  • Greenplum:基于 PostgreSQL 的分布式數(shù)據(jù)倉庫

4. 高可用

  • Patroni:自動化主從切換、故障恢復
  • Keepalived + VIP:實現(xiàn)數(shù)據(jù)庫虛擬 IP 高可用

三十、PostgreSQL 版本與生命周期

結語

PostgreSQL 功能強大,適合各種應用場景。掌握安裝、配置、性能優(yōu)化、擴展、集群與高可用、故障處理等技能,可以讓你輕松應對生產環(huán)境中的各種需求。如果有具體業(yè)務場景、報錯信息或者深入某一模塊的需求,歡迎繼續(xù)追問!

到此這篇關于PostgreSQL 安裝部署及配置使用教程的文章就介紹到這了,更多相關PostgreSQL 安裝使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 基于PostgreSQL和mysql數(shù)據(jù)類型對比兼容

    基于PostgreSQL和mysql數(shù)據(jù)類型對比兼容

    這篇文章主要介紹了基于PostgreSQL和mysql數(shù)據(jù)類型對比兼容,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostgreSQL 自增語法的用法說明

    PostgreSQL 自增語法的用法說明

    這篇文章主要介紹了PostgreSQL 自增語法的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • PgSQL條件語句與循環(huán)語句示例代碼詳解

    PgSQL條件語句與循環(huán)語句示例代碼詳解

    這篇文章主要介紹了PgSQL條件語句與循環(huán)語句,pgSQL中有兩種條件語句分別為if與case語句,每種語句通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • PostgreSQL備份和還原命令整理大全

    PostgreSQL備份和還原命令整理大全

    這篇文章主要給大家介紹了關于PostgreSQL備份和還原命令整理的相關資料,PostgreSQL是一款非常強大的開源數(shù)據(jù)庫系統(tǒng),提供種類繁多的備份選項,包括完全備份、增量備份等,需要的朋友可以參考下
    2023-07-07
  • PostgreSQL中查看當前時間和日期的幾種常用方法

    PostgreSQL中查看當前時間和日期的幾種常用方法

    在 PostgreSQL 中,有多個函數(shù)可以用來查看當前時間和日期,這些函數(shù)在處理時間戳、日期和時間的計算時非常有用,以下是幾種常用的查看當前時間和日期的函數(shù)及示例,需要的朋友可以參考下
    2024-10-10
  • PostgreSQL用戶登錄失敗自動鎖定的處理方案

    PostgreSQL用戶登錄失敗自動鎖定的處理方案

    這篇文章主要介紹了PostgreSQL用戶登錄失敗自動鎖定的解決辦法,本文給大家分享解決方案,通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • PostgreSQL的應用技巧和示例分享

    PostgreSQL的應用技巧和示例分享

    本文會總結一些Postgres中,從應用需求和場景出發(fā),不太常見,但比較常用并且有用的SQL語句,文中的示例代碼簡潔易懂,需要的小伙伴可以收藏一下
    2023-06-06
  • postgresql 實現(xiàn)取出分組中最大的幾條數(shù)據(jù)

    postgresql 實現(xiàn)取出分組中最大的幾條數(shù)據(jù)

    這篇文章主要介紹了postgresql 實現(xiàn)取出分組中最大的幾條數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 從原理到實戰(zhàn)詳解PostgreSQL如何進行性能優(yōu)化

    從原理到實戰(zhàn)詳解PostgreSQL如何進行性能優(yōu)化

    PostgreSQL作為成熟的開源關系型數(shù)據(jù)庫,以其豐富的特性和高擴展性受到廣泛青睞,但如果不對其內部原理與配置參數(shù)進行深入理解并合理調優(yōu),往往難以發(fā)揮其最佳性能,本文我們就來看看PostgreSQL性能優(yōu)化的相關技巧吧
    2025-07-07
  • postgresql 性能參數(shù)配置方式

    postgresql 性能參數(shù)配置方式

    這篇文章主要介紹了postgresql 性能參數(shù)配置方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評論