You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
191 lines
5.3 KiB
191 lines
5.3 KiB
# Postgres-XL
|
|
|
|
Best view this file raw for now:
|
|
https://code.forksand.com/forksand/forksand-it-manual/raw/branch/master/source/resources/apps/postgres-xl/README.md
|
|
|
|
https://www.postgres-xl.org
|
|
|
|
https://www.postgres-xl.org/documentation/install-short.html
|
|
https://www.postgres-xl.org/documentation/install-procedure.html
|
|
|
|
# Set up 9 servers
|
|
|
|
Data nodes:
|
|
pgxl1
|
|
pgxl2
|
|
pgxl3
|
|
pgxl4
|
|
pgxl5
|
|
|
|
GTM:
|
|
pgxl-gtm-1
|
|
pgxl-gtm-2
|
|
|
|
Coordinators:
|
|
pgxl-coord-1
|
|
pgxl-coord-2
|
|
pgxl-coord-3
|
|
|
|
# Open Up firewall.
|
|
Open up firewall ports for postgres and others. All TCP (?).
|
|
Postgres: 5432
|
|
GTM: 20001-20003
|
|
Coordinator: 30001-30003, 31001-31003
|
|
Data Node: 40001-40003, 41001-41003
|
|
|
|
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 5432 -j ACCEPT
|
|
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 20001 -j ACCEPT
|
|
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 20002 -j ACCEPT
|
|
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 20003 -j ACCEPT
|
|
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 30001 -j ACCEPT
|
|
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 30002 -j ACCEPT
|
|
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 30003 -j ACCEPT
|
|
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 31001 -j ACCEPT
|
|
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 31002 -j ACCEPT
|
|
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 31003 -j ACCEPT
|
|
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 40001 -j ACCEPT
|
|
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 40002 -j ACCEPT
|
|
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 40003 -j ACCEPT
|
|
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 41001 -j ACCEPT
|
|
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 41002 -j ACCEPT
|
|
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 41003 -j ACCEPT
|
|
|
|
|
|
# Set up SSH between hosts
|
|
|
|
ssh-keygen -t ed25519
|
|
set up root ssh between all nodes
|
|
|
|
# /etc/hosts
|
|
set up /etc/hosts with all cluster name/IPs.
|
|
|
|
Set up /etc/hosts with all cluster name/IPs for Postgres interface, with pg- prefix
|
|
|
|
|
|
# Get source
|
|
Binary:
|
|
wget https://www.postgres-xl.org/downloads/postgres-xl-10r1.tar.gz
|
|
|
|
Git (better):
|
|
git clone https://git.postgresql.org/git/postgres-xl.git
|
|
|
|
# Install Dependencies
|
|
apt install build-essential bison flex libreadline-dev zlib1g-dev
|
|
|
|
# Build
|
|
git checkout remotes/origin/XL_10_STABLE
|
|
|
|
mkdir build_dir
|
|
cd build_dir
|
|
../configure --bindir=/usr/local/bin
|
|
make -j8
|
|
sudo make install
|
|
|
|
# System Startup
|
|
vim /etc/systemd/system/postgresql.service
|
|
[Unit]
|
|
Description=PostgreSQL database server
|
|
Documentation=man:postgres(1)
|
|
|
|
[Service]
|
|
Type=notify
|
|
User=postgres
|
|
ExecStart=/usr/local/bin/postgres -D /usr/local/pgsql/data
|
|
ExecReload=/bin/kill -HUP $MAINPID
|
|
KillMode=mixed
|
|
KillSignal=SIGINT
|
|
TimeoutSec=0
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
|
|
|
|
|
|
# Configure
|
|
adduser postgres
|
|
|
|
Run this as root:
|
|
/sbin/ldconfig /usr/local/pgsql/lib
|
|
|
|
|
|
|
|
XXX no?
|
|
Add this to ~/.bashrc
|
|
LD_LIBRARY_PATH=/usr/local/pgsql/lib
|
|
export LD_LIBRARY_PATH
|
|
|
|
Set up user postgres to ssh to all nodes on database ethernet interface.
|
|
|
|
chown postgres:postgres /usr/local/pgsql
|
|
|
|
|
|
https://www.postgres-xl.org/documentation/pgxc-ctl.html
|
|
|
|
Log into pgxl1, run:
|
|
sudo su - postgres
|
|
pgxc_ctl
|
|
At PGXC promt run:
|
|
prepare config empty
|
|
|
|
|
|
|
|
GTM master, GTM slave, GTM proxy, Coordinator master/slave and Datanode master/slave need its own port to listen to. Coordinators and Datanodes also need a pooler port to pool connections to Datanodes.
|
|
|
|
While adding a Coordinator master and a Datanode master, extra server configuration and extra pg_hba configuration parameters can be specified in a file.
|
|
|
|
|
|
add gtm master name host port dir
|
|
add gtm slave name host port dir
|
|
add gtm_proxy name host port dir
|
|
add coordinator master name host port pooler dir extraServerConf extraPgHbaConf
|
|
add coordinator slave name host port pooler dir archDir
|
|
add datanode master name host port pooler dir waldir extraServerConf extraPgHbaConf
|
|
add datanode slave name host port pooler dir waldir archDir
|
|
|
|
|
|
XLDIR=/usr/local/pgsql
|
|
export XLDIR
|
|
pgxc_ctl prepare config empty
|
|
|
|
===============================
|
|
vim pgxc_ctl/pgxc_ctl.conf
|
|
Comment out:
|
|
coordPgHbaEntries=(::1/128)
|
|
datanodePgHbaEntries=(::1/128)
|
|
|
|
Enable/extend:
|
|
coordPgHbaEntries=(127.0.0.1/32 10.53.1.0/24)
|
|
datanodePgHbaEntries=(127.0.0.1/32 10.53.1.0/24)
|
|
===============================
|
|
|
|
XXX Set up slaves/proxies
|
|
|
|
pgxc_ctl add gtm master gtm_1 pg-pgxl-gtm-1 20001 "$XLDIR/gtm-1"
|
|
XXX pgxc_ctl add gtm slave gtm_2 pg-pgxl-gtm-2 20002 "$XLDIR/gtm-2"
|
|
XXX pgxc_ctl add gtm_proxy gtm_2 pg-pgxl-gtm-2 20003 "$XLDIR/gtm-3"
|
|
|
|
pgxc_ctl add coordinator master coord_1 pg-pgxl-coord-1 30001 31001 "$XLDIR/coord-1" none none
|
|
pgxc_ctl add coordinator master coord_2 pg-pgxl-coord-2 30001 31001 "$XLDIR/coord-2" none none
|
|
pgxc_ctl add coordinator master coord_3 pg-pgxl-coord-3 30001 31001 "$XLDIR/coord-3" none none
|
|
|
|
pgxc_ctl add datanode master datanode_1 pg-pgxl1 40001 41001 "$XLDIR/data-1" none none none
|
|
pgxc_ctl add datanode master datanode_2 pg-pgxl2 40001 41001 "$XLDIR/data-2" none none none
|
|
pgxc_ctl add datanode master datanode_3 pg-pgxl3 40001 41001 "$XLDIR/data-3" none none none
|
|
pgxc_ctl add datanode master datanode_4 pg-pgxl4 40001 41001 "$XLDIR/data-4" none none none
|
|
pgxc_ctl add datanode master datanode_5 pg-pgxl5 40001 41001 "$XLDIR/data-5" none none none
|
|
pgxc_ctl monitor all createdb -p 30001 test
|
|
|
|
|
|
# Create database
|
|
ssh pgxl-coord-1
|
|
sudo su - postgres
|
|
psql -p 30001
|
|
create database foo;
|
|
|
|
# Check it replicated:
|
|
ssh pgxl1
|
|
sudo su - postgres
|
|
psql -p 40001
|
|
\l
|
|
|