summaryrefslogtreecommitdiffstats
path: root/mysql/root-galera/usr/bin/run-mysqld-galera
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