PGストリームのコピーの展開の実践

1はじめに

新しいストリームは、以降のバージョン9.0 pgのデータベース機能で、基本的な原理は、マスターサーバーからサーバーへの接続である彼らは、サーバーにストリーム配信されたときに記録WAL、マスターログファイルを待たずに、生成されるコピーがWAL満たされています。

デフォルトでは、ストリームの複製が、この場合には、非同期であり、プライマリサーバは、ファイルベースのログシッピングの方法よりも見えますが、この遅延の間にわずかな遅延がありになってからサーバー上の変更とトランザクションをコミットはるかに小さく、負荷条件およびサーバハードウェアから等を可能にする場合には、遅延は、典型的には1秒未満です。

2の展開

2.1サーバの設定

サーバー IP 説明
マスター(centos6.5) 192.168.0.10 PGマスターサーバー
スタンバイ(centos6.5) 192.168.0.11 サーバーからのPG

以下の点に注意を払う必要があります。

  • 唯一のマスタ・サーバが、サーバが同時に特定の負荷を複数設けることができます。
  • サーバーから只读服务器の動作を変更することはできません。
  • 主はそれ以外の場合は、奇妙な質問がたくさんあるでしょう、同じサーバーオペレーティングシステムから、バージョンが一致している必要がある必要があります。

2.2メインライブラリ構成

PG実装工程が省略され、実際には様々な方法で実装することができ、詳細な説明はありません。メインのライブラリのインストールは完了しており、すでに始まっています。

まず、あなたはライブラリは、データを同期するために、このアカウントのパスワードを使用する必要がありますから、アカウントのパスワードを設定する必要があります。

postgres# CREATE ROLE replica login replication encrypted password 'replica'

安全性を確保するために、このアカウントが唯一のpg_hba.confの設定を変更する必要性により、ライブラリから接続することができ、ライブラリーからのより多くがある場合は、あなただけの後ろのIPを変更する必要があります。

host    replication     replica     192.168.0.11/32                 md5

ストリームのコピーを設定、postgresql.confのを修正。

wal_level = hot_standby  # 这个是设置主为wal的主机
max_wal_senders = 8 #这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个
wal_keep_segments = 64 # 设置流复制保留的最多的xlog数目,如果数据库的事务并发数过多,这个一定要设置稍大一些,避免wal日志没有同步完,主库旧wal日志就删除了,这会导致备库直接宕机
wal_sender_timeout = 60s # 设置流复制主机发送数据的超时时间

max_connections = 100 # 这个设置要注意下,从库的max_connections必须要大于主库的

あなたは上記の構成を有効にするので、あなたは、メインのライブラリを再起動することができ、上記を変更します。

pg_ctl restart -D /data1/pgdata/

ライブラリの構成から2.3

データベースがインストールされていることを想定し、これらのファイルは、いくつかのWALログを含むメインライブラリーからオーバー同期させる必要があるため、文書のPGDATAのシリーズを生成しないこと、初期化されていません。あなたは既に初期化されている場合は、ライン上PGDATA内のすべてのファイルを削除します。また、データディレクトリデータベース/ DATA1 / PGDATAは、そのディレクトリに注意を払うことを前提とし、あなたが700である必要があり、ユーザーはpostgresにあります。

ライブラリからユーザーのレプリカのパスワードにマスターデータライブラリファイルを同期して、このパスワードは、ステップ入力で作成したメインのライブラリ構成の最初のステップで、このプロセスは、メインライブラリのすべてのデータファイルをコピーする必要があり、完了後に、それはライブラリから見つけることができますメインライブラリカタログファイルはまったく同じです。

pg_basebackup -F p --progress -D /data1/pgdata -h 192.168.0.10 -p 5432 -U replica --password

recovery.confのを修正し、このファイルは共有ファイルフォルダから取得することができ、直接コピーします。

cp /data1/pgdata/share/recovery.conf.sample /data1/pgdata/recovery.conf

次のパラメータを変更します。

standby_mode = on  # 这个说明这台机器为从库
primary_conninfo = 'host=192.168.0.10 port=5432 user=replica password=replica'  # 这个说明这台机器对应主库的信息
recovery_target_timeline = 'latest' # 这个说明这个流复制同步到最新的数据

postgresql.confのいくつかのパラメータを変更します。

max_connections = 300 # 一般查多于写的应用从库的最大连接数要比较大
hot_standby = on  # 说明这台机器不仅仅是用于数据归档,也用于数据查询
max_standby_streaming_delay = 30s # 数据流备份的最大延迟时间
wal_receiver_status_interval = 10s  # 多久向主报告一次从的状态,当然从每次数据复制都会向主报告状态,这里只是设置最长的间隔时间
hot_standby_feedback = on # 如果有错误的数据复制,是否向主进行反馈

そして、ライブラリから起動します。

pg_ctl start -D /data1/pgdata/

2.4検証

主なライブラリは、プロセスのps -ef表示| grepの送信者を、送信側のプロセスは、WALを送信するプロセスであります

postgres  3564 64185  0 Aug29 ?        00:00:08 postgres: wal sender process replica 192.168.0.11(50828) streaming 5/4ED4F868

grepの受信機プロセス、WALの受信処理|プロセスのps -efを参照するには、ライブラリから

postgres 34251 34245  0 Aug29 ?        00:09:54 postgres: wal receiver process   streaming 5/4ED4F868

WALログの同期は4ED4F868です。

主なライブラリーは、ビューpg_stat_replicationは、より詳細な情報を表示することができ、ここで紹介されていないしています。

3概要

上記の展開を通じて、それがメインストリームのコピーから発見されたが、著者らは、本番環境を構築年以上を走った比較的安定している、ビジネスの信頼性と安定性を確保するために何の障害がなかったです。しかし、ビジネスの成長に合わせて、ライブラリーからの同時クエリを満たしていない可能性があり、我々は需要を満たすために、ライブラリから複数の拡大を検討することができますが、問題は比較的大きくなり、メインライブラリの送信元の圧力によって引き起こされる、他の同期拡張子がありますときに問題。著者は、まだどのようなシステムが大きくなるため、むしろパフォーマンスを最適化するためにマシンを積み重ねるよりも、最適化するために、さらに高いの複雑さをシンプルなアーキテクチャを好むが、増加は不安定な要因によって引き起こされます。

シンプルなそれはそう。

おすすめ

転載: www.cnblogs.com/easonbook/p/11511215.html