blob: 91f3c9c74ae61978ab6ae38e68b5ec3dd0b7c248 (
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
#!/bin/bash
export TERM=xterm
function display_container_header {
echo "+====================================================="
echo "| Container : $HOSTNAME"
echo "| OS : $(</etc/redhat-release)"
echo "| kubernetes : $KUBERNETES_SERVICE_HOST"
echo "| user : $(whoami)"
echo "| home : $HOME"
echo "+====================================================="
}
function start_service {
echo "+====================================================="
echo "| Container $HOSTNAME is now RUNNING"
echo "+====================================================="
while true
do
echo /usr/bin/peer-finder -on-start="${CONTAINER_SCRIPTS_PATH}/galera/configure-galera.sh" -service=${K8S_SVC_NAME}
echo ${MYSQL_PREFIX}/libexec/mysqld --defaults-file=$MYSQL_DEFAULTS_FILE $mysql_extra_opts "$@"
echo "live... (next try in 1 hour)" & sleep 3600
done
}
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: Skip finding peers to prevent failures due to failed cluster"
[ -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}"
echo /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://$" | cat)
if [ -n "$no_cluster" ]; then
echo "No cluster configured, recovering from failure..."
sed -i'' -e 's/safe_to_bootstrap:.*/safe_to_bootstrap: 1/' $MYSQL_DATADIR/grastate.dat
mysql_extra_opts="--wsrep-new-cluster"
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 -- Only MySQL server logs after this point'
echo ${MYSQL_PREFIX}/libexec/mysqld --defaults-file=$MYSQL_DEFAULTS_FILE $mysql_extra_opts "$@"
display_container_header
start_service
|