Multi-node setup to run the migrations
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] || [ -z "$5" ]
|
||||
then
|
||||
echo "Env variables not provided"
|
||||
echo "Usage: ./ipfs_postgres.sh <MIGRATION_FILE_PATH:string> <NODE_NAME:string> <NODE_HOST:string> <NODE_PORT:numeric/string> <NODE_DATABASE:string> <EXECUTE_SQ:bool>"
|
||||
echo "Usage: ./add_nodes.sh <MIGRATION_FILE_PATH:string> <NODE_NAME:string> <NODE_HOST:string> <NODE_PORT:numeric/string> <NODE_DATABASE:string> <EXECUTE_SQL:bool>"
|
||||
echo "Only <EXECUTE_SQL> is optional"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# https://docs.timescale.com/timescaledb/latest/how-to-guides/multinode-timescaledb/multinode-config/
|
||||
|
||||
# To achieve good query performance you need to enable partition-wise aggregation on the access node. This pushes down aggregation queries to the data nodes.
|
||||
# https://www.postgresql.org/docs/12/runtime-config-query.html#enable_partitionwise_aggregate
|
||||
sed -ri "s!^#?(enable_partitionwise_aggregate)\s*=.*!\1 = on!" /var/lib/postgresql/data/postgresql.conf
|
||||
grep "enable_partitionwise_aggregate" /var/lib/postgresql/data/postgresql.conf
|
||||
|
||||
# JIT should be set to off on the access node as JIT currently doesn't work well with distributed queries.
|
||||
# https://www.postgresql.org/docs/12/runtime-config-query.html#jit
|
||||
sed -ri "s!^#?(jit)\s*=.*!\1 = off!" /var/lib/postgresql/data/postgresql.conf
|
||||
grep "jit" /var/lib/postgresql/data/postgresql.conf
|
||||
|
||||
# https://docs.timescale.com/timescaledb/latest/how-to-guides/multinode-timescaledb/multinode-auth/
|
||||
# https://docs.timescale.com/timescaledb/latest/how-to-guides/multinode-timescaledb/multinode-auth/#password-authentication
|
||||
|
||||
# Set password_encryption = 'scram-sha-256' in postgresql.conf on the access node.
|
||||
sed -ri "s!^#?(password_encryption)\s*=.*!\1 = 'scram-sha-256'!" /var/lib/postgresql/data/postgresql.conf
|
||||
grep "password_encryption" /var/lib/postgresql/data/postgresql.conf
|
||||
|
||||
# Append to data/passfile *:*:*:ROLE:ROLE_PASSWORD
|
||||
# This file stores the passwords for each role that the access node connects to on the data nodes.
|
||||
echo "*:*:*:postgres:password">>/var/lib/postgresql/data/passfile
|
||||
chmod 0600 /var/lib/postgresql/data/passfile
|
||||
|
||||
# Add "host all all ACCESS_NODE_IP scram-sha-256" pg_hba.conf on the data nodes.
|
||||
# Skipped. Using default "host all all all scram-sha-256" for now.
|
||||
Executable
+22
@@ -0,0 +1,22 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# https://docs.timescale.com/timescaledb/latest/how-to-guides/configuration/timescaledb-config/#timescaledb-last-tuned-string
|
||||
# https://docs.timescale.com/timescaledb/latest/how-to-guides/multi-node-setup/required-configuration/
|
||||
|
||||
# It is necessary to change the parameter max_prepared_transactions to a non-zero value ('150' is recommended).
|
||||
# https://www.postgresql.org/docs/12/runtime-config-resource.html#max_prepared_transactions
|
||||
sed -ri "s!^#?(max_prepared_transactions)\s*=.*!\1 = 150!" /var/lib/postgresql/data/postgresql.conf
|
||||
grep "max_prepared_transactions" /var/lib/postgresql/data/postgresql.conf
|
||||
|
||||
# Statement timeout should be disabled on the data nodes and managed through the access node configuration if desired.
|
||||
# https://www.postgresql.org/docs/12/runtime-config-client.html#statement_timeout
|
||||
sed -ri "s!^#?(statement_timeout)\s*=.*!\1 = 0!" /var/lib/postgresql/data/postgresql.conf
|
||||
grep "statement_timeout" /var/lib/postgresql/data/postgresql.conf
|
||||
|
||||
# https://docs.timescale.com/timescaledb/latest/how-to-guides/multinode-timescaledb/multinode-auth/
|
||||
# https://docs.timescale.com/timescaledb/latest/how-to-guides/multinode-timescaledb/multinode-auth/#password-authentication
|
||||
|
||||
# Set password_encryption = 'scram-sha-256' in postgresql.conf on the data node.
|
||||
sed -ri "s!^#?(password_encryption)\s*=.*!\1 = 'scram-sha-256'!" /var/lib/postgresql/data/postgresql.conf
|
||||
grep "password_encryption" /var/lib/postgresql/data/postgresql.conf
|
||||
@@ -8,7 +8,7 @@ VDB_PG_CONNECT=postgresql://$DATABASE_USER:$DATABASE_PASSWORD@$DATABASE_HOSTNAME
|
||||
# Run the DB migrations
|
||||
echo "Connecting with: $VDB_PG_CONNECT"
|
||||
echo "Running database migrations"
|
||||
./goose -dir migrations/vulcanizedb postgres "$VDB_PG_CONNECT" up
|
||||
./goose -dir migrations/vulcanizedb postgres "$VDB_PG_CONNECT" up-to 21
|
||||
|
||||
# If the db migrations ran without err
|
||||
if [[ $? -eq 0 ]]; then
|
||||
|
||||
Reference in New Issue
Block a user