質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

1回答

2174閲覧

pgpoolの設定(ストリーミングレプリケーション)について

deka

総合スコア44

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2022/03/18 06:10

編集2022/03/18 07:38

前提

https://www.fujitsu.com/jp/products/software/resources/feature-stories/postgres/article-index/pgpool2/

図9 Pgpool-IIを利用したシステム構成例(アプリケーションサーバーに同居)の例を参考に
ストリーミングレプリケーションの設定作業を行っています。

発生している問題・エラーメッセージ

試行錯誤しながら、なんとか設定出来たと思っていたのですが、
いざ、pgpoolのインストールサーバのpsqlコマンドでのinsert を実行すると、だんまりになります。
アプリケーションからpgpoolを介したinsertも同様です。

CTRL+Cで強制終了すると、

psqlでキャンセル

1^C 2キャンセル要求を送信しました 3WARNING: ユーザからの要求により同期レプリケーションの待ち状態をキャンセルしています 4DETAIL: トランザクションはローカルではすでにコミット済みですが、スタンバイ側にはレプリケーションされていない可能性があります。

と出ますが、その後selectするとinsertしたものが出てきます。

実現したいこと

insert後、即レスポンスを返す状態になってほしい。
pgpool.confの設定か、postgresql.confの設定のどちらかがまずいのだと思うのですが、
同じようなことで悩まれた方はいないでしょうか?

補足情報(FW/ツールのバージョンなど)

Postgres 13.3
Pgpool 4.2.4

pgpool.conf

1backend_clustering_mode = 'streaming_replication' 2listen_addresses = '*' 3port = 9999 4socket_dir = '/var/run/postgresql' 5reserved_connections = 0 6pcp_listen_addresses = '*' 7pcp_port = 9898 8pcp_socket_dir = '/var/run/postgresql' 9listen_backlog_multiplier = 2 10serialize_accept = off 11backend_hostname0 = '172.30.2.101' 12backend_port0 = 5432 13backend_weight0 = 1 14backend_data_directory0 = '/usr/pgsql-13/data' 15backend_flag0 = 'ALLOW_TO_FAILOVER' 16backend_application_name0 = 'server0' 17backend_hostname1 = '172.30.2.102' 18backend_port1 = 5432 19backend_weight1 = 1 20backend_data_directory1 = '/usr/pgsql-13/data' 21backend_flag1 = 'ALLOW_TO_FAILOVER' 22backend_application_name1 = 'server1' 23enable_pool_hba = off 24pool_passwd = 'pool_passwd' 25authentication_timeout = 1min 26allow_clear_text_frontend_auth = off 27ssl = off 28ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' 29ssl_prefer_server_ciphers = off 30ssl_ecdh_curve = 'prime256v1' 31ssl_dh_params_file = '' 32num_init_children = 32 33max_pool = 4 34child_life_time = 5min 35child_max_connections = 0 36connection_life_time = 0 37client_idle_limit = 0 38log_destination = 'syslog' 39log_line_prefix = '%t: pid %p: ' # printf-style string to output at beginning of each log line. 40log_connections = off 41log_disconnections = off 42log_hostname = off 43log_statement = off 44log_per_node_statement = off 45log_client_messages = off 46log_standby_delay = 'if_over_threshold' 47syslog_facility = 'LOCAL0' 48syslog_ident = 'pgpool' 49client_min_messages = notice # values in order of decreasing detail: 50log_min_messages = warning # values in order of decreasing detail: 51pid_file_name = '/var/run/pgpool/pgpool.pid' 52logdir = '/tmp' 53connection_cache = on 54reset_query_list = 'ABORT; DISCARD ALL' 55replicate_select = off 56insert_lock = off 57lobj_lock_table = '' 58replication_stop_on_mismatch = off 59failover_if_affected_tuples_mismatch = off 60load_balance_mode = on 61ignore_leading_white_space = on 62read_only_function_list = '' 63write_function_list = '' 64primary_routing_query_pattern_list = '' 65database_redirect_preference_list = '' 66app_name_redirect_preference_list = '' 67allow_sql_comments = off 68disable_load_balance_on_write = 'transaction' 69dml_adaptive_object_relationship_list= '' 70statement_level_load_balance = off 71sr_check_period = 10 72sr_check_user = 'postgres' 73sr_check_password = 'testpass' 74sr_check_database = 'postgres' 75delay_threshold = 10000000 76follow_primary_command = '' 77health_check_period = 60 78health_check_timeout = 20 79health_check_user = 'postgres' 80health_check_password = 'testpass' 81health_check_database = '' 82health_check_max_retries = 0 83health_check_retry_delay = 1 84connect_timeout = 10000 85failover_command = '/etc/pgpool-II/failover.sh %d %h %p %D %m %H %M %P %r %R %N %S' 86failback_command = '' 87failover_on_backend_error = on 88detach_false_primary = off 89search_primary_node_timeout = 5min 90recovery_user = 'postgres' 91recovery_password = 'testpass' 92recovery_1st_stage_command = 'recovery_1st_stage.sh' 93recovery_2nd_stage_command = '' 94recovery_timeout = 90 95client_idle_limit_in_recovery = 0 96auto_failback = off 97auto_failback_interval = 1min 98use_watchdog = on 99trusted_servers = '' 100ping_path = '/bin' 101hostname0 = '172.30.2.99' 102wd_port0 = 9000 103pgpool_port0 = 9999 104hostname1 = '172.30.2.100' 105wd_port1 = 9000 106pgpool_port1 = 9999 107hostname2 = '172.30.2.103' 108wd_port2 = 9000 109pgpool_port2 = 9999 110wd_priority = 1 111wd_authkey = '' 112wd_ipc_socket_dir = '/var/run/postgresql' 113delegate_IP = '' 114if_cmd_path = '/sbin' 115if_up_cmd = '/usr/bin/sudo /sbin/ip addr add $_IP_$/24 dev eth0 label eth0:0' 116if_down_cmd = '/usr/bin/sudo /sbin/ip addr del $_IP_$/24 dev eth0' 117arping_path = '/usr/sbin' 118arping_cmd = '/usr/bin/sudo /usr/sbin/arping -U $_IP_$ -w 1 -I eth0' 119clear_memqcache_on_escalation = on 120wd_escalation_command = '' 121wd_de_escalation_command = '' 122failover_when_quorum_exists = on 123failover_require_consensus = on 124allow_multiple_failover_requests_from_node = off 125enable_consensus_with_half_votes = off 126wd_monitoring_interfaces_list = '' 127wd_lifecheck_method = 'heartbeat' 128wd_interval = 10 129heartbeat_hostname0 = '172.30.2.99' 130heartbeat_port0 = 9694 131heartbeat_device0 = '' 132heartbeat_hostname1 = '172.30.2.100' 133heartbeat_port1 = 9694 134heartbeat_device1 = '' 135heartbeat_hostname2 = '172.30.2.103' 136heartbeat_port2 = 9694 137heartbeat_device2 = '' 138wd_heartbeat_keepalive = 2 139wd_heartbeat_deadtime = 30 140wd_life_point = 3 141wd_lifecheck_query = 'SELECT 1' 142wd_lifecheck_dbname = 'template1' 143wd_lifecheck_user = 'nobody' 144wd_lifecheck_password = '' 145relcache_expire = 0 146relcache_size = 256 147check_temp_table = catalog 148check_unlogged_table = on 149enable_shared_relcache = on 150relcache_query_target = primary 151memory_cache_enabled = off 152memqcache_method = 'shmem' 153memqcache_memcached_host = 'localhost' 154memqcache_memcached_port = 11211 155memqcache_total_size = 64MB 156memqcache_max_num_cache = 1000000 157memqcache_expire = 0 158memqcache_auto_cache_invalidation = on 159memqcache_maxcache = 400kB 160memqcache_cache_block_size = 1MB 161memqcache_oiddir = '/var/log/pgpool/oiddir' 162cache_safe_memqcache_table_list = '' 163cache_unsafe_memqcache_table_list = '' 164

postgresql.conf

1listen_addresses = '*' # what IP address(es) to listen on; 2max_connections = 100 # (change requires restart) 3password_encryption = scram-sha-256 # md5 or scram-sha-256 4shared_buffers = 128MB # min 128kB 5dynamic_shared_memory_type = posix # the default is the first option 6wal_level = replica # minimal, replica, or logical 7synchronous_commit = remote_apply # synchronization level; 8wal_log_hints = on # also do full page writes of non-critical updates 9max_wal_size = 1GB 10min_wal_size = 80MB 11archive_mode = on # enables archiving; off, on, or always 12archive_command = 'cp "%p" "/usr/pgsql-13/archivedir/%f"' # command to use to archive a logfile segment 13max_wal_senders = 10 # max number of walsender processes 14max_replication_slots = 10 # max number of replication slots 15synchronous_standby_names = 's1' # standby servers that provide sync rep 16hot_standby = on # "off" disallows queries during recovery 17log_destination = 'stderr' # Valid values are combinations of 18logging_collector = on # Enable capturing of stderr and csvlog 19log_directory = 'log' # directory where log files are written, 20log_filename = 'postgresql-%a.log' # log file name pattern, 21log_truncate_on_rotation = on # If on, an existing log file with the 22log_rotation_age = 1d # Automatic rotation of logfiles will 23log_rotation_size = 0 # Automatic rotation of logfiles will 24log_line_prefix = '%m [%p] ' # special values: 25log_timezone = 'Asia/Tokyo' 26datestyle = 'iso, ymd' 27timezone = 'Asia/Tokyo' 28lc_messages = 'ja_JP.UTF-8' # locale for system error message 29lc_monetary = 'ja_JP.UTF-8' # locale for monetary formatting 30lc_numeric = 'ja_JP.UTF-8' # locale for number formatting 31lc_time = 'ja_JP.UTF-8' # locale for time formatting 32default_text_search_config = 'pg_catalog.simple'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

deka

2022/03/18 08:55 編集

postgresql.conf synchronous_commit = remote_apply から  synchronous_commit = on にしてもダメでした。
guest

回答1

0

自己解決

pgpoolインストールしたところにあった、
サンプルのリカバリのシェルrecovery_1st_stage.sampleを修正し利用していたのですが、
さらに修正して、なんとかだんまりになることがなくなりました。

設定を見直し手順を確立します。

投稿2022/03/19 07:30

deka

総合スコア44

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問