PostgreSQLのデータベース管理
第1章インストールと設定
アウトライン
PostgreSQLは、クライアント/サーバーリレーショナルデータベース管理システム(RDBMS)のための非常に強力な、オープンソースコードです。(そのようなJSONとJSONB型、配列型など)のデータ型は、豊かでカスタムタイプをサポートしています。デフォルトのページ・サイズPostgreSQLのメモリは、8kBのです。
PostgreSQLは、次の主要な機能を備えています。
1つのグッドSQL言語のサポート、サポート ACID 、準整合性、データベーストランザクション、Unicodeの多言語を。
2高同時読み取りと書き込みを設計し、詰まらないでください
3つのサポートするデータベースモデルの種類の数(例えばJSONとJSONB型、配列型など)リレーショナル、文書タイプ、キー/値のタイプ。
1インストールのPostgreSQL
-
- LinuxのRPMの下にインストールPostgreSQLのパケット
1つのインストールリポジトリのRPM:
ヤムhttps://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpmをインストール
RPMパッケージには、サーバーをインストール2
yumのリストpostgresql11-server.x86_64
3クライアントパッケージをインストールします。
yumのリストpostgresql11.x86_64
図4は、データベースを初期化し、自動起動を可能にします。
/ usr / pgsqlの-11 / binに/のpostgresql-11-セットアップinitdbを
systemctlのpostgresql-11有効
systemctl開始にpostgresql-11を
ソースパッケージのPostgreSQLの1.2 Linuxのインストール
1システム環境を確立するために、
GCC、バイソン、GCC-C ++、readlineの、readlineの-develの、ZLIB、ZLIB-develの
yumをインストール* GCC * -y
[ルート@ Redhat7〜]#yumをインストール*バイソン* -y
[ルート@ Redhat7〜]#yumをインストール* readlineの* -y
[ルート@ Redhat7〜]#yumをインストール* zlibの* -y
2およびLinuxシステムの最適化
ulimitの機能:リソース・シェル・プログラムの制御
Linuxアプリケーションの展開以下の時間では、時々、ソケットファイルに遭遇/:質問に非常に多くのファイルを開くことができません。また、同時サーバーの最大数に影響します。この値は、実際には、Linuxのファイルハンドルの制限が、Linuxのデフォルトはあり本番サーバと、通常は1024、非常に高くはない、実際にこの数に到達するのは非常に簡単です。その下には、正のソリューション構成することにより、システムのデフォルトを修正する方法です。
/etc/security/limits.confを
ソフトNPROC:シングルユーザーに利用可能なプロセスの最大数(警告以上)。
ハードNPROC:シングルユーザ(与えられているよりも多くの)で使用可能なプロセスの最大数。
ソフトNOFILE:最大数(警告以上)ファイルディスクリプタをオープンします。
ハードNOFILE:オープンファイル記述子の最大数(与えられているよりも多く)
f11eの#終わり
*ソフトnof1le 1024000
*ハードNOFILE 1024000
*ソフトNPROC 1024000
*ハードNPROC 1024000
[ルート@ Redhat7〜]#猫/etc/security/limits.d/20-nproc.conf
防ぐために、ユーザのプロセス数のための#デフォルトの制限
#偶発フォーク爆弾。
#参照は、推論のための#432903をrhbz。
*ソフトNPROC 4096
ルートソフトNPROC無制限
に変更されました
*ソフトNPROC 1024000
*ハードNPROC 1024000
ルートソフトNPROC無制限
3 postgresユーザを作成し、インストールディレクトリを作成します
[ルート@ Redhat7〜]#useraddのpostgresの
[ルート@ Redhat7〜]#ます。mkdir /opt/pgsql11.4ホームディレクトリを作成PG
[ルート@ Redhat7〜]#ます。mkdir / PGDBデータディレクトリのPGを作成します
[ルート@ Redhat7〜]#chownコマンド-Rのpostgres:postgresの/opt/pgsql11.4/
[ルート@ Redhat7〜]#chownコマンド-Rのpostgres:postgresの/ PGDB
PostgreSQLのインストール4
[ルート@ Redhat7 pgsql11.4]#タール-zxvfのpostgresql-11.4.tar.gz
[ルート@ Redhat7のpostgresql-11.4]#は./configure --prefix =は/ opt / pgsql11.4
メイク
make installを
PostgreSQLのインストールが完了しました。
ポート接頭辞= PREFIX - インストール最も頻繁に変更パス
口with-ブロックサイズ= BLOCKSIZE - データベースのブロック、デフォルトの8キロバイト
この値でのOLAPシーンがOLAPのパフォーマンスを向上させるためには、32kBのに大きくすることができ、OLTPシナリオで8kBのデフォルトを使用することをお勧めします。
-SEGSIZE = SEGSIZEポート - セグメント・テーブル・ファイルのサイズ、デフォルトの1ギガバイト
口で、LLVM - ベースのJITコンパイラIVMを使用します
ポート--with-WAL-ブロックサイズ= BLOCKSIZE:WALファイルのブロックサイズを指定し、デフォルトは8kBのです。
ポート--with-WAL-SEGSIZE = SEGSIZE:WALは、単一のファイルサイズを指定するデフォルトは16メガバイトです。
5設定環境変数
比較的広いです
我々/home/postgres/.bash_profile
コンテンツの追加:
輸出PGPORT = 8432
輸出PGHOME =は/ usr / pgsqlの-11
輸出PGDATA = / mntに/ DB1 / PGDATA / pgsqlの
輸出PATH = $ PGHOME / binに:$ PATHに
輸出MANPATH = $ PGHOME / share / manを:$ MANPATH
輸出LANG = EN_US.UTF-8
エクスポートDATE = '日付+ "%Yの%mの%D%H%M"'
輸出LD_LIBRARY_PATH = $ PGHOME / libに:$ LD_LIBRARY_PATH
輸出PGHOST = $ PGDATA
輸出PGUSER = postgresの
使用することができます
PGHOME =は/ opt / pgsql11.4
輸出PGHOME
PGDATA = / PGDB
輸出PGDATA
輸出PATH = $ PGHOME / binに:$ PATHに
輸出PATH
図6は、データベースを初期化します
initdbを使用したデータベースクラスタを初期化するコマンド
-D:データベースクラスタのホームディレクトリ
--E:データベースの文字エンコーディング
--wal-SEGSIZE:WALログファイルのサイズ
- -U:スーパーユーザを指定します
initdbを-D / PGDB /
[RHCE7〜@のpostgres] $ initdbは-D / PGDB /
このデータベースシステムに属するファイルは、ユーザー「のpostgres」によって所有されます。
このユーザーは、サーバープロセスを所有する必要があります。
データベースクラスタは、ロケール「zh_CN.UTF-8」で初期化されます。
デフォルトのデータベースのエンコーディングは、それに応じて、「UTF8」に設定されています。
initdbを:ロケールに適したテキスト検索設定を見つけることができなかった「zh_CN.UTF-8」
デフォルトのテキスト検索設定は、「シンプル」に設定されます。
データ・ページのチェックサムが無効になっています。
OK ...既存のディレクトリ/ PGDBのパーミッションを固定
サブディレクトリを作成... [OK]
デフォルトMAX_CONNECTIONS ... 100を選択します
デフォルトのshared_buffers ... 128メガバイトを選択
デフォルトのタイムゾーンを選択... PRCを
動的共有メモリの実装を選択し... POSIX
設定ファイルを作成... [OK]
ブートストラップスクリプトを実行している... [OK]
ポストブートストラップ初期化を行って... [OK]
ディスクにデータを同期... [OK]
警告:ローカル接続のための「信頼」の認証を有効にします
あなたはpg_hba.confの編集やオプション-Aを使用して、これを変更したり、することができます
--auth-ローカルおよび--auth-ホスト、次回はあなたがinitdbを実行します。
成功。これで、使用してデータベース・サーバを起動することができます:
pg_ctl -D / PGDB / -lログファイルを開始
[postgresの@ RHCE7〜] $にpg_ctl -D / PGDB / -lログファイル開始
サーバが起動するのを待っている....行われ
サーバー開始
起動時に7
[ルート@ RHCE7〜]#vimの/usr/lib/systemd/system/postgresql-11.service
[単位]
説明= PostgreSQLデータベースサーバ
= network.target後
[サービス]
タイプ=フォーク
ユーザー= postgresの
当社グループは、postgresのを=
リッスンするサーバーのポート番号#
環境= PGPORT = 5432
#データベースディレクトリの場所
環境= PGDATA = / PGDB /
#どこ伐採前に(サーバからの早期立ち上げメッセージを送信すること
postgresql.confのテイク効果の#オプション)
#これは通常にsystemdによってグローバルなデフォルト設定によって制御されます
#StandardOutput =シスログ
#ポストマスターに無効にOOMキル
OOMScoreAdjust = -1000
#ExecStartPre =は/ opt / pgsql11.4 / binに/のpostgresql-チェック-DB-dirは$ {} PGDATA
ExecStart =は/ opt / pgsql11.4 / binに/にpg_ctl -D $ {PGDATA} -s -oを開始する "-p $ {PGPORT}" -w -t 300
ExecStop =は/ opt / pgsql11.4 / binに/にpg_ctl停止-D $ {PGDATA} -s -m速いです
ExecReload = / OPT / pgsql11.4 / binに/にpg_ctlリロード-D $ {PGDATA} -s
#起動するサーバに対して妥当な時間を与える/シャットダウン
TimeoutSec = 300
[インストール]
WantedBy = multi-user.target
[ルートRHCE7〜@]#は/usr/lib/systemd/system/postgresql-11.serviceを有効systemctl
6再起動テストの初期化
[ルート@ RHCE7〜]#systemctlの状態にpostgresql-11.service
●PostgreSQLの-11.service - PostgreSQLデータベースサーバ
ロード:ロード(/usr/lib/systemd/system/postgresql-11.service;有効;ベンダーのプリセット:無効)
アクティブ:アクティブ(ランニング)日2019年9月15日夜12時37分04秒CST以来。3分前47S
プロセス:936 ExecStart = / OPT / pgsql11.4 / binに/にpg_ctl開始-D $ {PGDATA} -s -o -p $ {PGPORT} -w -t 300(コード=終了し、ステータス= 0 / SUCCESS)
1.3PostgreSQLリモートアクセス(Linuxバージョン)
PostgreSQLのデフォルトのLinuxのバージョンは、直接自分のリモート・データベースがゆえのリモートアクセスのためのPostgreSQLデータベースの設定を変更する必要があるアクセスすることはできません。
次のように具体的な動作は、次の修飾のpostgresql.confの
パラメータを追加するには、エンドユーザーで:
listen_address =「*」、コメントアウトされないように注意してください
パスワード認証を有効にします
#Password_encryption = MD5 password_encryption = md5のように修正
pg_hba.confファイルの内容を変更します。
ユーザーがIPセグメントにアクセスすることができます
追加したファイルの末尾には:ホストすべてすべて0.0.0.0/0信頼
また、すべてのすべてのすべての信頼をホストすることができます
再起動PostgreSQLデータベース:正常に起動した後、リモートを接続