diff options
Diffstat (limited to 'src/mariadb-persist-server-id')
-rwxr-xr-x | src/mariadb-persist-server-id | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/src/mariadb-persist-server-id b/src/mariadb-persist-server-id deleted file mode 100755 index 33c0245..0000000 --- a/src/mariadb-persist-server-id +++ /dev/null | |||
@@ -1,139 +0,0 @@ | |||
1 | #!/bin/bash | ||
2 | # This script edits the file: | ||
3 | # /etc/mysql/mariadb.conf.d/50-server.cnf | ||
4 | # The config file will set | ||
5 | # the server-id to | ||
6 | # the server-id of | ||
7 | # the running MariaDB server. | ||
8 | # The config file is assumed to look like | ||
9 | # the default Debian configuration file | ||
10 | # approximately. | ||
11 | # MariaDB will break if the user | ||
12 | # has set the server-id in another file. | ||
13 | set -o pipefail | ||
14 | set -e | ||
15 | PATH=$(dirname "$0"):$PATH | ||
16 | source rpc.bash | ||
17 | |||
18 | use_real_config() | ||
19 | { | ||
20 | MARIADB_CONFIG_FILE=/etc/mysql/mariadb.conf.d/50-server.cnf | ||
21 | } | ||
22 | |||
23 | use_fake_config() | ||
24 | { | ||
25 | use_real_config | ||
26 | OUR_RUNTIME_DIR=/run/hosting-tools | ||
27 | mkdir -p "$OUR_RUNTIME_DIR" | ||
28 | REAL_MARIADB_CONFIG_FILE=$MARIADB_CONFIG_FILE | ||
29 | FAKE_MARIADB_CONFIG_FILE=$OUR_RUNTIME_DIR/50-server.cnf | ||
30 | cp -i -a -T -- "$REAL_MARIADB_CONFIG_FILE" "$FAKE_MARIADB_CONFIG_FILE" | ||
31 | MARIADB_CONFIG_FILE=$FAKE_MARIADB_CONFIG_FILE | ||
32 | } | ||
33 | |||
34 | remove_fake_config() | ||
35 | { | ||
36 | rm -f /run/hosting-tools/50-server.cnf | ||
37 | } | ||
38 | |||
39 | get_mariadb_server_id_from_config() | ||
40 | { | ||
41 | set -- 's/^ *server-id *= *([^ ]+) *$/\1/p' | ||
42 | sed -n -E -e "$1" < "${MARIADB_CONFIG_FILE}" | ||
43 | } | ||
44 | |||
45 | valid_server_id() | ||
46 | { | ||
47 | case "$newid" in | ||
48 | '' | *[^0-9]* ) false ;; | ||
49 | * ) [ "$newid" -ge 1 ] ;; | ||
50 | esac | ||
51 | } | ||
52 | |||
53 | set_mariadb_server_id_config() | ||
54 | { | ||
55 | OUR_SUFFIX='.~hosting-tools~' | ||
56 | MARIADB_CONFIG_FILE_BACKUP=$MARIADB_CONFIG_FILE$OUR_SUFFIX | ||
57 | newid=$1 | ||
58 | if ! valid_server_id "$newid" | ||
59 | then | ||
60 | echo "Error: Invalid server-id: $newid" >&2 | ||
61 | return 9 | ||
62 | fi | ||
63 | if grep -q '^ *server-id *=' "$MARIADB_CONFIG_FILE" | ||
64 | then | ||
65 | set -- s/'^( *server-id *= *)[^ ]+ *$'/'\1'"$newid"/ | ||
66 | else | ||
67 | set -- s/'^#( *server-id *= *)1 *$'/'\1'"$newid"/ | ||
68 | fi | ||
69 | set -- sed -E -i"${OUR_SUFFIX}" -e "$1" | ||
70 | "$@" "$MARIADB_CONFIG_FILE" | ||
71 | } | ||
72 | |||
73 | run_server() | ||
74 | { | ||
75 | local BASH_RPC_REMOTE_DEST="$1" | ||
76 | shift | ||
77 | remote_run_function "$@" | ||
78 | } | ||
79 | |||
80 | main() | ||
81 | { | ||
82 | set -e | ||
83 | set -o pipefail | ||
84 | runtime_server_id=$(mariadb -s <<< 'select @@server_id') | ||
85 | if false | ||
86 | then | ||
87 | use_fake_config | ||
88 | else | ||
89 | use_real_config | ||
90 | fi | ||
91 | config_server_id=$(get_mariadb_server_id_from_config) | ||
92 | if [ "$runtime_server_id" = "$config_server_id" ] | ||
93 | then | ||
94 | printf 'Warning: %s\n' \ | ||
95 | "server-id is already correct. Doing nothing." >&2 | ||
96 | remove_fake_config | ||
97 | return | ||
98 | fi | ||
99 | set_mariadb_server_id_config "$runtime_server_id" | ||
100 | set +e | ||
101 | validate_new_server_id "$runtime_server_id" | ||
102 | r=$? | ||
103 | interactive_show_config_change | ||
104 | if [ "$r" = 0 ] | ||
105 | then | ||
106 | remove_fake_config | ||
107 | fi | ||
108 | return $r | ||
109 | } | ||
110 | |||
111 | interactive_show_config_change() | ||
112 | { | ||
113 | ( | ||
114 | set +e | ||
115 | diff -u --color \ | ||
116 | "$MARIADB_CONFIG_FILE_BACKUP" \ | ||
117 | "$MARIADB_CONFIG_FILE" | ||
118 | [ $? = 1 ] | ||
119 | ) | ||
120 | } | ||
121 | |||
122 | validate_new_server_id() | ||
123 | { | ||
124 | expected=$1 | ||
125 | received=$(get_mariadb_server_id_from_config) | ||
126 | if [ "$expected" = "$received" ] | ||
127 | then | ||
128 | printf 'Success: %s: server-id = %s\n' \ | ||
129 | "wrote MariaDB config" \ | ||
130 | "$received" >&2 | ||
131 | else | ||
132 | printf 'Error: %s: server-id = %s\n' \ | ||
133 | "failed to write MariaDB config" \ | ||
134 | "$received" >&2 | ||
135 | false | ||
136 | fi | ||
137 | } | ||
138 | |||
139 | run_server "${1:-root@localhost}" main | ||