diff options
author | root <root@vps-18a7a2b7.vps.ovh.ca> | 2024-02-15 13:42:24 -0500 |
---|---|---|
committer | root <root@vps-18a7a2b7.vps.ovh.ca> | 2024-02-15 13:42:24 -0500 |
commit | ee1e699060a1cdaefffe7c69995a35183b37b086 (patch) | |
tree | 068c2259908e7ac59b24535b36ace1c0c3fe8d18 | |
parent | 34edc84dab09b9e28a63dc1e73197acf50a4611e (diff) |
ensure replication user is created on server with output to user
-rwxr-xr-x | src/mariadb-push-replica.sh | 66 |
1 files changed, 50 insertions, 16 deletions
diff --git a/src/mariadb-push-replica.sh b/src/mariadb-push-replica.sh index 140fb2e..cde164c 100755 --- a/src/mariadb-push-replica.sh +++ b/src/mariadb-push-replica.sh | |||
@@ -56,8 +56,7 @@ run_() | |||
56 | { | 56 | { |
57 | case "$1" in | 57 | case "$1" in |
58 | primary_host | replica_host ) ;; | 58 | primary_host | replica_host ) ;; |
59 | *_host ) return 54 ;; # lol wut | 59 | * ) return 58 ;; |
60 | * ) return 53 ;; | ||
61 | esac | 60 | esac |
62 | (set -x | 61 | (set -x |
63 | : ${1%_host} : $2 $3 ${4:+ ...}) | 62 | : ${1%_host} : $2 $3 ${4:+ ...}) |
@@ -151,7 +150,7 @@ to | |||
151 | . | 150 | . |
152 | } | 151 | } |
153 | 152 | ||
154 | create_replication_user() | 153 | create_and_authorize_replication_user() |
155 | { | 154 | { |
156 | mariadb --skip-reconnect -t <<. | 155 | mariadb --skip-reconnect -t <<. |
157 | create or replace | 156 | create or replace |
@@ -161,12 +160,28 @@ identified | |||
161 | by | 160 | by |
162 | '$3' | 161 | '$3' |
163 | ; | 162 | ; |
164 | grant replication slave | 163 | grant |
164 | replication replica | ||
165 | on | 165 | on |
166 | *.* | 166 | *.* |
167 | to | 167 | to |
168 | '$2'@'$1' | 168 | '$2'@'$1' |
169 | ; | 169 | ; |
170 | select | ||
171 | @@hostname | ||
172 | as | ||
173 | 'primary host' | ||
174 | , concat (user, '@', host) | ||
175 | as | ||
176 | login | ||
177 | , repl_slave_priv | ||
178 | as | ||
179 | 'replica privilege' | ||
180 | from | ||
181 | mysql.user | ||
182 | where | ||
183 | repl_slave_priv = 'Y' | ||
184 | ; | ||
170 | . | 185 | . |
171 | } | 186 | } |
172 | 187 | ||
@@ -224,9 +239,11 @@ set_server_id() | |||
224 | set -e | 239 | set -e |
225 | chosen_id=$(truncated_machineid_decimal_string_int32) | 240 | chosen_id=$(truncated_machineid_decimal_string_int32) |
226 | [ "$chosen_id" -gt 1 ] | 241 | [ "$chosen_id" -gt 1 ] |
227 | mariadb -v --skip-reconnect -t <<END | 242 | mariadb -v --skip-reconnect -t <<. |
228 | set global server_id = $chosen_id; | 243 | set global |
229 | END | 244 | server_id = $chosen_id |
245 | ; | ||
246 | . | ||
230 | } | 247 | } |
231 | 248 | ||
232 | mariadb_enable_semi_sync() | 249 | mariadb_enable_semi_sync() |
@@ -234,9 +251,15 @@ mariadb_enable_semi_sync() | |||
234 | set -e | 251 | set -e |
235 | [ "$1" = off ] || set -- on | 252 | [ "$1" = off ] || set -- on |
236 | mariadb -v --skip-reconnect -t <<. | 253 | mariadb -v --skip-reconnect -t <<. |
237 | stop slave io_thread ; | 254 | stop |
238 | set global rpl_semi_sync_master_enabled = $1 ; | 255 | slave io_thread |
239 | set global rpl_semi_sync_slave_enabled = $1 ; | 256 | ; |
257 | set global | ||
258 | rpl_semi_sync_master_enabled = $1 | ||
259 | ; | ||
260 | set global | ||
261 | rpl_semi_sync_slave_enabled = $1 | ||
262 | ; | ||
240 | . | 263 | . |
241 | mariadb_show_vars_like 'rpl_%' | 264 | mariadb_show_vars_like 'rpl_%' |
242 | } | 265 | } |
@@ -312,7 +335,9 @@ send_mariadb_dump() | |||
312 | set -x | 335 | set -x |
313 | mariadb-dump "${@:2}" | 336 | mariadb-dump "${@:2}" |
314 | ) | | 337 | ) | |
315 | replica_host="$1" run_replica receive_mariadb_dump | 338 | BASH_RPC_REMOTE_DEST=$1 \ |
339 | remote_run_function \ | ||
340 | receive_mariadb_dump | ||
316 | } | 341 | } |
317 | 342 | ||
318 | receive_mariadb_dump() | 343 | receive_mariadb_dump() |
@@ -415,6 +440,10 @@ main() | |||
415 | 440 | ||
416 | : run_both set_server_id | 441 | : run_both set_server_id |
417 | : run_both mariadb_enable_semi_sync off | 442 | : run_both mariadb_enable_semi_sync off |
443 | run_primary create_and_authorize_replication_user \ | ||
444 | "$replica_host" \ | ||
445 | "$replication_user" \ | ||
446 | "$replication_password" | ||
418 | 447 | ||
419 | mariadb_scan_databases | 448 | mariadb_scan_databases |
420 | choose_mariadbdump_target_databases databases "$@" | 449 | choose_mariadbdump_target_databases databases "$@" |
@@ -455,16 +484,21 @@ select | |||
455 | mariadb_wait_on_gtid() | 484 | mariadb_wait_on_gtid() |
456 | { | 485 | { |
457 | local gtid="$1" | 486 | local gtid="$1" |
458 | mariadb -t <<. | 487 | mariadb --skip-reconnect -t <<. |
459 | select | 488 | select |
460 | @@hostname | 489 | @@hostname |
461 | , @@gtid_slave_pos as 'replica gtid' | 490 | , @@gtid_slave_pos as 'replica gtid' |
462 | , '$gtid' as 'primary gtid' | 491 | , '$gtid' as 'primary gtid' |
463 | ; | 492 | ; |
464 | stop slave ; | 493 | stop |
465 | start slave ; | 494 | slave io_thread |
495 | ; | ||
496 | start | ||
497 | slave io_thread | ||
498 | ; | ||
466 | . | 499 | . |
467 | mariadb -t -v <<. | 500 | echo "trying primary_gtid_wait()... " >&2 |
501 | mariadb -t --skip-reconnect <<. | ||
468 | select | 502 | select |
469 | master_gtid_wait('$gtid') | 503 | master_gtid_wait('$gtid') |
470 | as \`primary_gtid_wait('$gtid')\` | 504 | as \`primary_gtid_wait('$gtid')\` |
@@ -479,7 +513,7 @@ cleanup_after_test() | |||
479 | 513 | ||
480 | show_all_databases() | 514 | show_all_databases() |
481 | { | 515 | { |
482 | mariadb -t "$@" <<. | 516 | mariadb --skip-reconnect -t "$@" <<. |
483 | select | 517 | select |
484 | @@hostname | 518 | @@hostname |
485 | , @@server_id | 519 | , @@server_id |