diff options
author | root <root@vps-18a7a2b7.vps.ovh.ca> | 2024-02-14 12:57:16 -0500 |
---|---|---|
committer | root <root@vps-18a7a2b7.vps.ovh.ca> | 2024-02-14 12:57:16 -0500 |
commit | b7e0ee04a75958ece3deb1d9577812286391c9cb (patch) | |
tree | b5a4f5284d780760a538c11efdec1cd567d9cade | |
parent | fc787c8fb83821138915049e64c01eb4ad1060d7 (diff) |
it so tight and it be workin to replicate n shit n keep up n verify that to the user with its output
-rwxr-xr-x | src/mariadb-push-replica.sh | 92 |
1 files changed, 42 insertions, 50 deletions
diff --git a/src/mariadb-push-replica.sh b/src/mariadb-push-replica.sh index 7d92859..d0c87b7 100755 --- a/src/mariadb-push-replica.sh +++ b/src/mariadb-push-replica.sh | |||
@@ -65,26 +65,6 @@ show_hostnames() | |||
65 | "$(uptime)" | 65 | "$(uptime)" |
66 | } | 66 | } |
67 | 67 | ||
68 | check_db() | ||
69 | { | ||
70 | ls -lFC --color /var/lib/mysql | ||
71 | mariadb -t "$@" <<. | ||
72 | select | ||
73 | user() | ||
74 | , @@hostname | ||
75 | , @@server_id | ||
76 | , @@gtid_slave_pos | ||
77 | , @@sql_log_bin | ||
78 | ; | ||
79 | select | ||
80 | @@hostname | ||
81 | , schema_name as 'database' | ||
82 | from | ||
83 | information_schema.schemata | ||
84 | ; | ||
85 | . | ||
86 | } | ||
87 | |||
88 | create_backup() | 68 | create_backup() |
89 | { | 69 | { |
90 | mostly_silent_unless_error create_backup_verbose "$@" | 70 | mostly_silent_unless_error create_backup_verbose "$@" |
@@ -326,32 +306,38 @@ END | |||
326 | mariadb_enable_semi_sync() | 306 | mariadb_enable_semi_sync() |
327 | { | 307 | { |
328 | set -e | 308 | set -e |
329 | chosen_id=$(truncated_machineid_decimal_string_int32) | 309 | [ "$1" = off ] || set -- on |
330 | [ "$chosen_id" -gt 1 ] | 310 | mariadb -v --skip-reconnect -t <<. |
331 | mariadb -v --skip-reconnect -t <<END | ||
332 | stop slave io_thread; | 311 | stop slave io_thread; |
333 | set global rpl_semi_sync_master_enabled = on; | 312 | set global rpl_semi_sync_master_enabled = $1; |
334 | set global rpl_semi_sync_slave_enabled = on; | 313 | set global rpl_semi_sync_slave_enabled = $1; |
314 | . | ||
315 | mariadb_show_vars_like 'rpl_%' | ||
316 | } | ||
335 | 317 | ||
336 | use information_schema; | 318 | mariadb_show_vars_like() |
319 | { | ||
320 | set -e | ||
321 | mariadb -v --skip-reconnect -t <<. | ||
337 | select | 322 | select |
338 | @@hostname | 323 | @@hostname |
339 | , @@server_id | 324 | , @@server_id |
340 | ; | 325 | ; |
326 | use information_schema; | ||
341 | select | 327 | select |
342 | variable_name | 328 | variable_name |
343 | , variable_value | 329 | , variable_value |
344 | from | 330 | from |
345 | global_variables | 331 | global_variables |
346 | where | 332 | where |
347 | variable_name like 'rpl_%' | 333 | variable_name like '$1' |
348 | ; | 334 | ; |
349 | END | 335 | . |
350 | } | 336 | } |
351 | 337 | ||
352 | mariadb_list_databases() | 338 | mariadb_list_databases() |
353 | { | 339 | { |
354 | list_databases >&2 | 340 | show_all_databases >&2 |
355 | mariadb --skip-reconnect -Bsss "$@" <<. | 341 | mariadb --skip-reconnect -Bsss "$@" <<. |
356 | select | 342 | select |
357 | schema_name | 343 | schema_name |
@@ -440,15 +426,18 @@ save_array() | |||
440 | 426 | ||
441 | mariadb_scan_databases() | 427 | mariadb_scan_databases() |
442 | { | 428 | { |
429 | set -- $(mktemp) | ||
443 | declare -g -a primary_dbs | 430 | declare -g -a primary_dbs |
444 | save_array primary_dbs from lines <( | 431 | save_array primary_dbs from lines <( |
445 | run_primary mariadb_list_databases </dev/null | | 432 | run_primary \ |
433 | mariadb_list_databases </dev/null 2>"$1" | | ||
446 | sort -u | 434 | sort -u |
447 | ) | 435 | ) |
448 | 436 | ||
449 | declare -g -a replica_dbs | 437 | declare -g -a replica_dbs |
450 | save_array replica_dbs from lines <( | 438 | save_array replica_dbs from lines <( |
451 | run_replica mariadb_list_databases </dev/null | | 439 | run_replica \ |
440 | mariadb_list_databases </dev/null 2>>"$1" | | ||
452 | sort -u | 441 | sort -u |
453 | ) | 442 | ) |
454 | 443 | ||
@@ -456,6 +445,20 @@ mariadb_scan_databases() | |||
456 | save_array primary_dbs_not_on_replica from zfile <( | 445 | save_array primary_dbs_not_on_replica from zfile <( |
457 | subtract_arrays primary_dbs replica_dbs | 446 | subtract_arrays primary_dbs replica_dbs |
458 | ) | 447 | ) |
448 | if [ ${#primary_dbs_not_on_replica[@]} -gt 0 ] | ||
449 | then | ||
450 | cat "$1" >&2 | ||
451 | fi | ||
452 | rm -- "$1" | ||
453 | } | ||
454 | |||
455 | showmissing() | ||
456 | { | ||
457 | if [ ${#primary_dbs_not_on_replica[@]} -gt 0 ] | ||
458 | then | ||
459 | printf "Missing on ${replica_host}: %s\n" \ | ||
460 | "${primary_dbs_not_on_replica[@]}" >&2 | ||
461 | fi | ||
459 | } | 462 | } |
460 | 463 | ||
461 | choose_mariadbdump_target_databases() | 464 | choose_mariadbdump_target_databases() |
@@ -464,11 +467,7 @@ choose_mariadbdump_target_databases() | |||
464 | shift | 467 | shift |
465 | if [ $# = 0 ] | 468 | if [ $# = 0 ] |
466 | then | 469 | then |
467 | if [ ${#primary_dbs_not_on_replica[@]} -gt 0 ] | 470 | showmissing |
468 | then | ||
469 | printf "Missing on ${replica_host}: %s\n" \ | ||
470 | "${primary_dbs_not_on_replica[@]}" >&2 | ||
471 | fi | ||
472 | 471 | ||
473 | if [ "$SEND_ALL_MARIADB_DATABASES" ] | 472 | if [ "$SEND_ALL_MARIADB_DATABASES" ] |
474 | then | 473 | then |
@@ -502,19 +501,12 @@ main() | |||
502 | set -e | 501 | set -e |
503 | check_input | 502 | check_input |
504 | 503 | ||
505 | run_both set_server_id | 504 | : run_both set_server_id |
506 | run_both mariadb_enable_semi_sync | 505 | : run_both mariadb_enable_semi_sync off |
507 | |||
508 | # run_primary check_db | ||
509 | # run_replica check_db | ||
510 | # showvars replica | ||
511 | |||
512 | # run_primary list_databases | ||
513 | # run_replica list_databases | ||
514 | 506 | ||
515 | mariadb_scan_databases | 507 | mariadb_scan_databases |
516 | choose_mariadbdump_target_databases to_replicate "$@" | 508 | choose_mariadbdump_target_databases databases "$@" |
517 | if [ ${#to_replicate[@]} -gt 0 ] | 509 | if [ ${#databases[@]} -gt 0 ] |
518 | then | 510 | then |
519 | run_replica mariadb_install_replication_credentials \ | 511 | run_replica mariadb_install_replication_credentials \ |
520 | "$primary_host" \ | 512 | "$primary_host" \ |
@@ -527,8 +519,8 @@ main() | |||
527 | --apply-slave-statements \ | 519 | --apply-slave-statements \ |
528 | --gtid \ | 520 | --gtid \ |
529 | --single-transaction \ | 521 | --single-transaction \ |
530 | --databases "${to_replicate[@]}" | 522 | --databases "${databases[@]}" |
531 | run_replica list_databases | 523 | run_replica show_all_databases |
532 | fi | 524 | fi |
533 | #run_replica mariadb <<< 'show slave status\G' | 525 | #run_replica mariadb <<< 'show slave status\G' |
534 | #run_primary mariadb <<< 'show master status\G' | 526 | #run_primary mariadb <<< 'show master status\G' |
@@ -565,7 +557,7 @@ cleanup_after_test() | |||
565 | run_primary delete_backup || true | 557 | run_primary delete_backup || true |
566 | } | 558 | } |
567 | 559 | ||
568 | list_databases() | 560 | show_all_databases() |
569 | { | 561 | { |
570 | mariadb -t "$@" <<. | 562 | mariadb -t "$@" <<. |
571 | select | 563 | select |