All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 5m52s
42 lines
1.5 KiB
Bash
42 lines
1.5 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
|
|
: "${MYSQL_ROOT_PASSWORD:?MYSQL_ROOT_PASSWORD is required}"
|
|
: "${MASTER_MYSQL_HOST:?MASTER_MYSQL_HOST is required}"
|
|
: "${MYSQL_REPLICATION_USER:?MYSQL_REPLICATION_USER is required}"
|
|
: "${MYSQL_REPLICATION_PASSWORD:?MYSQL_REPLICATION_PASSWORD is required}"
|
|
|
|
MASTER_MYSQL_PORT="${MASTER_MYSQL_PORT:-3306}"
|
|
REPLICA_MYSQL_HOST="${REPLICA_MYSQL_HOST:-mysql-replica}"
|
|
REPLICA_MYSQL_PORT="${REPLICA_MYSQL_PORT:-3306}"
|
|
|
|
echo "Waiting for MySQL source ${MASTER_MYSQL_HOST}:${MASTER_MYSQL_PORT}..."
|
|
until mysqladmin ping -h"${MASTER_MYSQL_HOST}" -P"${MASTER_MYSQL_PORT}" -u"${MYSQL_REPLICATION_USER}" -p"${MYSQL_REPLICATION_PASSWORD}" --silent; do
|
|
sleep 2
|
|
done
|
|
|
|
echo "Waiting for local replica ${REPLICA_MYSQL_HOST}:${REPLICA_MYSQL_PORT}..."
|
|
until mysqladmin ping -h"${REPLICA_MYSQL_HOST}" -P"${REPLICA_MYSQL_PORT}" -uroot -p"${MYSQL_ROOT_PASSWORD}" --silent; do
|
|
sleep 2
|
|
done
|
|
|
|
echo "Configuring GTID replication..."
|
|
mysql -h"${REPLICA_MYSQL_HOST}" -P"${REPLICA_MYSQL_PORT}" -uroot -p"${MYSQL_ROOT_PASSWORD}" <<SQL
|
|
STOP REPLICA;
|
|
RESET REPLICA ALL;
|
|
SET GLOBAL super_read_only = OFF;
|
|
SET GLOBAL read_only = OFF;
|
|
CHANGE REPLICATION SOURCE TO
|
|
SOURCE_HOST='${MASTER_MYSQL_HOST}',
|
|
SOURCE_PORT=${MASTER_MYSQL_PORT},
|
|
SOURCE_USER='${MYSQL_REPLICATION_USER}',
|
|
SOURCE_PASSWORD='${MYSQL_REPLICATION_PASSWORD}',
|
|
SOURCE_AUTO_POSITION=1,
|
|
GET_SOURCE_PUBLIC_KEY=1;
|
|
START REPLICA;
|
|
SET GLOBAL read_only = ON;
|
|
SET GLOBAL super_read_only = ON;
|
|
SQL
|
|
|
|
mysql -h"${REPLICA_MYSQL_HOST}" -P"${REPLICA_MYSQL_PORT}" -uroot -p"${MYSQL_ROOT_PASSWORD}" -e "SHOW REPLICA STATUS\\G"
|