chore(deploy): add replication deployment assets
Build docker and publish / build (20.15.1) (push) Successful in 5m52s
Build docker and publish / build (20.15.1) (push) Successful in 5m52s
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
[client]
|
||||
host=mysql
|
||||
port=3306
|
||||
user=root
|
||||
password=CHANGE_ME_TO_MYSQL_ROOT_PASSWORD
|
||||
@@ -0,0 +1,41 @@
|
||||
#!/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"
|
||||
@@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
: "${MYSQL_ROOT_PASSWORD:?MYSQL_ROOT_PASSWORD is required}"
|
||||
: "${MYSQL_REPLICATION_USER:?MYSQL_REPLICATION_USER is required}"
|
||||
: "${MYSQL_REPLICATION_PASSWORD:?MYSQL_REPLICATION_PASSWORD is required}"
|
||||
|
||||
mysql_note "Creating MySQL replication user '${MYSQL_REPLICATION_USER}'"
|
||||
|
||||
mysql --protocol=socket -uroot -p"${MYSQL_ROOT_PASSWORD}" <<SQL
|
||||
CREATE USER IF NOT EXISTS '${MYSQL_REPLICATION_USER}'@'%' IDENTIFIED WITH mysql_native_password BY '${MYSQL_REPLICATION_PASSWORD}';
|
||||
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '${MYSQL_REPLICATION_USER}'@'%';
|
||||
FLUSH PRIVILEGES;
|
||||
SQL
|
||||
@@ -0,0 +1,9 @@
|
||||
[mysqld]
|
||||
server-id=1
|
||||
log-bin=mysql-bin
|
||||
binlog-format=ROW
|
||||
gtid-mode=ON
|
||||
enforce-gtid-consistency=ON
|
||||
log-replica-updates=ON
|
||||
binlog-expire-logs-seconds=604800
|
||||
relay-log-recovery=ON
|
||||
@@ -0,0 +1,10 @@
|
||||
[mysqld]
|
||||
server-id=2
|
||||
relay-log=mysql-relay-bin
|
||||
read-only=ON
|
||||
super-read-only=ON
|
||||
gtid-mode=ON
|
||||
enforce-gtid-consistency=ON
|
||||
log-replica-updates=ON
|
||||
relay-log-recovery=ON
|
||||
skip-replica-start=ON
|
||||
Reference in New Issue
Block a user