pgpoolインストール構成整理
8724 ワード
PostgreSQLをインストールし、3ノードストリームレプリケーション環境を構成するには、詳しくは説明しません.大体の手順は以下の通りです.
1.ソースのダウンロード
2.インストールを解凍し、./configure--prefix=/usr/pgsql-10実行時に--without-readlineというプロンプトが表示されますが、システムにreadlineがすでに存在します.一般的にdevelライブラリがインストールされていません.
3.initdb
4.dataディレクトリのpostgresqlを変更する.confファイル、主に3つの場所があります:listen_address='*', wal_レベル=replica(10はデフォルトのようですが、9はhot_standbyに変更します)、hot_standby=on
5.dataディレクトリのpg_を変更するhba.conf,セグメント許可の追加
6.スタンバイノード上のdataディレクトリの下でpg_を実行するbasebackup-ep-R-h主IP-D./,次にrecoveryを変更します.confファイル、trigger_を追加file='/tmp/.tfile'は最後の行になると、データベースを起動してプライマリノードと非同期になります.同期を維持するには、プライマリノードのpostgresql.confでsynchronse_を変更するnames='frist 1(*)',スペアノードのrecovery.confのprimary_infoアプリケーションの追加name='standby 1'でいいです.
7.他のスペアノードは上と同じように動作します.
pgpoolのインストール
1.ダウンロードソースのインストール:
wget http://www.pgpool.net/download.php?f=pgpool-II-3.7.4.tar.gz
2.解凍してインストールする
tar -xzvf download.php\?f\=pgpool-II-3.7.4.tar.gz
cd pgpool-II-3.7.4/
./configure --prefix=/usr/pgpool --with-pgsql=/usr/pgsql-10/
make && make install
3.ノード相互接続の構成
ssh-keygen
そしてすべてのidをrsa.pubはauにまとめられ,各ノードに配布される.
4.環境変数の追加
echo "export PATH=$PATH:/usr/pgpool/bin">>~/.bash_profile
source ~/.bash_profile
5.pcpを修正する.conf
cd/usr/pgpool/etc
cp pcp.conf.sample pcp.conf
pg_md 5-u postgres postgresが生成したパスワードは間違っていて、おかしいです.
pg_md5 -u postgres postgres
e8a48653851e28c69d0506508fb27fc5
-mパラメータを追加すると、ディレクトリの下にpool_が生成されます.passwdファイル、中のmd 5パスワードはまた正しいです
SQL文で調べたパスワードは次のとおりです.
postgres=# select passwd from pg_shadow where usename='postgres';
md53175bce1d3201d16594cebf9d7eb3f9d
echo "postgres:md53175bce1d3201d16594cebf9d7eb3f9d">>pcp.conf
6.pool_を生成passwd
pg_md 5-m-u postgres postgres(このコマンドを使用すると自動的にファイルが生成されます)
7.pgpoolを修正する.conf
cp pgpool.conf.sample pgpool.conf
8.failover.の修正shスクリプト
9.pool_の変更hba.confファイル
echo "host all all 10.9.8.1/24 md5">> pool_hba.conf
10.pgpoolを起動してノードの状態を表示する
pgpool -n>/var/log/pgpool.log 2>&1 &
psql -h 10.9.8.187 -U postgres -p 9999 -d postgres
後で検証する必要がある問題は次のとおりです.
1.プライマリ・スレーブの切り替え後、別のslaveは新しいプライマリ・ノードと同期しますか?
2.主従切替は同期ノードを探すか、それとも2つのslaveノードのnode_idの順番が前のこれ?
3.もし2つのslaveが非同期ノードであれば、xlog(wal)lsn最大のノードを探してmasterをしますか?
4.マスターノードが再オンラインになると、自動的に新しいマスターノードと同期しますか?
転載先:https://www.cnblogs.com/kuang17/p/9264449.html
1.ソースのダウンロード
2.インストールを解凍し、./configure--prefix=/usr/pgsql-10実行時に--without-readlineというプロンプトが表示されますが、システムにreadlineがすでに存在します.一般的にdevelライブラリがインストールされていません.
3.initdb
4.dataディレクトリのpostgresqlを変更する.confファイル、主に3つの場所があります:listen_address='*', wal_レベル=replica(10はデフォルトのようですが、9はhot_standbyに変更します)、hot_standby=on
5.dataディレクトリのpg_を変更するhba.conf,セグメント許可の追加
6.スタンバイノード上のdataディレクトリの下でpg_を実行するbasebackup-ep-R-h主IP-D./,次にrecoveryを変更します.confファイル、trigger_を追加file='/tmp/.tfile'は最後の行になると、データベースを起動してプライマリノードと非同期になります.同期を維持するには、プライマリノードのpostgresql.confでsynchronse_を変更するnames='frist 1(*)',スペアノードのrecovery.confのprimary_infoアプリケーションの追加name='standby 1'でいいです.
7.他のスペアノードは上と同じように動作します.
pgpoolのインストール
1.ダウンロードソースのインストール:
wget http://www.pgpool.net/download.php?f=pgpool-II-3.7.4.tar.gz
2.解凍してインストールする
tar -xzvf download.php\?f\=pgpool-II-3.7.4.tar.gz
cd pgpool-II-3.7.4/
./configure --prefix=/usr/pgpool --with-pgsql=/usr/pgsql-10/
make && make install
3.ノード相互接続の構成
ssh-keygen
そしてすべてのidをrsa.pubはauにまとめられ,各ノードに配布される.
4.環境変数の追加
echo "export PATH=$PATH:/usr/pgpool/bin">>~/.bash_profile
source ~/.bash_profile
5.pcpを修正する.conf
cd/usr/pgpool/etc
cp pcp.conf.sample pcp.conf
pg_md 5-u postgres postgresが生成したパスワードは間違っていて、おかしいです.
pg_md5 -u postgres postgres
e8a48653851e28c69d0506508fb27fc5
-mパラメータを追加すると、ディレクトリの下にpool_が生成されます.passwdファイル、中のmd 5パスワードはまた正しいです
SQL文で調べたパスワードは次のとおりです.
postgres=# select passwd from pg_shadow where usename='postgres';
md53175bce1d3201d16594cebf9d7eb3f9d
echo "postgres:md53175bce1d3201d16594cebf9d7eb3f9d">>pcp.conf
6.pool_を生成passwd
pg_md 5-m-u postgres postgres(このコマンドを使用すると自動的にファイルが生成されます)
7.pgpoolを修正する.conf
cp pgpool.conf.sample pgpool.conf
listen_addresses = '*'
......
backend_hostname0 = '10.9.8.185'
# Host name or IP address to connect to for backend 0
backend_port0 = 5432
# Port number for backend 0
backend_weight0 = 1
# Weight for backend 0 (only in load balancing mode)
backend_data_directory0 = '/var/lib/pgsql/10/data'
# Data directory for backend 0
backend_flag0 = 'ALLOW_TO_FAILOVER'
# Controls various backend behavior
# ALLOW_TO_FAILOVER, DISALLOW_TO_FAILOVER
# or ALWAYS_MASTER
backend_hostname1 = '10.9.8.189'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/var/lib/pgsql/10/data'
backend_flag1 = 'ALLOW_TO_FAILOVER'
backend_hostname2 = '10.9.8.191'
backend_port2 = 5432
backend_weight2 = 1
backend_data_directory2 = '/var/lib/pgsql/10/data'
backend_flag2 = 'ALLOW_TO_FAILOVER'
......
follow_master_command = '/usr/pgpool/etc/failover.sh %H %R'
8.failover.の修正shスクリプト
new_master=$1
pgdata=$2
# Do nothing if standby goes down.
if [ $failed_node = 1 ]; then
exit 0;
fi
# Create the trigger file.
#/usr/bin/ssh -T $new_master /bin/touch $trigger_file
/usr/bin/ssh -T $new_master /usr/pgsql-10/bin/pg_ctl promote -D $pgdata
exit 0;
9.pool_の変更hba.confファイル
echo "host all all 10.9.8.1/24 md5">> pool_hba.conf
10.pgpoolを起動してノードの状態を表示する
pgpool -n>/var/log/pgpool.log 2>&1 &
psql -h 10.9.8.187 -U postgres -p 9999 -d postgres
postgres=# show pool_nodes;
node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay
---------+------------+------+--------+-----------+--------+------------+-------------------+-------------------
0 | 10.9.8.185 | 5432 | up | 0.333333 | master | 0 | true | 0
1 | 10.9.8.189 | 5432 | up | 0.333333 | slave | 0 | false | 0
2 | 10.9.8.191 | 5432 | up | 0.333333 | slave | 0 | false | 0
(3 )
postgres=#
後で検証する必要がある問題は次のとおりです.
1.プライマリ・スレーブの切り替え後、別のslaveは新しいプライマリ・ノードと同期しますか?
2.主従切替は同期ノードを探すか、それとも2つのslaveノードのnode_idの順番が前のこれ?
3.もし2つのslaveが非同期ノードであれば、xlog(wal)lsn最大のノードを探してmasterをしますか?
4.マスターノードが再オンラインになると、自動的に新しいマスターノードと同期しますか?
転載先:https://www.cnblogs.com/kuang17/p/9264449.html