senooken JP Social
  • FAQ
  • Login
senooken JP Socialはsenookenの専用分散SNSです。
  • Public

    • Public
    • Network
    • Groups
    • Popular
    • People

Conversation

Notices

  1. のえる (noellabo@fedibird.com)'s status on Saturday, 30-Apr-2022 10:43:18 JST のえる のえる

    レプリケーションも、つまるところpg_basebackupで一気にコピーしてしまうだけなので、むしろdump, restoreより楽まであるよ

    In conversation Saturday, 30-Apr-2022 10:43:18 JST from fedibird.com permalink
    • のえる (noellabo@fedibird.com)'s status on Saturday, 30-Apr-2022 10:55:00 JST のえる のえる
      in reply to

      データベースでかくなると、pg_basebackupが終わる前にどんどん新しい更新が溜まっていって、あとからではWAL転送が追いつかなくなってしまうことがあるので、同時にWALもストリーミング受信して、完了時に追いついているようにする。(そういうオプションがある)

      完了したら直ちに起動したいので、そこまで一気に実行するようにコマンド書く。

      レプリケーションはじまってしまえば、あとは落ち着いていつでも元をとめて、新環境をpromoteできる。

      In conversation Saturday, 30-Apr-2022 10:55:00 JST permalink
      sublimer@鯖缶 repeated this.
    • のえる (noellabo@fedibird.com)'s status on Saturday, 30-Apr-2022 11:13:55 JST のえる のえる
      in reply to

      元のサーバでやること

      ・外からつながるようにインタフェースをlistenする(そのままだとlocalhostしかlistenしてない)

      ・replication_user作る(名前は別になんでもいい)

      ・pg_hba.confで、新鯖からのreplication_userでの接続を許可する

      ・その他のレプリケーション設定パラメータを足す(wal_level = replicaなど)

      ・ファイアーウォールでも接続許可する

      In conversation Saturday, 30-Apr-2022 11:13:55 JST permalink
      sublimer@鯖缶 repeated this.
    • のえる (noellabo@fedibird.com)'s status on Saturday, 30-Apr-2022 11:21:23 JST のえる のえる
      in reply to

      新規のサーバでやること

      ・一旦データベース初期設定して、整えとく。停止状態。

      ・データは消しちゃう(rm -fr /var/lib/postgresql/14/main みたいな)

      ・元サーバのpgtune.confなど、パラメータをある程度一致させとく(コネクション数とか元と違うと蹴られたり)

      ・もちろんpg_hba.confなどセキュリティ設定は済ませておく

      ・とりあえずpsqlコマンドでreplication_userで繋がるか事前にテスト

      ・pg_basebackupで一気に持ってくる

      ・起動

      ・レプリケーションできてることを確認する

      ・(元のサーバに新規書き込みするのやめて、転送しきったら元DB止める)

      ・promoteする(昇格してこっちが本体になる)

      ・新規DBサーバへの読み書きを開始する

      In conversation Saturday, 30-Apr-2022 11:21:23 JST permalink
      sublimer@鯖缶 repeated this.
    • のえる (noellabo@fedibird.com)'s status on Saturday, 30-Apr-2022 11:25:24 JST のえる のえる
      in reply to

      pg_basebackupはこんな感じ。

      # sudo -u postgres pg_basebackup -h xxx.xxx.xxx.xxx -p 5432 -D /var/lib/postgresql/14/main/ -U replication_user -R -P --checkpoint=fast -X stream -v && pg_ctlcluster 14 main start

      xxx.xxx.xxx.xxxは元サーバのIPアドレス。ポートも指定してるけど、5432ならいらないかな。

      rootになって、pg_basebackupから、完了後のstartまで一気にやる。これはUbuntu / Debian系ね。

      In conversation Saturday, 30-Apr-2022 11:25:24 JST permalink
      sublimer@鯖缶 repeated this.
    • 村上さん (aureoleark@misskey.io)'s status on Saturday, 30-Apr-2022 11:29:54 JST 村上さん 村上さん
      in reply to

      @noellabo@fedibird.com pgpool-II突っ込んで設定しておくとダウンタイム0でスイッチできるよ仮想IP喋ってくれるからそこにアプリケーション接続しておけばアプリケーション側の設定も不要で便利

      In conversation Saturday, 30-Apr-2022 11:29:54 JST permalink
    • のえる (noellabo@fedibird.com)'s status on Saturday, 30-Apr-2022 11:29:54 JST のえる のえる
      in reply to
      • 村上さん

      @AureoleArk ダウンタイムゼロまで持っていくと格好いいよね! 切り替わったことだれも気付かないw

      In conversation Saturday, 30-Apr-2022 11:29:54 JST permalink
    • のえる (noellabo@fedibird.com)'s status on Saturday, 30-Apr-2022 11:41:28 JST のえる のえる
      in reply to
      • 村上さん

      @AureoleArk Mastodonはドキュメントに案内があってpgbouncer使ってる人が多いんだけど、

      こいつもpauseして接続先切り替えてresumeするようにすると具合がいい。

      Mastodonのプロセスからコネクション維持されててちょっと応答が遅延したぐらいにしか見えないので、擬似的にダウンタイムゼロにみえる。

      In conversation Saturday, 30-Apr-2022 11:41:28 JST permalink
    • 村上さん (aureoleark@misskey.io)'s status on Saturday, 30-Apr-2022 11:41:29 JST 村上さん 村上さん
      in reply to

      @noellabo@fedibird.com 動かしたままpg_basebackupして、ストリーミングレプリケーションを構築しながらpgpool-IIを使うなどがよさそう

      In conversation Saturday, 30-Apr-2022 11:41:29 JST permalink
    • のえる (noellabo@fedibird.com)'s status on Saturday, 30-Apr-2022 11:50:40 JST のえる のえる
      in reply to

      listen_addresses = 'xxx.xxx.xxx.xxx,localhost'

      リモートサーバじゃなくて、元サーバのインタフェースに振ってあるアドレス。面倒なら

      listen_addresses = '*'

      でいい。

      replication_userつくる。パスワードつける。

      CREATE ROLE replication_user LOGIN REPLICATION PASSWORD 'xxxxxxxxx';

      pg_hba.confこんな感じ。

      host replication replication_user xxx.xxx.xxx.xxx/32 md5

      replication.confとか作ってconf.d/ においとくといい。

      synchronous_commit = offwal_level = replicamax_wal_senders = 3

      ファイアーウォールはたとえばこう。

      ufw allow from xxx.xxx.xxx.xxx to any port 5432 proto tcp

      In conversation Saturday, 30-Apr-2022 11:50:40 JST permalink
    • のえる (noellabo@fedibird.com)'s status on Saturday, 30-Apr-2022 12:10:03 JST のえる のえる
      in reply to

      pg_lsclusterしたらもうmainがいたりするけど、いたら止める。

      sudo pg_ctlcluster 14 main stop

      いないなら作る。

      sudo pg_createcluster 14 main

      データ消す。

      sudo rm -fr /var/lib/postgresql/14/main

      pg_hba.conとかconf.d/に置く設定は割愛。あ、これは書いとくか。

      hot_standby = on

      レプリカがホットスタンバイで動くようにする設定。

      (中略)

      元DBで select * from pg_stat_replication; すると、実行中のレプリケーション接続がリストされるので、これで状況みる。

      昇格はこう。

      sudo pg_ctlcluster 14 main promote

      レプリケーションやめて、こっちが本体になる。

      In conversation Saturday, 30-Apr-2022 12:10:03 JST permalink

Feeds

  • Activity Streams
  • RSS 2.0
  • Atom
  • Help
  • About
  • FAQ
  • TOS
  • Privacy
  • Source
  • Version
  • Contact

senooken JP Social is a social network, courtesy of senooken. It runs on GNU social, version 2.0.2-beta0, available under the GNU Affero General Public License.

Creative Commons Attribution 3.0 All senooken JP Social content and data are available under the Creative Commons Attribution 3.0 license.