PostgreSQL管理、パート1
この投稿では、PostgreSQLを紹介し、Linux®でのバージョン9.3のインストールと構成について説明します。
PostgreSQLは、世界で最も先進的なオープンソースのリレーショナルデータベース管理システム(RDBMS)です。 Apple、IMDB、Skype、Uber、Lockheed Martin、Verizonなどの多くの主要な組織がPostgreSQLを使用しています。このRDBMSは、カリフォルニア大学バークレー校のPOSTGRESプロジェクトの一環として1986年に開始され、コアプラットフォームで30年以上にわたって活発に開発されてきました。
PostgreSQLはすべての主要なオペレーティングシステムで動作し、2001年からACIDに準拠しています。頭字語ACIDは、次のコンポーネントで構成されています。
- アトミシティ :トランザクション全体が成功するか、いずれも成功しないことを保証します。
- 一貫性 :すべてのデータに一貫性があることを保証します。すべてのデータは、定義されたルールに従って有効です。ルールには、データベースに適用される制約、カスケード、およびトリガーが含まれます。
- 分離 :すべてのトランザクションは分離して発生します。トランザクションは、まだ完了していない他のトランザクションからデータを読み取ることはできません。
- 耐久性 :トランザクションをコミットした後、操作の直後にシステムクラッシュが発生した場合でも、トランザクションはシステムに残ります。
当然のことながら、PostgreSQLは、人気のあるPostGIS地理空間データベースエクステンダーなどの強力なアドオンにより、多くの人々や組織が選択できるオープンソースのリレーショナルデータベースとして機能します。
画像ソース :https://postgresql-database.blogspot.com/2013/08/postgresql-architecture.html
次の企業から利用可能な本番サポートSLA:
- https://www.enterprisedb.com
- https://www.2ndquadrant.com/
- https://www.revsys.com/
- https://imperoit.com/PostgreSQL_Support.htm
サポートされているバージョン:現在(12)/ 11/10 / 9.6 / 9.5 / 9.4開発バージョン:develサポートされていないバージョン:9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2
Postgres 9.3をインストールして設定するには、次の手順を実行します。
Linux7.1にPostgres9.3をインストールする
次のコマンドを実行して、Postgres9.3をRedHat®Linux7.1にインストールします。
[root@snwdbsolpeprod01 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.1 (Maipo)
データベースをインストールするための空のフォルダを作成します。
[root@snwdbsolpeprod01 mnt]# mkdir postt
[root@snwdbsolpeprod01 postt]# pwd
/mnt/postt
次のコマンドを実行して、OSバージョンのRed Hat Package Manager(RPM)をダウンロードし、Postgresのインストールを開始します。
[root@snwdbsolpeprod01 postt]# wget https://yum.postgresql.org/9.3/redhat/rhel-7-x86_64/pgdg-redhat93-9.3-2.noarch.rpm
次のコマンドを使用してRPMパッケージをインストールします。
root@snwdbsolpeprod01 postt]# rpm -ivh pgdg-redhat93-9.3-2.noarch.rpm
RPMをインストールした後、DBソフトウェアをインストールするいくつかのPostgreパッケージをインストールする必要があります。
[root@snwdbsolpeprod01 postt]# yum install postgresql-contrib.x86_64
[root@snwdbsolpeprod01 postt]# yum install postgresql93-server.x86_64
PGDATAの場所を構成します
データを保存する場所を決定します。データにデフォルト以外の場所を使用するには、PostgreSQLサービスの sysconfigを編集します ファイルを作成し、PGDATA引数を変更します。
vi /etc/rc.d/init.d/postgresql
vi /etc/sysconfig/pgsql/postgresql
注 : sysconfig / pgsqlにPostgreSQLがある場合 存在しない場合は、次の例に示すように、データを作成して、データを保存する場所を示す行を追加します。
[root@snwdbsolpeprod01 pgsql]# cd /etc/sysconfig/pgsql/
[root@snwdbsolpeprod01 pgsql]# vi postgresql
[root@snwdbsolpeprod01 pgsql]# cat postgresql
PDGATA=/mnt/postt
最初のコマンド(1回だけ必要)は、PGDATAでデータベースを初期化することです。
service <name> initdb
例:バージョン9.3の場合:
service postgresql-9.3 initdb
または
/usr/pgsql-9.3/bin/postgresql93-setup initdb
[root@snwdbsolpeprod01 data]# /usr/pgsql-9.3/bin/postgresql93-setup initdb
Initializing database ... OK
OSの起動時にPostgreSQLを自動的に起動する場合は、次のコマンドを使用します。
[root@snwdbsolpeprod01 data]# chkconfig postgresql-9.3 on
注 :リクエストを「systemctlenablepostgresql-9.3.service」に転送します。
PostgreSQLサービスを開始します
PostgreSQLサービスを開始するには、次のコマンドを実行します。
[root@snwdbsolpeprod01 data]# systemctl start postgresql-9.3.service
次の例に示すように、postgresql.confを更新することで、データベースを簡単に構成できます。
vi /var/lib/pgsql/9.3/data/postgresql.conf
以下を変更します:
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
データベース接続設定を制限または管理するには、次のコマンドを実行します。
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
ファイアウォールのポートを構成するには、次のコマンドを実行します。
iptables -I INPUT -p tcp --dport 15000 --syn -j ACCEPT
service iptables save
service iptables restart
root@snwdbsolpeprod01 postt]# service postgresql-9.3 restart
データベースに新しいユーザーまたはロールを作成するには、次のコマンドを実行します。
su – postgres
psql -p 15000
postgres=# CREATE ROLE OCT1 LOGIN
UNENCRYPTED PASSWORD 'test@123'
INHERIT REPLICATION;
データベースに新しい表領域を作成するには、次のコマンドを実行します。
postgres=# CREATE TABLESPACE OCT1_tablespace
OWNER ilusr
LOCATION '/usrdata/pgsql/data/oct';
新しいデータベースを作成するには、次のコマンドを実行します。
postgres=# CREATE DATABASE OCT1
WITH ENCODING='UTF8'
OWNER=test
LC_CTYPE='en_US.UTF-8'
CONNECTION LIMIT=-1
TABLESPACE=OCT1_tablespace;
基本的な管理コマンドには、次のコマンドが含まれます。
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
PostgreSQLのバージョンを確認してください
postgres=# select version();
select pid,backend_xid,backend_xmin,query from pg_stat_activity ;
select relname,last_autoanalyze,last_analyze,n_mod_since_analyze from pg_stat_all_tables;
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
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)
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 | {}
PostgreSQLのタグラインは、「世界で最も先進的なオープンソースデータベース」であると主張しています。ただし、PostgreSQLは単なるリレーショナルではなく、オブジェクトリレーショナルです。この違いにより、MySQL、MariaDB、Firebirdなどの他のオープンソースSQLデータベースに比べていくつかの利点があります。 PostgreSQLは、社内RDBMSをCLOUD上のオープンソースRDBMSに移行するためのAWScloudでの明らかな選択です。
このブログのパート2では、Postgreバックアップの復元とリカバリについて説明します。
コメントや質問をするには、[フィードバック]タブを使用します。今すぐチャットして会話を開始することもできます。
データベースサービスの詳細
-
RackspaceObjectRocket上のPostgreSQLが一般提供になります
元々は2020年1月30日にObjectRocket.com/blogで公開されました 2019年に最初にPostgreSQLサービスを利用可能にしましたが、PostgreSQLが一般提供(GA)になったことをお知らせします。その過程でアップデートを提供してきましたが、他の最近のGA製品(CockroachDBとElasticsearch)と同様に、確実に成功させたいと考えていました。このマイルストーンに到達し、皆さんと共有できることをうれしく思います。 象はどのように食べますか? 企業がPostgreSQLを使用しているのは非常に多くの異なる環境で使用されているため、ホステッドサービ
-
PostgreSQLとCockroachDBのどちらを選択するか
元々は2019年8月15日にObjectRocket.com/blogで公開されました CockroachDB®とPostgreSQL®は、リレーショナルワークロードに関して市場での地位を確立しているため、多くの人々がどちらを選択すべきかを尋ね始めています。 CockroachDBは、分散トランザクションと水平方向の読み取り/書き込みスケーリングが組み込まれた真のグローバルスケールSQLを提供し、SQLワークロードの前例のないスケール、復元力、およびパフォーマンスを実現します。ただし、PostgreSQLの方が適しているシナリオもいくつかあります。 CockroachDBとPostgre