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.

184 lines
4.9 KiB

# Postgres-XL
6 years ago
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
# 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
pgxc_ctl add gtm master gtm_1 pg-pgxl-gtm-1 20001 "$XLDIR/gtm"
XXX slave or proxy?
XXX pgxc_ctl add gtm slave gtm_2 pg-pgxl-gtm-2 20001 "$XLDIR/gtm"
XXX pgxc_ctl add gtm_proxy gtm_2 pg-pgxl-gtm-2 20001 "$XLDIR/gtm"
pgxc_ctl add coordinator master coord_1 pg-pgxl-coord-1 30001 31001 "$XLDIR/coord-1" none none
XXX master or slaves?
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
XXX master or slaves?
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
# Open Up firewall.
Open up firewall ports for postgres and others. All TCP (?).
Postgres: 5432
GTM: 20001
Coordinator: 30001
Data Node: 40001
-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 30001 -j ACCEPT
-A INPUT -p tcp --dest 10.53.1.0/24 --dport 40001 -j ACCEPT
# OmniDB
wget https://omnidb.org/dist/2.12.0/omnidb-server_2.12.0-debian-amd64.deb
dpkg -i omnidb-server_2.12.0-debian-amd64.deb
Open firewall port 8000 and 25482
This file isn't used: /opt/omnidb-server/omnidb.conf
In the pre-packaged .deb, it runs as root... Config is here:
/root/.omnidb/omnidb-server/omnidb.conf
listening_address = 0.0.0.0
Add Postgres-XL plugin:
wget https://omnidb.org/dist/plugins/omnidb-xl_1.0.0.zip
unzip omnidb-xl_1.0.0.zip
sudo cp -r plugins/ static/ /opt/omnidb-server/OmniDB_app/
sudo systemctl restart omnidb
Log in with admin/admin and set up users/pass.
# Notes
Maybe add build dependency python3-dev (?) for PL/Python shared library.
Maybe gettext.
Maybe OpenSSL.
XXX change prefix ?