Commit bbe09ce2 authored by Ignacio's avatar Ignacio
Browse files

Merge branch 'dev' into 'master'

Separa var. de cron en varias variables

See merge request redmic-project/server/vessel/postgresql!18
parents 67a93af1 8c592229
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -25,6 +25,9 @@ variables:
    - >
      deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE}
      POSTGRES_USER=${POSTGRES_USER} POSTGRES_PASSWORD=${POSTGRES_PASSWORD} INTERVAL=${INTERVAL}
      MAINTENANCE_INTERVAL_MINUTE="${MAINTENANCE_INTERVAL_MINUTE}" MAINTENANCE_INTERVAL_HOUR="${MAINTENANCE_INTERVAL_HOUR}"
      MAINTENANCE_INTERVAL_DAY_OF_MONTH="${MAINTENANCE_INTERVAL_DAY_OF_MONTH}" MAINTENANCE_INTERVAL_MONTH="${MAINTENANCE_INTERVAL_MONTH}"
      MAINTENANCE_INTERVAL_DAY_OF_WEEK="${MAINTENANCE_INTERVAL_DAY_OF_WEEK}" RETENTION_TIME="${RETENTION_TIME}"
  environment:
    name: dev/${CI_PROJECT_NAME}

@@ -35,6 +38,9 @@ variables:
    - >
      deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE}
      POSTGRES_USER=${POSTGRES_USER} POSTGRES_PASSWORD=${POSTGRES_PASSWORD} INTERVAL=${INTERVAL}
      MAINTENANCE_INTERVAL_MINUTE="${MAINTENANCE_INTERVAL_MINUTE}" MAINTENANCE_INTERVAL_HOUR="${MAINTENANCE_INTERVAL_HOUR}"
      MAINTENANCE_INTERVAL_DAY_OF_MONTH="${MAINTENANCE_INTERVAL_DAY_OF_MONTH}" MAINTENANCE_INTERVAL_MONTH="${MAINTENANCE_INTERVAL_MONTH}"
      MAINTENANCE_INTERVAL_DAY_OF_WEEK="${MAINTENANCE_INTERVAL_DAY_OF_WEEK}" RETENTION_TIME="${RETENTION_TIME}"
      AWS_REGION=${AWS_REGION}
  environment:
    name: pro/${CI_PROJECT_NAME}
+2 −2
Original line number Diff line number Diff line
@@ -24,10 +24,10 @@ RUN apk add --no-cache --virtual \
	tar xvzf /pg_partman.tgz && \
	cd pg_partman-${PG_PARTMAN_VERSION} && \
	make && \
	make install && \
	make NO_BGW=1 install && \
	cd .. && \
	rm -rf pg_partman.tgz pg_partman-* && \
	echo "shared_preload_libraries='pg_partman_bgw,pg_cron'" >> /usr/local/share/postgresql/postgresql.conf.sample && \
	echo "shared_preload_libraries='pg_cron'" >> /usr/local/share/postgresql/postgresql.conf.sample && \
	echo "checkpoint_timeout = 30min" >> /usr/local/share/postgresql/postgresql.conf.sample && \
	echo "max_wal_size = 2GB" >> /usr/local/share/postgresql/postgresql.conf.sample && \
	mv /usr/local/bin/docker-entrypoint.sh /usr/local/bin/docker-entrypoint-origin.sh
+3 −1
Original line number Diff line number Diff line
PGDATA=/var/lib/postgresql/data/db-files/
INTERVAL=half-hour
INTERVAL=hourly
MAINTENANCE_INTERVAL=30 * * * *
RETENTION_TIME=7 days
POSTGRES_DB=ais
+7 −1
Original line number Diff line number Diff line
@@ -9,10 +9,16 @@ services:
      - POSTGRES_USER
      - PGDATA
      - INTERVAL
      - MAINTENANCE_INTERVAL_MINUTE
      - MAINTENANCE_INTERVAL_HOUR
      - MAINTENANCE_INTERVAL_DAY_OF_MONTH
      - MAINTENANCE_INTERVAL_MONTH
      - MAINTENANCE_INTERVAL_DAY_OF_WEEK
      - RETENTION_TIME
    networks:
      postgres-vessel-net:
        aliases:
          - vessel-db
          - ais-db
    volumes:
      - vessel-postgres-vol:/var/lib/postgresql/data

+26 −9
Original line number Diff line number Diff line
@@ -2,6 +2,16 @@

set -e

INTERVAL=${INTERVAL:-hourly}
MAINTENANCE_INTERVAL_MINUTE=${MAINTENANCE_INTERVAL_MINUTE:-30}
MAINTENANCE_INTERVAL_HOUR=${MAINTENANCE_INTERVAL_HOUR:-*}
MAINTENANCE_INTERVAL_DAY_OF_MONTH=${MAINTENANCE_INTERVAL_DAY_OF_MONTH:-*}
MAINTENANCE_INTERVAL_MONTH=${MAINTENANCE_INTERVAL_MONTH:-*}
MAINTENANCE_INTERVAL_DAY_OF_WEEK=${MAINTENANCE_INTERVAL_DAY_OF_WEEK:-*}
RETENTION_TIME=${RETENTION_TIME:-7 days}

maintenanceInterval="$MAINTENANCE_INTERVAL_MINUTE $MAINTENANCE_INTERVAL_HOUR $MAINTENANCE_INTERVAL_DAY_OF_MONTH $MAINTENANCE_INTERVAL_MONTH $MAINTENANCE_INTERVAL_DAY_OF_WEEK"

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
	CREATE SCHEMA IF NOT EXISTS ais;

@@ -54,8 +64,14 @@ psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-E
	  ON ais.location
	  USING gist (shape);

	CREATE INDEX IF NOT EXISTS sidx_location_tstamp
	  ON ais.location (tstamp);
	CREATE INDEX IF NOT EXISTS sidx_location_tstamp_desc
	  ON ais.location (tstamp DESC);

	CREATE INDEX IF NOT EXISTS sidx_location_mmsi
	  ON ais.location (mmsi);

	CREATE INDEX IF NOT EXISTS sidx_location_tstamp_mmsi
	  ON ais.location (tstamp, mmsi);

	CREATE OR REPLACE FUNCTION ais.initialize_geom_and_dates()
	RETURNS TRIGGER
@@ -116,12 +132,13 @@ psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-E
	WHEN TAG IN ('CREATE TABLE')
	EXECUTE PROCEDURE on_create_table_create_trigger();

	SELECT partman.create_parent('ais.location', 'tstamp', 'native', '${INTERVAL}', p_premake := 8);
	UPDATE partman.part_config SET infinite_time_partitions = true;
	SELECT cron.schedule('@${INTERVAL}', \$\$CALL partman.run_maintenance_proc(p_analyze := false)\$\$);
	SELECT partman.create_parent('ais.location', 'tstamp', 'native', '${INTERVAL}',
		p_premake := 3, p_automatic_maintenance := 'off');

	UPDATE partman.part_config
	SET infinite_time_partitions = true,
	 retention = '${RETENTION_TIME}',
	 retention_keep_table = false;

	CREATE VIEW ais.last_20m AS SELECT DISTINCT ON (mmsi) *
	FROM ais.location
	WHERE tstamp > current_timestamp - interval '20 minutes'
	ORDER BY mmsi, tstamp DESC;
	SELECT cron.schedule('${maintenanceInterval}', \$\$CALL partman.run_maintenance_proc(p_analyze := false)\$\$);
EOSQL
 No newline at end of file