blob: 18902090d650a8aa352f703e43d18250677f863e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
#!/bin/bash
if [ -v POD_NAMESPACE ]; then
cp "${CONTAINER_SCRIPTS_PATH}/galera/cluster.cnf" /etc/my.cnf.d/
# Is running in Kubernetes/OpenShift, so find all other pods
# belonging to the namespace
echo "Galera: Finding peers"
[ -v MYSQL_GALERA_CLUSTER ] || MYSQL_GALERA_CLUSTER="$(hostname -f | cut -d'.' -f2)"
K8S_SVC_NAME=${MYSQL_GALERA_CLUSTER}
echo "Using service name: ${K8S_SVC_NAME}"
/usr/bin/peer-finder -on-start="${CONTAINER_SCRIPTS_PATH}/galera/configure-galera.sh" -service=${K8S_SVC_NAME}
else
echo "POD_NAMESPACE not set, spin up single node"
fi
export_vars=$(cgroup-limits); export $export_vars
source ${CONTAINER_SCRIPTS_PATH}/galera-common.sh
set -eu
if [[ -v DEBUG_IGNORE_SCRIPT_FAILURES ]]; then
set +e
fi
export_setting_variables
log_volume_info $MYSQL_DATADIR
# pre-init files
process_extending_files ${APP_DATA}/mysql-pre-init/ ${CONTAINER_SCRIPTS_PATH}/pre-init/
mysql_extra_opts=""
if [ ! -d "$MYSQL_DATADIR/mysql" -a ! -d "$MYSQL_DATADIR/.sst" ]; then
initialize_galera_database "$@"
# galera files
process_extending_files ${APP_DATA}/mysql-galera-init/ ${CONTAINER_SCRIPTS_PATH}/galera-init/
# init files
process_extending_files ${APP_DATA}/mysql-init/ ${CONTAINER_SCRIPTS_PATH}/init/
# Restart the MySQL server with public IP bindings
shutdown_local_mysql
else
no_cluster=$(grep -P "gcomm://$" ${MYSQL_DEFAULTS_FILE}.d/cluster.cnf | cat)
if [ -n "$no_cluster" ]; then
log_info "Configuration: $MYSQL_DEFAULTS_FILE"
log_info "No cluster is configured yet, trying to recover from failure..."
log_info "Allowing recovery in $MYSQL_DATADIR/grastate.dat"
# This seems a bad idea. If another pod is marked safe to bootstrap we may end up in conflict, I guess....
# Keep it manual for now
# sed -i'' 's/safe_to_bootstrap:.*/safe_to_bootstrap: 1/' $MYSQL_DATADIR/grastate.dat
# This seems unneeded
# mysql_extra_opts="--wsrep-new-cluster"
else
log_info "Configuration: $MYSQL_DEFAULTS_FILE"
log_info "Cluster is configured. Trying to join..."
fi
# galera files
process_extending_files ${APP_DATA}/mysql-galera-init/ ${CONTAINER_SCRIPTS_PATH}/galera-init/
# I guess we can't do that once cluster is existing...
# start_local_mysql --wsrep-on=OFF --wsrep-provider=none "$@"
fi
unset_env_vars
log_volume_info $MYSQL_DATADIR
log_info "Running final exec - mysqld --defaults-file=$MYSQL_DEFAULTS_FILE $mysql_extra_opts $@"
exec ${MYSQL_PREFIX}/libexec/mysqld --defaults-file=$MYSQL_DEFAULTS_FILE $mysql_extra_opts "$@" 2>&1
|