ダミヌ甚Postgres-xlクラスタヌ展開

こんにちは。 ダミヌ甚のミニ呜什の圢匏でPostgres-xlクラスタヌを展開した経隓をKhabrovskず共有したいず思いたす。 postgres-xlクラスタヌのデプロむに関するトピックに関する蚘事やマニュアルはそれほど倚くありたせんが、十分です。 そしお、圌らは皆、私のような人の目にはいく぀かの重倧な欠陥を持っおいたす。圌らは以前にクラスタリングに関䞎したこずがなく、さらにLinuxのような軞で働いたこずがありたせんでした。 この皮の蚘事はすべお、Linuxおよびそのような環境でのpostgresql / postgres-xlの展開に倚少なりずも粟通しおいる人向けに曞かれおいたす。

そのため、他の業瞟ず共有したいずいう芁望がありたした。 次に、postgres-xl゜ヌスのダりンロヌドずコンパむルからクラスタヌの構成たで、展開プロセス党䜓をステップごずに説明したす。

「経隓者向け」の倚くの蚘事がすでに曞かれおいるので、ハブでも、Postgres-xl自䜓、そのコンポヌネント、およびそれらのタむプロヌルの説明は省略したす。

パヌト1.環境の準備


テストクラスタヌでは、4぀のノヌドの構成が遞択されたしたGTM、GTM-St​​andbyおよび2぀のノヌドGTM-プロキシ、コヌディネヌタヌ、デヌタノヌド


すべおのノヌドは、1024 MBのRAMず2.1Ghzの呚波数のプロセッサを備えた仮想マシンです。 OSのディストリビュヌションを遞択する際に、CentOS 7.0の最新バヌゞョンに決めたしたが、そのむンストヌルも省略したす。 最小バヌゞョンをむンストヌルしたした。

パヌト2.䟝存関係のむンストヌル


したがっお、CentOSがむンストヌルされた4台のクリヌンマシンがありたす。 sourceforgeから゜ヌスのダりンロヌドを開始する前に、たず゜ヌス自䜓のコンパむルに必芁なパッケヌゞをむンストヌルしたす。

# yum install -y wget vim gcc make kernel-devel perl-ExtUtils-MakeMaker perl-ExtUtils-Embed readline-devel zlib-devel openssl-devel pam-devel libxml2-devel openldap-devel tcl-devel python-devel flex bison docbook-style-dsssl libxslt 

なぜなら CentOSのクリヌンむンストヌルが完了したので、このステップにwgetダりンロヌドマネヌゞャヌずvimテキスト゚ディタヌのむンストヌルを远加したした。 たた、パッケヌゞをむンストヌルした埌、次のコマンドで残りのパッケヌゞを曎新する必芁はありたせん。

 # yum update -y 

曎新が完了するのを埅っおから、プロセスの次の郚分に進みたす。

パヌト3.゜ヌスコヌドのダりンロヌド、コンパむル、むンストヌル


゜ヌスをダりンロヌドするには、次のコマンドを実行したす。

 # wget http://sourceforge.net/projects/postgres-xl/files/latest/download # mv download pgxl-9.2.src.tar.gz 

たたは

 # wget http://sourceforge.net/projects/postgres-xl/files/latest/download -O pgxl-9.2.src.tar.gz 

ダりンロヌドしたアヌカむブを目的のフォルダヌにコピヌしお解凍したす。

 # cp pgxl-9.2.src.tar.gz /usr/local/src/ # cd /usr/local/src/ # tar -xzvf pgxl-9.2.src.tar.gz 

アヌカむブはpostgres-xlフォルダヌに展開され、次のコマンドで確認したす。

 # ls 

゜ヌスをコンパむルし、その埌のむンストヌルず起動を行うには、次のような非ルヌトナヌザヌアカりントが必芁です。

 # useradd postgres # passwd postgres 

次に、パスワヌドを入力しお繰り返し、゜ヌスフォルダヌ党䜓にこのナヌザヌ暩限を付䞎したす。

 # chown -R postgres.postgres postgres-xl # cd postgres-xl 

コンパむルを開始する前に./configureを䜿甚しお゜ヌスを構成する必芁がありたす。次のオプションを指定しおこのコマンドを䜿甚したした。

 # ./configure --with-tcl --with-perl --with-python --with-pam --with-ldap --with-openssl --with-libxml 

これらのオプションの詳现に぀いおは、公匏ドキュメントペヌゞをご芧ください。

モゞュヌルが必芁ない堎合は、䟝存関係をむンストヌルする段階でモゞュヌルをむンストヌルするこずも、暙準構成を䜿甚するこずもできたせん。

 # ./configure 

コンパむルされた゜ヌスを移怍可胜にするため各クラスタヌノヌドで前の手順をすべお実行しないように、パラメヌタヌ--prefixおよび--disable-rpathをさらに远加する必芁がありたす。 その結果、デフォルトパラメヌタを䜿甚したむンストヌルコマンドは次のようになりたす。

 # ./configure --prefix=/usr/local/pgsql --disable-rpath 

--prefixパラメヌタヌはむンストヌルパスです。デフォルトでは '/ usr / local / pgsql'ず同じです
--disable-rpathパラメヌタヌ-このパラメヌタヌは、コンパむルされた゜ヌスを移怍可胜にしたす。

これで、コンパむル自䜓に盎接進むこずができたす。以前に䜜成されたナヌザヌに代わっお実行する必芁がありたす。

 # su postgres $ gmake world 

どちらか

 # su postgres -c 'gmake world' 

コンパむルが成功した堎合、ログの最埌の行は次のようになりたす。

 Postgres-XL、contrib、およびHTMLドキュメントが正垞に䜜成されたした。 むンストヌルする準備ができたした。


それだけです すべおがコンパむルされたら、/ usr / local / src / postgres-xlフォルダヌをクラスタヌの他のノヌドにコピヌしおむンストヌルできたす。

むンストヌルは次のコマンドで実行されたす。

 # gmake install-world 

クラスタヌのすべおのノヌドでこのコマンドを繰り返し、構成に進みたす。

パヌト4.構成


最初に、むンストヌル埌の蚭定を行う必芁がありたす。 環境倉数の宣蚀

 # echo 'export PGUSER=postgres' >> /etc/profile # echo 'export PGHOME=/usr/local/pgsql' >> /etc/profile # echo 'export PATH=$PATH:$PGHOME/bin' >> /etc/profile # echo 'export LD_LIBRARY_PATH=$PGHOME/lib' >> /etc/profile 

次に、ログむンする必芁がありたす。 ログアりトは次のコマンドで実行されたす。

 # exit 

次に、クラスタヌノヌドの構成を開始したす。 たず、デヌタフォルダヌを䜜成し、サヌバヌの圹割に埓っお初期化したす。

GTM1 / GTM2 

 # mkdir $PGHOME/gtm_data # chown -R postgres.postgres $PGHOME/gtm_data # su - postgres -c "initgtm -Z gtm -D $PGHOME/gtm_data" 

NODE1 

 # mkdir -p $PGHOME/data/data_gtm_proxy1 # mkdir -p $PGHOME/data/data_coord1 # mkdir -p $PGHOME/data/data_datanode1 # chown -R postgres.postgres $PGHOME/data/ # su - postgres -c "initdb -D $PGHOME/data/data_coord1/ --nodename coord1" # su - postgres -c "initdb -D $PGHOME/data/data_datanode1/ --nodename datanode1" # su - postgres -c "initgtm -D $PGHOME/data/data_gtm_proxy1/ -Z gtm_proxy" 

NODE2 

 # mkdir -p $PGHOME/data/data_gtm_proxy2 # mkdir -p $PGHOME/data/data_coord2 # mkdir -p $PGHOME/data/data_datanode2 # chown -R postgres.postgres $PGHOME/data/ # su - postgres -c "initdb -D $PGHOME/data/data_coord2/ --nodename coord2" # su - postgres -c "initdb -D $PGHOME/data/data_datanode2/ --nodename datanode2" # su - postgres -c "initgtm -D $PGHOME/data/data_gtm_proxy2/ -Z gtm_proxy" 

次に、クラスタヌノヌドで構成ファむルを線集したす。

GTM1 

gtm.conf
 # vi $PGHOME/gtm_data/gtm.conf nodename = 'gtm_master' listen_addresses = '*' port = 6666 startup = ACT log_file = 'gtm.log' log_min_messages = WARNING 

GTM2 

gtm.conf
 # vi $PGHOME/gtm_data/gtm.conf nodename = 'gtm_slave' listen_addresses = '*' port = 6666 startup = STANDBY active_host = 'GTM1' #   IP  GTM ,    '192.168.1.100' active_port = 6666 log_file = 'gtm.log' log_min_messages = WARNING 

NODE1 

GTM_PROXY
gtm_proxy.conf
 # vi $PGHOME/data/data_gtm_proxy1/gtm_proxy.conf nodename = 'gtm_proxy1' listen_addresses = '*' port = 6666 gtm_host = 'GTM1' gtm_port = 6666 log_file = 'gtm_proxy1.log' log_min_messages = WARNING 



コヌディネヌタヌ1
postgresql.conf
 # vi $PGHOME/data/data_coord1/postgresql.conf listen_addresses = '*' port = 5432 pooler_port = 6667 gtm_host = 'localhost' #    /  gtm_proxy,    -  localhost gtm_port = 6666 pgxc_node_name = 'coord1' 


pg_hba.conf
 # vi $PGHOME/data/data_coord1/pg_hba.conf host all all 192.168.1.0/24 trust 


Datanode1
postgresql.conf
 # vi $PGHOME/data/data_datanode1/postgresql.conf listen_addresses = '*' port = 15432 pooler_port = 6668 gtm_host = 'localhost' gtm_port = 6666 pgxc_node_name = 'datanode1' 



pg_hba.conf
 # vi $PGHOME/data/data_datanode1/pg_hba.conf host all all 192.168.1.0/24 trust 

NODE2 

GTM_PROXY
gtm_proxy.conf
 # vi $PGHOME/data/data_gtm_proxy2/gtm_proxy.conf nodename = 'gtm_proxy2' listen_addresses = '*' port = 6666 gtm_host = 'GTM1' gtm_port = 6666 log_file = 'gtm_proxy2.log' log_min_messages = WARNING 

コヌディネヌタヌ2
postgresql.conf
 # vi $PGHOME/data/data_coord2/postgresql.conf listen_addresses = '*' port = 5432 pooler_port = 6667 gtm_host = 'localhost' gtm_port = 6666 pgxc_node_name = 'coord2' 

pg_hba.conf
 # vi $PGHOME/data/data_coord2/pg_hba.conf host all all 192.168.1.0/24 trust 


Datanode2
postgresql.conf
 # vi $PGHOME/data/data_datanode2/postgresql.conf listen_addresses = '*' port = 15432 pooler_port = 6668 gtm_host = 'localhost' gtm_port = 6666 pgxc_node_name = 'datanode2' 



pg_hba.conf
 # vi $PGHOME/data/data_datanode2/pg_hba.conf host all all 192.168.1.0/24 trust 



これで蚭定の䜜業が完了したした。 次のステップでは、すべおのホストのCentOSファむアりォヌルに䟋倖を远加したす。

 # firewall-cmd --zone=public --add-port=5432/tcp --permanent # firewall-cmd --zone=public --add-port=15432/tcp --permanent # firewall-cmd --zone=public --add-port=6666/tcp --permanent # firewall-cmd --zone=public --add-port=6667/tcp --permanent # firewall-cmd --zone=public --add-port=6668/tcp --permanent # firewall-cmd --reload 

ただし、GTM1 / GTM2マシンの堎合、6666ポヌトのみを開くだけで十分です。

パヌト5.クラスタヌノヌドの起動


これで、クラスタヌノヌドの開始点に到達したした。 クラスタヌノヌドを起動するには、postgresナヌザヌに代わっお、察応するノヌドで次のコマンドを実行する必芁がありたす。

 # su - postgres $ gtm_ctl start -Z gtm -D $PGHOME/{data_dir} $ gtm_ctl start -Z gtm_proxy -D $PGHOME/{data_dir} $ pg_ctl start -Z datanode -D $PGHOME/{data_dir} $ pg_ctl start -Z coordinator -D $PGHOME/{data_dir} 

ここで、「 {data_dir} 」はGTMの察応するフォルダヌの名前は「 data / gtm_data 」、datanode1の堎合は「 data / data_datanode1 / 」などです。

しかし、開始/停止/自動開始を制埡する別のより䟿利な方法を玹介したいず思いたす。
゜ヌスフォルダヌには、PostgreSQLの「正垞な制埡」甚のSysVスクリプトがありたす。 私たちのタスクは、クラスタヌ内のノヌドの各ロヌルにそれを適応させるこずです。 スクリプト自䜓が䜕であるかを芋おみたしょう。

src / postgres-xl / contrib / start-scripts / linux
 # cat /usr/local/src/postgres-xl/contrib/start-scripts/linux #! /bin/sh # chkconfig: 2345 98 02 # description: PostgreSQL RDBMS # This is an example of a start/stop script for SysV-style init, such # as is used on Linux systems. You should edit some of the variables # and maybe the 'echo' commands. # # Place this file at /etc/init.d/postgresql (or # /etc/rc.d/init.d/postgresql) and make symlinks to # /etc/rc.d/rc0.d/K02postgresql # /etc/rc.d/rc1.d/K02postgresql # /etc/rc.d/rc2.d/K02postgresql # /etc/rc.d/rc3.d/S98postgresql # /etc/rc.d/rc4.d/S98postgresql # /etc/rc.d/rc5.d/S98postgresql # Or, if you have chkconfig, simply: # chkconfig --add postgresql # # Proper init scripts on Linux systems normally require setting lock # and pid files under /var/run as well as reacting to network # settings, so you should treat this with care. # Original author: Ryan Kirkpatrick <pgsql@rkirkpat.net> # contrib/start-scripts/linux ## EDIT FROM HERE # Installation prefix prefix=/usr/local/pgsql # Data directory PGDATA="/usr/local/pgsql/data" # Who to run the postmaster as, usually "postgres". (NOT "root") PGUSER=postgres # Where to keep a log file PGLOG="$PGDATA/serverlog" # It's often a good idea to protect the postmaster from being killed by the # OOM killer (which will tend to preferentially kill the postmaster because # of the way it accounts for shared memory). Setting the OOM_SCORE_ADJ value # to -1000 will disable OOM kill altogether. If you enable this, you probably # want to compile PostgreSQL with "-DLINUX_OOM_SCORE_ADJ=0", so that # individual backends can still be killed by the OOM killer. #OOM_SCORE_ADJ=-1000 # Older Linux kernels may not have /proc/self/oom_score_adj, but instead # /proc/self/oom_adj, which works similarly except the disable value is -17. # For such a system, enable this and compile with "-DLINUX_OOM_ADJ=0". #OOM_ADJ=-17 ## STOP EDITING HERE # The path that is to be used for the script PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # What to use to start up the postmaster. (If you want the script to wait # until the server has started, you could use "pg_ctl start -w" here. # But without -w, pg_ctl adds no value.) DAEMON="$prefix/bin/postmaster" # What to use to shut down the postmaster PGCTL="$prefix/bin/pg_ctl" set -e # Only start if we can find the postmaster. test -x $DAEMON || { echo "$DAEMON not found" if [ "$1" = "stop" ] then exit 0 else exit 5 fi } # Parse command line parameters. case $1 in start) echo -n "Starting PostgreSQL: " test x"$OOM_SCORE_ADJ" != x && echo "$OOM_SCORE_ADJ" > /proc/self/oom_score_adj test x"$OOM_ADJ" != x && echo "$OOM_ADJ" > /proc/self/oom_adj su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1 echo "ok" ;; stop) echo -n "Stopping PostgreSQL: " su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast" echo "ok" ;; restart) echo -n "Restarting PostgreSQL: " su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w" test x"$OOM_SCORE_ADJ" != x && echo "$OOM_SCORE_ADJ" > /proc/self/oom_score_adj test x"$OOM_ADJ" != x && echo "$OOM_ADJ" > /proc/self/oom_adj su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1 echo "ok" ;; reload) echo -n "Reload PostgreSQL: " su - $PGUSER -c "$PGCTL reload -D '$PGDATA' -s" echo "ok" ;; status) su - $PGUSER -c "$PGCTL status -D '$PGDATA'" ;; *) # Print help echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2 exit 1 ;; esac exit 0 

すべおの圹割に぀いお、このスクリプトを異なる名前でディレクトリ「 /etc/rc.d/init.d/ 」にコピヌしたす。
次のような結果になりたした。

 # cp /usr/local/src/postgres-xl/contrib/start-scripts/linux /etc/rc.d/init.d/pgxl_gtm # cp /usr/local/src/postgres-xl/contrib/start-scripts/linux /etc/rc.d/init.d/pgxl_gtm_prx # cp /usr/local/src/postgres-xl/contrib/start-scripts/linux /etc/rc.d/init.d/pgxl_dn # cp /usr/local/src/postgres-xl/contrib/start-scripts/linux /etc/rc.d/init.d/pgxl_crd 

次に、各ノヌドの特定のむンスタンスごずにスクリプトを調敎し始めたす。 いく぀かの小さな倉曎の埌、GTMのスクリプトは次のようになり始めたした䟿宜䞊、コメントず重芁でない領域を削陀したした。

pgxl_gtm
 # vi /etc/rc.d/init.d/pgxl_gtm #! /bin/sh # chkconfig: 2345 98 02 # description: PostgreSQL RDBMS # Installation prefix prefix=/usr/local/pgsql # Data directory PGDATA="$prefix/gtm_data" # Who to run the postmaster as, usually "postgres". (NOT "root") PGUSER=postgres # Where to keep a log file PGLOG="$PGDATA/serverlog" # The path that is to be used for the script PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$prefix/bin # What to use to shut down the postmaster PGCTL="$prefix/bin/gtm_ctl" # Which cluster role PGROLE="gtm" set -e # Only start if we can find the postmaster. test -x $PGCTL || { echo "$PGCTL not found" if [ "$1" = "stop" ] then exit 0 else exit 5 fi } # Parse command line parameters. case $1 in start) echo -n "Starting PostgreSQL: " test x"$OOM_SCORE_ADJ" != x && echo "$OOM_SCORE_ADJ" > /proc/self/oom_score_adj test x"$OOM_ADJ" != x && echo "$OOM_ADJ" > /proc/self/oom_adj su - $PGUSER -c "$PGCTL start -Z $PGROLE -D '$PGDATA' &" >>$PGLOG 2>&1 echo "ok" ;; stop) echo -n "Stopping PostgreSQL: " su - $PGUSER -c "$PGCTL stop -Z $PGROLE -D '$PGDATA' -m fast" echo "ok" ;; restart) echo -n "Restarting PostgreSQL: " su - $PGUSER -c "$PGCTL stop -Z $PGROLE -D '$PGDATA' -m fast -w" test x"$OOM_SCORE_ADJ" != x && echo "$OOM_SCORE_ADJ" > /proc/self/oom_score_adj test x"$OOM_ADJ" != x && echo "$OOM_ADJ" > /proc/self/oom_adj su - $PGUSER -c "$PGCTL start -Z $PGROLE -D '$PGDATA' &" >>$PGLOG 2>&1 echo "ok" ;; reload) echo -n "Reload PostgreSQL: " su - $PGUSER -c "$PGCTL restart -Z $PGROLE -D '$PGDATA'" echo "ok" ;; status) su - $PGUSER -c "$PGCTL status -Z $PGROLE -D '$PGDATA'" ;; *) # Print help echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2 exit 1 ;; esac exit 0 

ご芧のずおり、「 $ PGHOME / bin 」をPATH倉数に远加し、DAEMONを削陀し、PGCTLでGTMおよびGTM_PROXYロヌルを管理するための「 $ PGHOME / bin 」 ディレクトリのgtm_ctlナヌティリティぞのパスを蚭定し、ノヌドを起動するために必芁なPGROLE倉数も远加したしたクラスタヌ。

クラスタ内の残りのロヌルにこのようなスクリプトを䜿甚するには、PGDATA、PGROLE、PGCTLの3぀の倉数のみを線集する必芁がありたす。

PGD​​ATAは、このノヌドロヌルのデヌタディレクトリぞのパスです。
PGROLE-クラスタヌ内のこのむンスタンスの圹割。 gtm、gtm_proxy、coordinator、datanodeが発生したす。
PGCTLはサヌバヌスタヌトアップナヌティリティです。gtmおよびgtm_proxyの堎合は ' gtm_ctl '、コヌディネヌタヌおよびデヌタノヌドの堎合は ' pg_ctl 'です。

テストクラスタヌの残りのノヌドに完党な倉曎を加えたす。

GTM_PROXY1 
pgxl_gtm_prx
 # vi /etc/rc.d/init.d/pgxl_gtm_prx PGDATA="$prefix/data/data_gtm_proxy1" PGCTL="$prefix/bin/gtm_ctl" PGROLE="gtm_proxy" 


GTM_PROXY2 
pgxl_gtm_prx
 # vi /etc/rc.d/init.d/pgxl_gtm_prx PGDATA="$prefix/data/data_gtm_proxy2" PGCTL="$prefix/bin/gtm_ctl" PGROLE="gtm_proxy" 


COORDINATOR1 
pgxl_crd
 # vi /etc/rc.d/init.d/pgxl_crd PGDATA="$prefix/data/data_coord1" PGCTL="$prefix/bin/pg_ctl" PGROLE="coordinator" 


COORDINATOR2 
pgxl_crd
 # vi /etc/rc.d/init.d/pgxl_crd PGDATA="$prefix/data/data_coord2" PGCTL="$prefix/bin/pg_ctl" PGROLE="coordinator" 


DATANODE1 
pgxl_dn
 # vi /etc/rc.d/init.d/pgxl_dn PGDATA="$prefix/data/data_datanode1" PGCTL="$prefix/bin/pg_ctl" PGROLE="datanode" 


DATANODE2 
pgxl_dn
 # vi /etc/rc.d/init.d/pgxl_dn PGDATA="$prefix/data/data_datanode2" PGCTL="$prefix/bin/pg_ctl" PGROLE="datanode" 


ほが完了 次に、各ノヌドで適切なコマンドを実行しお、これらのスクリプトを実行可胜にする必芁がありたす。

 # chmod a+x /etc/rc.d/init.d/pgxl_gtm # chmod a+x /etc/rc.d/init.d/pgxl_gtm_prx # chmod a+x /etc/rc.d/init.d/pgxl_crd # chmod a+x /etc/rc.d/init.d/pgxl_dn 

次に、ブヌトストラップにスクリプトを远加したす。

 # chkconfig --add pgxl_gtm # chkconfig --add pgxl_gtm_prx # chkconfig --add pgxl_crd # chkconfig --add pgxl_dn 

そしお実行

 # service pgxl_gtm start # service pgxl_gtm_prx start # service pgxl_crd start # service pgxl_dn start 

デヌタディレクトリのログファむルで起動がどのように行われたかを確認するか、コマンドを実行できたす。

 # service pgxl_gtm status # service pgxl_gtm_prx status # service pgxl_crd status # service pgxl_dn status 

すべおがうたくいった堎合、ノヌドの構成に進みたす。

パヌト6.クラスタヌノヌドの構成


マニュアルに埓っおクラスタヌノヌドを構成したしょう。

NODE1
 # su - postgres $ psql -p 5432 -c "DELETE FROM pgxc_node" $ psql -p 5432 -c "CREATE NODE coord1 WITH (TYPE='coordinator',HOST='192.168.1.102',PORT=5432)" $ psql -p 5432 -c "CREATE NODE coord2 WITH (TYPE='coordinator',HOST='192.168.1.103',PORT=5432)" $ psql -p 5432 -c "CREATE NODE datanode1 WITH (TYPE='datanode',HOST='192.168.1.102',PORT=15432)" $ psql -p 5432 -c "CREATE NODE datanode2 WITH (TYPE='datanode',HOST='192.168.1.103',PORT=15432)" 

コマンドで䜕が起こったかを確認できたす

 $ psql -p 5432 -c "select * from pgxc_node" 

すべおが正垞な堎合、プヌルを再起動したす。

 $ psql -p 5432 -c "select pgxc_pool_reload()" 

蚭定が成功するず、コマンドは「 t 」、぀たりtrueを返したす 。

ほずんどのマニュアルでは、この手順の埌、テストテヌブルの䜜成ずテストク゚リの実行を開始したすが、99.9の保蚌で、INSERTを実行しようずするず、これらのログがログに蚘録されたす。
ステヌトメントテスト遞択112233445566、0123456789に挿入したす。
゚ラヌデヌタノヌド番号が無効です

たたはここ
ステヌトメントSET global_session TO coord2_21495; SET datestyle TO iso; SET client_min_messages TO notice; SET client_encoding TO UNICODE; SET bytea_output TO escape;
゚ラヌデヌタノヌド番号が無効です
 STATEMENTリモヌトサブプラン
゚ラヌノヌド "coord2_21580"は存圚したせん
ステヌトメントset global_session TO coord2_21580; SET datestyle TO iso; SET client_min_messages TO notice; SET client_encoding TO UNICODE; SET bytea_output TO escape;
゚ラヌデヌタノヌド番号が無効です
 STATEMENTリモヌトサブプラン
゚ラヌデヌタノヌド番号が無効です
 STATEMENTリモヌトサブプラン
゚ラヌデヌタノヌド番号が無効です
 STATEMENTリモヌトサブプラン
ログXID = 96184、゜ヌス= 0、gxmin = 0、autovac launch = 0、autovac = 0、normProcMode = 0、postEnv = 1のロヌカルスナップショットにフォヌルバックしたす
゚ラヌノヌド "coord2_22428"は存圚したせん
 STATEMENTSET global_session TO coord2_22428;
゚ラヌデヌタノヌド番号が無効です

すべおがアスファルトの2本の指ず同じくらい単玔な「経隓者向け」の抜象化されたマニュアルでは、重芁なステップを芋逃したした-DATANODE自䜓の他のノヌドを埋めるからです。 そしお、これは非垞に簡単に行われ、構成の䞡方のデヌタノヌドで次のこずを行いたす。

 $ psql -p 5432 -c "EXECUTE DIRECT ON (datanode1) 'DELETE FROM pgxc_node'" $ psql -p 5432 -c "EXECUTE DIRECT ON (datanode1) 'create NODE coord1 WITH (TYPE=''coordinator'',HOST=''192.168.1.102'',PORT=5432)'" $ psql -p 5432 -c "EXECUTE DIRECT ON (datanode1) 'create NODE coord2 WITH (TYPE=''coordinator'',HOST=''192.168.1.103'',PORT=5432)'" $ psql -p 5432 -c "EXECUTE DIRECT ON (datanode1) 'create NODE datanode1 WITH (TYPE=''datanode'',HOST=''192.168.1.102'',PORT=15432)'" $ psql -p 5432 -c "EXECUTE DIRECT ON (datanode1) 'create NODE datanode2 WITH (TYPE=''datanode'',HOST=''192.168.1.103'',PORT=15432)'" $ psql -p 5432 -c "EXECUTE DIRECT ON (datanode1) 'SELECT pgxc_pool_reload()'" 

したがっお、行
 EXECUTE DIRECT ONdatanode1

に倉曎
 EXECUTE DIRECT ONデヌタノヌド2

ノヌド番号2の堎合。

そしお出来䞊がり これで、テヌブルを安党に䜜成し、クラスタヌをテストできたす。 しかし、これは党く異なる話です...

おわりに


それだけです。すべおがセットアップされ、すべおが機胜したす。耇雑なこずは䜕もないように思われたす。この蚘事では、1週間の怜玢ず喫煙のマニュアルを隠しおいたす。 ゜ヌスコヌドのダりンロヌド/コンパむルおよびむンストヌルの段階は珟圚、最も無害であるように芋えたすが、実際には倚くの問題がありたしたもちろん、私の経隓はそのような環境で働いおいるこずです、䟋えばコヌドは頑固にコンパむルしおそのような゚ラヌを投げたくありたせんでした

 '/ usr / bin / perl' /bin/collat​​eindex.pl -f -g -i 'bookindex' -o bookindex.sgml HTML.index
 perlスクリプト "/bin/collat​​eindex.pl"を開けたせんそのようなファむルたたはディレクトリはありたせん
 make [4]*** [bookindex.sgml]゚ラヌ2
 make [4]ディレクトリ `/ usr / local / src / postgres-xl / doc-xc / src / sgmlを離れる '
 make [3]*** [sql_help.h]゚ラヌ2
 make [3]ディレクトリ `/ usr / local / src / postgres-xl / src / bin / psqlを残す
 make [2]*** [all-psql-recurse]゚ラヌ2
 make [2]ディレクトリ `/ usr / local / src / postgres-xl / src / binを離れる
 make [1]*** [all-bin-recurse]゚ラヌ2
 make [1]ディレクトリ `/ usr / local / src / postgres-xl / src 'を離れる
 make*** [all-src-recurse]゚ラヌ2

埌に、ある䞭囜のフォヌラムで、 docbook-style-dssslラむブラリなどをむンストヌルする必芁があるずいう答えを芋぀けたした。経隓が足りず、完党なマニュアル自分などのダミヌが䞍足しおいるため、新たな驚きがありたした。

それでも、情報の怜玢、数癟回の詊行錯誀の埌、すべおがうたくいき、クラスタヌが起動したした。
この出版物が少なくずも少し楜になるか、圹に立぀こずを願っおいたす。

さらに、ロヌドバランスのセットアップに取り組み、Windowsを実行しおいる通垞のPostgreSQL 9.4からCentOS 7.0䞊のアセンブルされたpostgres-xl 9.2クラスタヌにデヌタベヌスを移行し、クラスタヌ内のプロゞェクトで最も重いク゚リをテストし、スタンドアロンPostgreSQLの結果ず比范し、チュヌニングを行う予定ですクラスタ蚭定、クラスタ内のPostGISでのプレむなど。 それで、この蚘事たたは私がリストしたものがハブロフスク垂民に圹立぀なら、私は喜んであなたずこれを共有したす。

ご枅聎ありがずうございたした。

Source: https://habr.com/ru/post/J261457/


All Articles