PostgreSQLまたはPostgresは、15年以上にわたって活発に開発されてきたオープンソースのオブジェクトリレーショナルデータベース管理システム(ORDBMS)です。これは、高いワークロードを処理できる強力なデータベースサーバーです。 PostgreSQLは、Linux、Unix、BSD、およびWindowsサーバーで使用できます。
マスター/スレーブデータベースレプリケーションは、あるサーバー(マスター)のデータベースから別のサーバー(スレーブ)のデータベースにデータをコピー(同期)するプロセスです。このプロセスの主な利点は、データベースを複数のマシンに分散することです。そのため、マスターサーバーに問題が発生した場合でも、同じデータを使用してリクエストを中断することなく処理できるバックアップマシンがあります。
PostgreSQLは、データベースを複製するいくつかの方法を提供します。バックアップの目的で使用でき、高可用性データベースサーバーを提供します。このチュートリアルでは、CentOS7サーバーにPostgreSQL9.6マスタースレーブレプリケーションをインストールして構成する方法を示します。ホットスタンバイモードを使用します。これは、PostgreSQLを深く学ぶための非常に良い出発点です。
- PostgreSQL9.6をインストールする
- PostgreSQL9.6を起動して構成します
- Firewallを設定する
- マスターサーバーの構成
- スレーブサーバーの構成
- テスト
- 1CentOS7サーバー
- マスター -読み取りおよび書き込み権限-IP: 10.0.15.10
- 1CentOS7サーバー
- スレーブ -読み取り許可のみ-IP: 10.0.15.11
- ルート権限
このチュートリアルでは、CentOS7サーバーに最新のPostgreSQLバージョン9.6をインストールする方法について説明します。デフォルトでは、CentOS公式リポジトリは古いバージョンを提供しているため、公式リポジトリからPostgreSQLをインストールする必要があります。
新しいPostgreSQL9.6リポジトリをシステムに追加します。
yum -y install https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
次に、次のyumコマンドを使用してPostgreSQL9.6をインストールします。
yum -y install postgresql96-server postgresql96-contrib
このようにして、PostgreSQL9.6をインストールできます。
postgresサービスを開始する前に、データベースを初期化する必要があります。これについては、'/ usr / pgsql-9.6 / binに移動します 'ディレクトリを作成し、postgressetupでデータベースを初期化します' postgresql96-setup '。
cd /usr/pgsql-9.6/bin
./postgresql96-setup initdb
次に、postgresサービスを開始し、システムの起動時に自動的に開始できるようにします。
systemctl start postgresql-9.6
systemctl enable postgresql-9.6
デフォルトでは、postgresはポート5432で実行されます。 したがって、ポート5432の状態が'リッスンであることを確認してください '次の方法でnetstatコマンドを実行します。
netstat -plntu
netstatコマンドがない場合は、net-toolsをインストールしてください。ネットツールの一部です。
yum -y install net-tools
そのため、PostgreSQL9.6が開始されました。ただし、postgresユーザーのパスワードを構成する必要があります。 'postgres'ユーザーとしてログインし、postgres'psql'シェルにアクセスします。
su - postgres
psql
' postgresを与える '以下のクエリでユーザーの新しいパスワード。
\password postgres
Enter new password:
そのため、PostgreSQL 9.6が開始され、postgresユーザーの新しいパスワードが構成されました。
Firewalldは、CentOS 7のデフォルトのファイアウォール管理ツールです。このサービスを開始し、PostgreSQL接続用のポートを開きます。
次のコマンドを使用して、firewalldを起動し、システムの起動時に自動的に起動できるようにします。
systemctl start firewalld
systemctl enable firewalld
次に、次のコマンドを使用して、firewalldに新しいpostgresサービスを追加します。
firewall-cmd --add-service=postgresql --permanent
firewall-cmd --reload
次に、サービスの開いているポートを確認します。
firewall-cmd --list-all
そして、PostgreSQLサービスがfirewalldに追加されていることがわかります。
注: すべてのマスターとスレーブでステップ1、ステップ2、およびステップ3を実行します。
このステップでは、レプリケーション用のマスターサーバーを構成します。これはメインサーバーであり、そこで実行されているアプリケーションからの読み取りおよび書き込みプロセスを可能にします。マスター上のPostgreSQLは「10.0.15.10」IPアドレスでのみ実行され、スレーブサーバーへのストリーミングレプリケーションを実行します。
pgsqlデータディレクトリに移動します'/var/lib/pgsql/9.6/data 'そして設定ファイルを編集します'postgresql.conf '。
cd /var/lib/pgsql/9.6/data
vim postgresql.conf
'listen_addresses'行のコメントを解除し、サーバーIPアドレスの値を'10.0.15.10'に変更します。
listen_addresses = '10.0.15.10'
'wal_level'行のコメントを解除し、値を' hot_standbyに変更します '。
wal_level = hot_standby
同期レベルには、ローカル同期を使用します。コメントを外し、以下のように値の行を変更します。
synchronous_commit = local
アーカイブモードを有効にし、archive_command変数に値としてコマンドを指定します。
archive_mode = on
archive_command = 'cp %p /var/lib/pgsql/9.6/archive/%f'
「レプリケーション」設定の場合は、「wal_sender」行のコメントを解除し、値を2に変更します(このチュートリアルでは、マスターとスレーブの2つのサーバーのみを使用します)。「wal_keep_segments」の値は10です。
max_wal_senders = 2
wal_keep_segments = 10
アプリケーション名については、「synchronous_standby_names」行のコメントを解除し、値を「 pgslave01」に変更します。 '。
synchronous_standby_names = 'pgslave01'
それでおしまい。これらの変更を保存して、エディターを終了します。
次に、postgresql.confファイルでアーカイブモードが有効になっているため、アーカイブ用に新しいディレクトリを作成する必要があります。
新しいディレクトリを作成し、その権限を変更して、所有者をpostgresユーザーに変更します。
mkdir -p /var/lib/pgsql/9.6/archive/
chmod 700 /var/lib/pgsql/9.6/archive/
chown -R postgres:postgres /var/lib/pgsql/9.6/archive/
次に、pg_hba.confファイルを編集します。
vim pg_hba.conf
以下の構成を行の最後に貼り付けます。
# Localhost
host replication replica 127.0.0.1/32 md5
# PostgreSQL Master IP address
host replication replica 10.0.15.10/32 md5
# PostgreSQL SLave IP address
host replication replica 10.0.15.11/32 md5
保存して終了。すべての構成が完了しました。次に、次のコマンドを使用してPostgreSQL9.6を再起動します。
systemctl restart postgresql-9.6
次に、レプリケーション権限を持つ新しいユーザーを作成する必要があります。 'レプリカという名前の新しいユーザーを作成します '。
postgresユーザーとしてログインし、新しい'レプリカを作成します 'パスワードを持つユーザー'[メール保護] '。
su - postgres
createuser --replication -P replica
Enter New Password:
これで、PostgreSQL 9.6マスターの構成が完了し、レプリケーション用のユーザーが作成されます。
このステップでは、スレーブサーバーを構成します。スレーブサーバーのpostgresデータディレクトリをマスターサーバーのpostgresデータに置き換え、スレーブサーバーをIPアドレス「10.0.15.11」で実行するように構成し、最後にhot_standbyを有効にして、書き込みなしで読み取りのみを許可します。
スレーブサーバーの構成を開始する前に、以下のsystemctlコマンドを使用してpostgresサービスを停止してください。
systemctl stop postgresql-9.6
次に、postgresディレクトリに移動し、データディレクトリをバックアップします。
cd /var/lib/pgsql/9.6/
mv data data-backup
新しいデータディレクトリを作成し、ディレクトリの所有権をpostgresユーザーに変更します。
mkdir -p data/
chmod 700 data/
chown -R postgres:postgres data/
次に、postgresユーザーとしてログインし、すべてのデータディレクトリを「マスター」からコピーします。 'サーバーから'スレーブ 'レプリカユーザーとしてのサーバー。
su - postgres
pg_basebackup -h 10.0.15.10 -U replica -D /var/lib/pgsql/9.6/data -P --xlog
Password:
パスワードを入力し、マスターサーバーからスレーブサーバーへのデータ転送を待ちます。
転送が完了したら、postgresデータディレクトリに移動し、スレーブサーバーのpostgresql.confファイルを編集します。
cd /var/lib/pgsql/9.6/data/
vim postgresql.conf
'listen_addresses'の値をスレーブサーバーのIPアドレス'10.0.15.11'に変更します。
listen_addresses = '10.0.15.11'
' hot_standbyを有効にします '次の行のコメントを解除してスレーブサーバーで'onに値を変更します '。
hot_standby = on
それでおしまい。変更を保存して、エディターを終了します。
次に、新しい'recovery.confを作成します 'vimを含むファイル。
vim recovery.conf
次の構成を貼り付けます。
standby_mode = 'on'
primary_conninfo = 'host=10.0.15.10 port=5432 user=replica [email protected] application_name=pgslave01'
trigger_file = '/tmp/postgresql.trigger.5432'
変更を保存してファイルを終了します。
注: primary_conninfoについて 、独自のサーバーの詳細を入力します。
Recovery.confファイルの所有権を「postgres」ユーザーの所有権に変更します。
chmod 600 recovery.conf
chown postgres:postgres recovery.conf
そして、スレーブサーバーでPostgreSQL9.6を起動します。
systemctl start postgresql-9.6
スレーブサーバーの構成が完了しました。
スレーブサーバーを確認すると、PostgreSQL9.6がIPアドレス' 10.0.15.11のサーバーで実行されていることがわかります。 '。
netstat -plntu
PostgreSQL9.6マスタースレーブレプリケーションのインストールと構成が完了しました。セットアップをテストするには、レプリケーションの状態ストリームを確認し、マスターからスレーブへのデータレプリケーションをテストします。
マスターサーバーにログインし、postgresユーザーに切り替えます。
su - postgres
次に、次のコマンドを使用してPostgreSQLのストリーミング状態レプリケーションを確認します。
psql -c "select application_name, state, sync_priority, sync_state from pg_stat_replication;"
psql -x -c "select * from pg_stat_replication;"
状態の値が「ストリーミング」であることがわかります。 '、sync_stateは' sync '。
次に、マスターからデータを挿入してテストし、スレーブサーバー上のすべてのデータを確認します。
postgresユーザーとしてログインし、「 MASTER」でPostgreSQLシェルにアクセスします。 'サーバー。
su - postgres
psql
新しいテーブルを作成します'reply_test 'そして、次の挿入クエリを使用してデータを挿入します。
CREATE TABLE replica_test (test varchar(100));
INSERT INTO replica_test VALUES ('howtoforge.com');
INSERT INTO replica_test VALUES ('This is from Master');
INSERT INTO replica_test VALUES ('pg replication by hakase-labs');
そして今、' SLAVEにログインします 'マスターで行ったのと同様のサーバー。
su - postgres
psql
以下のクエリを使用して、テーブル'replica_test'のすべてのデータを確認してください。
select * from replica_test;
したがって、すべてのデータが複製されていることがわかります。 'マスターから 'サーバーから'SLAVE 'サーバー。
「SLAVE」サーバーから「WRITE」アクションを実行するためのテスト。
INSERT INTO replica_test VALUES ('this is SLAVE');
結果は「INSERTを実行できません」になります。 '。
したがって、CentOS7でのPostgreSQL9.6マスタースレーブレプリケーションのインストールと構成は成功します。
- https://www.postgresql.org/download/linux/redhat/
- https://www.server-world.info/en/note?os=CentOS_7