Computer >> Máy Tính >  >> Lập trình >> Cơ sở dữ liệu

Quản trị PostgreSQL, Phần 1

Bài đăng này giới thiệu PostgreSQL và hướng dẫn bạn cách cài đặt và cấu hình phiên bản 9.3 trên Linux®.

Giới thiệu

PostgreSQL là Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở tiên tiến nhất thế giới. Nhiều tổ chức hàng đầu, chẳng hạn như Apple, IMDB, Skype, Uber, Lockheed Martin, Verizon và những tổ chức khác, sử dụng PostgreSQL. RDBMS này bắt đầu vào năm 1986, nằm trong dự án POSTGRES tại Đại học California ở Berkeley và đã có hơn 30 năm phát triển tích cực trên nền tảng cốt lõi.

PostgreSQL chạy trên tất cả các hệ điều hành chính và đã tuân thủ ACID kể từ năm 2001. ACID từ viết tắt bao gồm các thành phần sau:

  • Tính nguyên tử :Bạn đảm bảo rằng toàn bộ giao dịch thành công hoặc không có giao dịch nào xảy ra.
  • Tính nhất quán :Bạn đảm bảo rằng tất cả dữ liệu đều nhất quán. Tất cả dữ liệu là hợp lệ theo các quy tắc đã xác định. Các quy tắc bao gồm các ràng buộc, tầng và trình kích hoạt được áp dụng cho cơ sở dữ liệu.
  • Cách ly :Tất cả các giao dịch diễn ra một cách cô lập. Giao dịch không thể đọc dữ liệu từ bất kỳ giao dịch nào khác chưa hoàn tất.
  • Độ bền :Sau khi bạn thực hiện một giao dịch, giao dịch đó vẫn còn trong hệ thống, nếu có sự cố hệ thống ngay sau khi thực hiện.

Không có gì đáng ngạc nhiên khi PostgreSQL đóng vai trò là cơ sở dữ liệu quan hệ nguồn mở được lựa chọn cho nhiều người và tổ chức vì các tiện ích bổ sung mạnh mẽ của nó kết hợp với bộ mở rộng cơ sở dữ liệu không gian địa lý PostGIS phổ biến.

Quản trị PostgreSQL, Phần 1

Nguồn hình ảnh :https://postgresql-database.blogspot.com/2013/08/postgresql-architecture.html

Hỗ trợ

SLA hỗ trợ sản xuất có sẵn từ các công ty sau:

  • https://www.enterprisedb.com
  • https://www.2ndquadrant.com/
  • https://www.revsys.com/
  • https://imperoit.com/PostgreSQL_Support.htm

Các phiên bản được hỗ trợ:Hiện tại (12) / 11/10 / 9.6 / 9.5 / 9.4 Phiên bản phát triển:devel Phiên bản không được hỗ trợ:9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2

Cài đặt và cấu hình

Thực hiện các bước sau để cài đặt và cấu hình Postgres 9.3:

Cài đặt Postgres 9.3 trên Linux 7.1

Chạy lệnh sau để cài đặt Postgres 9.3 trên Red Hat® Linux 7.1:

[root@snwdbsolpeprod01 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.1 (Maipo)

Tạo một thư mục trống

Tạo một thư mục trống để cài đặt cơ sở dữ liệu.

[root@snwdbsolpeprod01 mnt]# mkdir postt
[root@snwdbsolpeprod01 postt]# pwd
/mnt/postt

Tải xuống RPM

Chạy lệnh sau để tải xuống Trình quản lý gói Red Hat (RPM) cho phiên bản hệ điều hành của bạn để bắt đầu cài đặt Postgres:

[root@snwdbsolpeprod01 postt]# wget https://yum.postgresql.org/9.3/redhat/rhel-7-x86_64/pgdg-redhat93-9.3-2.noarch.rpm

Cài đặt RPM

Cài đặt gói RPM bằng lệnh sau:

root@snwdbsolpeprod01 postt]# rpm -ivh pgdg-redhat93-9.3-2.noarch.rpm

Cài đặt các gói bổ sung

Sau khi cài đặt RPM, bạn cần cài đặt một số gói Postgre để cài đặt phần mềm DB.

[root@snwdbsolpeprod01 postt]# yum install postgresql-contrib.x86_64
[root@snwdbsolpeprod01 postt]# yum install postgresql93-server.x86_64

Định cấu hình vị trí PGDATA

Xác định nơi lưu trữ dữ liệu. Để sử dụng vị trí không phải mặc định cho dữ liệu, hãy chỉnh sửa dịch vụ PostgreSQL sysconfig và thay đổi đối số PGDATA.

vi /etc/rc.d/init.d/postgresql
vi /etc/sysconfig/pgsql/postgresql

LƯU Ý :Nếu PostgreSQL trong sysconfig / pgsql không tồn tại, hãy tạo nó và thêm một dòng biểu thị nơi bạn muốn lưu trữ dữ liệu, như được hiển thị trong ví dụ sau:

[root@snwdbsolpeprod01 pgsql]# cd /etc/sysconfig/pgsql/
[root@snwdbsolpeprod01 pgsql]# vi postgresql
[root@snwdbsolpeprod01 pgsql]# cat postgresql
PDGATA=/mnt/postt

Khởi tạo cơ sở dữ liệu

Lệnh đầu tiên (chỉ cần một lần) là khởi tạo cơ sở dữ liệu trong PGDATA.

service <name> initdb

Ví dụ:đối với phiên bản 9.3:

service postgresql-9.3 initdb

hoặc

/usr/pgsql-9.3/bin/postgresql93-setup initdb

[root@snwdbsolpeprod01 data]# /usr/pgsql-9.3/bin/postgresql93-setup initdb
Initializing database ... OK

Đặt Postgres tự động khởi động

Nếu bạn muốn PostgreSQL tự động khởi động khi hệ điều hành khởi động, hãy sử dụng lệnh sau:

[root@snwdbsolpeprod01 data]# chkconfig postgresql-9.3 on

Lưu ý :Chuyển tiếp yêu cầu tới ‘systemctl enable postgresql-9.3.service’.

Khởi động dịch vụ PostgreSQL

Để khởi động dịch vụ PostgreSQL, hãy chạy lệnh sau:

[root@snwdbsolpeprod01 data]# systemctl start postgresql-9.3.service

Định cấu hình cơ sở dữ liệu

Bạn có thể dễ dàng định cấu hình cơ sở dữ liệu bằng cách cập nhật postgresql.conf như được hiển thị trong ví dụ sau:

vi /var/lib/pgsql/9.3/data/postgresql.conf

Thay đổi những điều sau:

listen_address = ‘*’
port = 15000
max_connections=300
shared_buffers = 8192MB                 # min 128kB
                                        # (change requires restart)
temp_buffers = 128MB                    # min 800kB
max_prepared_transactions = 20          # zero disables the feature

log_destination = 'csvlog'
logging_collector = on
log_directory = '/mnt/pgsql/logs'
log_filename = 'postgresql-%a.log'

#------------------------------------------------
# AUTOVACUUM PARAMETERS
#------------------------------------------------

autovacuum = on
# Enable autovacuum subprocess? 'on'
                                        # requires track_counts to also be on.
#log_autovacuum_min_duration = -1       # -1 disables, 0 logs all actions and
                                        # their durations, > 0 logs only
                                        # actions running at least this number
                                        # of milliseconds.
autovacuum_max_workers = 3              # max number of autovacuum subprocesses
                                        # (change requires restart)
autovacuum_naptime = 10080min           # time between autovacuum runs
autovacuum_vacuum_threshold = 1000      # min number of row updates before
                                        # vacuum
#autovacuum_analyze_threshold = 50      # min number of row updates before
                                        # analyze
#autovacuum_vacuum_scale_factor = 0.2   # fraction of table size before vacuum
#autovacuum_analyze_scale_factor = 0.1  # fraction of table size before analyze
#autovacuum_freeze_max_age = 200000000  # maximum XID age before forced vacuum
                                        # (change requires restart)
#autovacuum_multixact_freeze_max_age = 400000000        # maximum Multixact age
                                        # before forced vacuum
                                        # (change requires restart)
#autovacuum_vacuum_cost_delay = 20ms    # default vacuum cost delay for
                                        # autovacuum, in milliseconds;
                                        # -1 means use vacuum_cost_delay
#autovacuum_vacuum_cost_limit = -1      # default vacuum cost limit for
                                        # autovacuum, -1 means use
                                        # vacuum_cost_limit

Định cấu hình cài đặt kết nối cơ sở dữ liệu

Để hạn chế hoặc quản lý cài đặt kết nối cơ sở dữ liệu, hãy chạy lệnh sau:

vi /var/lib/pgsql/9.3/data/pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
local   all             postgres                                md5
local   all             postgres                                ident
# IPv4 local connections:
# IPv6 local connections:
host    all             all             ::1/128                 ident
host    all             all             0.0.0.0/0               md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            ident
#host    replication     postgres        ::1/128                 ident

Định cấu hình tường lửa

Để định cấu hình cổng trên tường lửa, hãy chạy các lệnh sau:

iptables -I INPUT -p tcp --dport 15000 --syn -j ACCEPT

service iptables save

service iptables restart

root@snwdbsolpeprod01 postt]# service postgresql-9.3 restart

Tạo người dùng hoặc vai trò

Để tạo người dùng hoặc vai trò mới trong cơ sở dữ liệu, hãy chạy các lệnh sau:

su – postgres

psql -p 15000

postgres=# CREATE ROLE OCT1 LOGIN
  UNENCRYPTED PASSWORD 'test@123'
  INHERIT REPLICATION;

Tạo một vùng bảng

Để tạo một vùng bảng mới trên cơ sở dữ liệu, hãy chạy lệnh sau:

postgres=# CREATE TABLESPACE OCT1_tablespace
  OWNER ilusr
  LOCATION '/usrdata/pgsql/data/oct';

Tạo cơ sở dữ liệu

Để tạo cơ sở dữ liệu mới, hãy chạy lệnh sau:

postgres=# CREATE DATABASE OCT1
  WITH ENCODING='UTF8'
   OWNER=test
   LC_CTYPE='en_US.UTF-8'
   CONNECTION LIMIT=-1
   TABLESPACE=OCT1_tablespace;

Các lệnh cơ bản

Một số lệnh quản trị cơ bản bao gồm những lệnh sau:

Dừng và khởi động PostgreSQL

/opt/PostgreSQL/9.3/bin/pg_ctl -D /mnt/postt/data stop
/opt/PostgreSQL/9.3/bin/pg_ctl -D /mnt/postt/data start
/opt/PostgreSQL/9.3/bin/pg_ctl -D /mnt/postt/data restart
/opt/PostgreSQL/9.3/bin/pg_ctl -D opt/PostgreSQL/9.4/data –m smart stop #wait for complete the transactions
/opt/PostgreSQL/9.3/bin/pg_ctl -D /mnt/postt/data –m fast stop #Immediate stop
/opt/PostgreSQL/9.3/bin/pg_ctl -D /mnt/postt/data –m immediate stop #Abort the DB
/opt/PostgreSQL/9.3/bin/pg_ctl -D /mnt/postt/data –m smart restart
/opt/PostgreSQL/9.3/bin/pg_ctl -D /mnt/postt/data –m fast restart
/opt/PostgreSQL/9.3/bin/pg_ctl -D /mnt/postt/data –m immediate restart

Kiểm tra phiên bản PostgreSQL

postgres=# select version();

Xác định hoạt động trên một cấp cơ sở dữ liệu cụ thể

select pid,backend_xid,backend_xmin,query from pg_stat_activity ;

Phân tích trạng thái bảng

select relname,last_autoanalyze,last_analyze,n_mod_since_analyze from pg_stat_all_tables;

Tìm đường dẫn vật lý của bảng

postgres=# SELECT pg_relation_filepath('testpitr1');

 pg_relation_filepath
 ----------------------
 base/13003/16399

[postgres@postgres221 data]$ ls -l /mnt/postt/data/base/13003/16399
-rw------- 1 postgres postgres 256024576 Feb 21 06:36 /mnt/postt/data/base/13003/16399

Lấy tên giản đồ bên trong một phiên bản hoặc cụm

select schema_name from information_schema.schemata;

select nspname from pg_catalog.pg_namespace;

post_gre=# \dn
   List of schemas
   Name       |  Owner
--------------+----------
 kailash_test | postgres
 public       | postgres
(2 rows)

Lấy dbnames bên trong một phiên bản hoặc cụm

template1=# select datname from pg_database;
 template1
 template0
 post_gre

 template1=# \l
 post_gre  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres          +
           |          |          |             |             | postgres=CTc/postgres +
           |          |          |             |             | kailash_s=CTc/postgres
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres           +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres           +
           |          |          |             |             |

template1=# select usename from pg_catalog.pg_user;
 kailash
 kailash_s
 postgres

template1=# \du
 kailash   |                                                | {}
 kailash_s | Superuser, Create role, Create DB              | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Kết luận

Dòng thẻ của PostgreSQL tuyên bố rằng đó là “Cơ sở dữ liệu nguồn mở tiên tiến nhất thế giới”. Tuy nhiên, PostgreSQL không chỉ là quan hệ mà còn là quan hệ đối tượng. Sự khác biệt này mang lại cho nó một số lợi thế so với cơ sở dữ liệu SQL mã nguồn mở khác như MySQL, MariaDB và Firebird. PostgreSQL là một lựa chọn rõ ràng trên AWScloud để chuyển RDBMS nội bộ sang RDBMS nguồn mở trên CLOUD.

Trong Phần 2 của blog này, tôi đề cập đến việc khôi phục và khôi phục sao lưu Postgre.

Sử dụng tab Phản hồi để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi nào. Bạn cũng có thể trò chuyện ngay bây giờ để bắt đầu cuộc trò chuyện.

Tìm hiểu thêm về các dịch vụ Cơ sở dữ liệu của chúng tôi