CentOS/RHELにPostgreSQLをインストールして構成する
この記事では、 PostgreSQL 11をインストールします Linuxの場合CentOS 7、基本構成を実行し、主な構成ファイルのパラメーターとパフォーマンス調整方法を検討します。 PostgreSQLは、人気のある無料のオブジェクトリレーショナルデータベース管理システムです。 MySQL / MariaDBほど人気はありませんが、最もプロフェッショナルなものです。
PostgreSQLの長所:
- SQL標準に完全に準拠しています。
- マルチバージョン同時実行制御(MVCC)による高性能。
- スケーラビリティ(高負荷環境で広く使用されています);
- 複数のプログラミング言語のサポート;
- 復元力のあるトランザクションとレプリケーションのメカニズム;
- JSONデータのサポート。
CentOS / RHELにPostgreSQLをインストールするにはどうすればよいですか?
PostgreSQLはベースのCentOSリポジトリからインストールできますが、現在のパッケージバージョンは常にそこにあるため、開発者リポジトリをインストールします。
まず、PosgreSQLリポジトリを追加します:
#yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
このリポジトリには、PosgreSQLの最新バージョンと以前のバージョンの両方が含まれています。リポジトリに関する情報は次のようになります:
yumを使用してPostrgeSQL11をインストールしましょう。
#yum install postgresql11-server -y
PostgreSQLサーバーと必要なライブラリがインストールされます:
インストール:libicu-50.2-3.el7.x86_64 1/4インストール:postgresql11-libs-11.5-1PGDG.rhel7.x86_64 2/4インストール:postgresql11-11.5-1PGDG.rhel7.x86_64 3/4インストール:postgresql11-server- 11.5-1PGDG.rhel7.x86_64 4/4
パッケージをインストールしたら、データベースを初期化する必要があります。
#/ usr / pgsql-11 / bin / postgresql-11-setup initdb
また、PostgreSQLデーモンを有効にし、systemctlを使用して自動起動するように追加します。
#systemctl enable postgresql-11
#systemctl start postgresql-11
サービスステータスを確認します:
#systemctl status postgresql-11
●postgresql-11.service-PostgreSQL11データベースserverLoaded:ロード済み(/usr/lib/systemd/system/postgresql-11.service;有効;ベンダープリセット:無効)アクティブ:アクティブ(実行中)2020-10年水以降-18 16:02:15 +06; 26s agoDocs:https://www.postgresql.org/docs/11/static/Process:8714 ExecStartPre =/ usr / pgsql-11 / bin / postgresql-11-check-db-dir $ {PGDATA}(code =exited 、status =0 / SUCCESS)メインPID:8719(postmaster)CGroup:/system.slice/postgresql-11.service├─8719/ usr / pgsql-11 / bin / postmaster -D / var / lib / pgsql / 11 / data /├─8721postgres:logger├─8723postgres:checkpointer├─8724postgres:backgroundwriter├─8725postgres:walwriter├─8726postgres:autovacuumlauncher├─8727postgres:statscollector└─8728postgres:論理レプリケーションランチャー10月18日16:02:16 host1.woshub.com systemd [1]:PostgreSQL11データベースサーバーを起動しています...
外部からPostgreSQLにアクセスする場合は、デフォルトのCentOSファイアウォールでTCPポート5432を開きます。
#firewall-cmd --get-active-zones
publicinterfaces:eth0
#firewall-cmd --zone =public --add-port =5432 / tcp --permanent
#firewall-cmd --reload
またはiptablesを使用する場合:
#iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
#service iptables restart
SELinuxが有効になっている場合は、次のコマンドを実行します。
#setsebool -P httpd_can_network_connect_db 1
PSQLを使用してデータベース、ユーザーを作成し、PostgreSQLで権限を付与する
デフォルトでは、PostgreSQLをインストールすると、システムにはpostgresという唯一のユーザーがいます。このアカウントをデータベースの日常業務に使用することはお勧めしません。データベースごとに個別のユーザーを作成することをお勧めします。
postgresサーバーに接続するには、次のコマンドを実行します:
#sudo -u postgres psql
psql(11.5)ヘルプを表示するには「help」と入力します。
postgres =#
PostgreSQLコンソールが表示されます。次に、psqlコンソールからのPostgreSQL管理の簡単な例をいくつか示します。
デフォルトのpostgresユーザーパスワードを変更します:
ALTER ROLE postgres WITH PASSWORD's3tPa $$ w0rd!';
新しいデータベースとユーザーを作成し、ユーザーに新しいデータベースへのフルアクセスを許可します。
postgres =#CREATE DATABASE newdbtest;
postgres =#CREATE USER mydbuser WITH password'!123456789';
postgres =#データベース上のすべての特権をmydbuserに付与します;
DBに接続するには:
postgres =#\ c databasename
テーブルのリストを表示するには:
postgres =#\ dt
データベース接続のリストを表示するには:
postgres =#select * from pg_stat_activity where datname ='dbname'
データベースへのすべての接続をリセットするには:
postgres =#select pg_terminate_backend(pid)from pg_stat_activity where datname ='dbname'
現在のセッションに関する情報を取得するには:
postgres =#\ conninfo
psqlコンソールを終了するには、次のコマンドを実行します。
postgres =#\ q
お気づきのとおり、構文はMariaDBまたはMySQLに似ています。
WebインターフェイスからPostgreSQLデータベースをより便利に管理するには、 pgAdmin4を使用することをお勧めします。 (PythonおよびJavascript / jQueryで記述)。これは、多くのWeb開発者が精通しているPhpMyAdminに似ています。
Postgresql構成ファイルは/var / lib / pgsql / 11 / dataにあります :
- postgresql.conf —postgresql構成ファイル;
- pg_hba.conf —アクセス設定を含むファイル。このファイルでは、ユーザーにさまざまな制限を設定したり、データベース接続ポリシーを設定したりできます。
- pg_ident.conf —このファイルは、identプロトコルを介してクライアントを識別するために使用されます。
ローカルユーザーが許可なくpostgresにログインできないようにするには、pg_hba.confで次のように指定します。
local all all md5host all all 127.0.0.1/32 md5
postgresql.confの最も重要なパラメータを考えてみましょう:
-
listen_addresses
—サーバーがクライアント接続を受け入れるIPアドレスを設定します。デフォルト値はlocalhostです。これは、ローカル接続のみが可能であることを意味します。すべてのIPv4インターフェースをリッスンするには、ここで0.0.0.0を指定します; -
max_connections
–DBサーバーへの同時接続の最大数。 -
temp_buffers
–一時バッファの最大サイズ。 -
shared_buffers
—データベースサーバーが使用する共有メモリのサイズ。通常、サーバーRAM全体の25%の値が設定されます。 -
effective_cache_size
–postgresスケジューラがローカルドライブでキャッシュするために使用可能なメモリの量を決定できるようにするパラメータ。通常、サーバー上の合計RAMの50〜75%に設定されます。 -
work_mem
–データベース管理システムの内部ソート操作で使用されるメモリのサイズ— ORDER BY、DISTINCT、およびマージ; -
maintenance_work_mem
–内部操作で使用されるメモリのサイズ— VACUUM、CREATE INDEX、ALTER TABLE ADD FOREIGN KEY; -
fsync
–このパラメーターが有効になっている場合、DBMSはハードディスクへのデータの物理的な書き込みを待機します。 fsyncが有効になっていると、システムまたはハードウェアの障害後にデータベースを回復するのが簡単になります。明らかに、このパラメーターを有効にすると、データベース管理システムのパフォーマンスは低下しますが、ストレージの信頼性は高くなります。無効にする場合は、full_page_writesも無効にする価値があります; -
max_stack_depth
—最大スタックサイズ(デフォルトでは2MB)。 -
max_fsm_pages
—このパラメーターを使用すると、サーバーの空きディスク容量を管理できます。たとえば、テーブルから一部のデータを削除した後、以前に占有されていたスペースは空きになりませんが、空きスペースマップで空きとしてマークされ、さらに新しいエントリに使用されます。サーバー上のテーブルにデータを頻繁に書き込んだり削除したりする場合は、このパラメーターの値を大きくするとパフォーマンスが向上します。 -
wal_buffers
– WALデータを保持するために使用される共有メモリサイズ(shared_buffers)。 -
wal_writer_delay
–ディスクへのWALの書き込みの連続期間間の時間。 -
commit_delay
—トランザクションをWALバッファに書き込んでからディスクにライトスルーするまでの遅延。 -
synchronous_commit
—パラメータは、WALデータが物理的にディスクに書き込まれた後に、成功したトランザクションの結果が送信されるように設定します。
PostgreSQLデータベースのバックアップと復元
PostgreSQLデータベースはいくつかの方法でバックアップできます。最も簡単なものを考えてみましょう。
まず、サーバーで実行されているデータベースを確認します。
postgres =#\ list
4つのデータベースがあり、そのうち3つはシステムデータベース(postgresとテンプレート)です。
以前、mydbtestという名前のDBを作成しましたが、今度はそれをバックアップします。
pg_dumpを使用してPostgreSQLデータベースをバックアップできます ツール:
#sudo -u postgres pg_dump mydbtest> /root/dupm.sql
—
postgresユーザーでこのコマンドを実行し、データベースと、データベースダンプを保存するファイルへのパスを指定します。バックアップシステムはデータベースダンプを取得する場合があります。または、Webサーバーを使用している場合は、接続されているクラウドストレージアカウントにデータベースダンプを送信できます。
ダンプをデータベースに復元するには、 psqlを使用します :
#sudo -u postgres psql mydbtest
特別なダンプ形式でバックアップを作成し、gzipを使用して圧縮することもできます:
#sudo -u postgres pg_dump -Fc mydbtest> /root/dumptest.sql
次に、pg_restoreツールを使用してダンプを回復します。
#sudo -u postgres pg_restore -d mydbtest /root/dumptest.sql
PostgreSQLのパフォーマンスの調整と最適化
MariaDBに関連する前回の記事では、チューナーを使用してmy.cnf構成ファイルのパラメーターを最適化する方法を示しました。 PostgreSQLにはPgTunがありました そのためですが、残念ながら長い間更新されていませんでした。同時に、PostgreSQL構成を最適化するために使用できるオンラインサービスがたくさんあります。 PGTune( pgtune.leopard.in.ua)が好きです 。
インターフェイスは非常にシンプルです。サーバーパラメータ(プロファイル、プロセッサ、メモリ、ディスクタイプ)を指定し、[生成]をクリックするだけです。メインのPostgreSQLパラメータの推奨値を含むpostgresql.confのバリアントが提供されます。
たとえば、4xGBRAMと4xvCPUを搭載したVPSSSDサーバーには、次のpostgresql.conf設定をお勧めします。
#DBバージョン:11#OSタイプ:linux#DBタイプ:web#合計メモリ(RAM):4 GB#CPU数:4#接続数:100#データストレージ:ssdmax_connections =100shared_buffers =1GBeffective_cache_size =3GBmaintenance_work_mem =256MBcheckpoint_completion_target =0.7wal_buffers =16MBdefault_statistics_target =100random_page_cost =1.1effective_io_concurrency =200work_mem =5242kBmin_wal_size =1GBmax_wal_size =4GBmax_worker_processes =4max_parallel_workers_per_gather =2max_parallel_workers =4max_parallel_maintenance_work
実際、記事が書かれた時点では、それだけがリソースではありません。同様のサービスも利用できます:
- Cybertec PostgreSQL Configurator
- PostgreSQL構成ツール
これらのサービスを使用すると、ハードウェアとタスクの基本的なPostgreSQLパラメーターをすばやく構成できます。後で、サーバーリソースを検討するだけでなく、データベースの操作、データベースのサイズ、接続数を分析し、これらの情報に基づいてPostgreSQLパラメーターを微調整できるようになります。
-
CentOS/RHELでBashオートコンプリートをインストールして有効にする方法
バッシュ (ボーンアゲインシェル )は間違いなく最も人気のあるLinuxシェルであり、多くのLinuxディストリビューションのデフォルトシェルであることは不思議ではありません。その最も魅力的な機能の1つは、組み込みの「オートコンプリート」です。 」サポート。 TABと呼ばれることもあります 完了、この機能を使用すると、コマンド構造を簡単に完了することができます。コマンドの一部を入力してから、[タブ]を押すことができます。 コマンドとその引数をオートコンプリートするためのキー。可能な場合は、複数の完了がすべて一覧表示されます。 バッシュと同じように 、ほぼすべての最新のLinuxシェルには
-
Windows 10 に XAMPP をインストールして構成する
Windows 10 に XAMPP をインストールして構成する: PHP で Web サイトをコーディングするときはいつでも、PHP 開発環境を提供し、バックエンドとフロントエンドを接続するのに役立つものが必要になります。 XAMPP、MongoDB など、Web サイトをローカルでテストするために使用できるソフトウェアは多数あります。各ソフトウェアには独自の長所と短所がありますが、このガイドでは、特に Windows 10 の XAMPP について説明します。この記事では、 Windows 10 に XAMPP をインストールして構成する方法を説明します。 XAMPP: XAMPP は、A