summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@vps-18a7a2b7.vps.ovh.ca>2024-02-15 13:42:24 -0500
committerroot <root@vps-18a7a2b7.vps.ovh.ca>2024-02-15 13:42:24 -0500
commitee1e699060a1cdaefffe7c69995a35183b37b086 (patch)
tree068c2259908e7ac59b24535b36ace1c0c3fe8d18
parent34edc84dab09b9e28a63dc1e73197acf50a4611e (diff)
ensure replication user is created on server with output to user
-rwxr-xr-xsrc/mariadb-push-replica.sh66
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
154create_replication_user() 153create_and_authorize_replication_user()
155{ 154{
156 mariadb --skip-reconnect -t <<. 155 mariadb --skip-reconnect -t <<.
157create or replace 156create or replace
@@ -161,12 +160,28 @@ identified
161by 160by
162 '$3' 161 '$3'
163; 162;
164grant replication slave 163grant
164 replication replica
165on 165on
166 *.* 166 *.*
167to 167to
168 '$2'@'$1' 168 '$2'@'$1'
169; 169;
170select
171 @@hostname
172 as
173 'primary host'
174, concat (user, '@', host)
175 as
176 login
177, repl_slave_priv
178 as
179 'replica privilege'
180from
181 mysql.user
182where
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 <<.
228set global server_id = $chosen_id; 243set global
229END 244 server_id = $chosen_id
245;
246.
230} 247}
231 248
232mariadb_enable_semi_sync() 249mariadb_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 <<.
237stop slave io_thread ; 254stop
238set global rpl_semi_sync_master_enabled = $1 ; 255 slave io_thread
239set global rpl_semi_sync_slave_enabled = $1 ; 256;
257set global
258 rpl_semi_sync_master_enabled = $1
259;
260set 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
318receive_mariadb_dump() 343receive_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
455mariadb_wait_on_gtid() 484mariadb_wait_on_gtid()
456{ 485{
457 local gtid="$1" 486 local gtid="$1"
458 mariadb -t <<. 487 mariadb --skip-reconnect -t <<.
459select 488select
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;
464stop slave ; 493stop
465start slave ; 494 slave io_thread
495;
496start
497 slave io_thread
498;
466. 499.
467 mariadb -t -v <<. 500 echo "trying primary_gtid_wait()... " >&2
501 mariadb -t --skip-reconnect <<.
468select 502select
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
480show_all_databases() 514show_all_databases()
481{ 515{
482mariadb -t "$@" <<. 516mariadb --skip-reconnect -t "$@" <<.
483select 517select
484 @@hostname 518 @@hostname
485, @@server_id 519, @@server_id