From d432e23feb6b44b787228b8f60c9380888ad2e82 Mon Sep 17 00:00:00 2001 From: Tamal Saha Date: Sun, 28 Dec 2025 11:10:29 +0600 Subject: [PATCH] Use k8s 1.34 client libs Signed-off-by: Tamal Saha --- scripts/backup-stream-file-exists.sh | 6 +- scripts/backup-stream.sh | 20 +++--- scripts/copy-data.sh | 38 +++++----- scripts/ensure-restore.sh | 20 +++--- scripts/on-start.sh | 24 +++---- scripts/std-replication-run.sh | 1 - scripts/std-replication-setup.sh | 100 +++++++++++++-------------- 7 files changed, 103 insertions(+), 106 deletions(-) diff --git a/scripts/backup-stream-file-exists.sh b/scripts/backup-stream-file-exists.sh index f3dd921..e8c172a 100755 --- a/scripts/backup-stream-file-exists.sh +++ b/scripts/backup-stream-file-exists.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash if [ -f /scripts/backup_data_stream_pod_ip.txt ]; then - echo -n "Yes" + echo -n "Yes" else - echo -n "No" -fi \ No newline at end of file + echo -n "No" +fi diff --git a/scripts/backup-stream.sh b/scripts/backup-stream.sh index 32ebafd..ac32c89 100755 --- a/scripts/backup-stream.sh +++ b/scripts/backup-stream.sh @@ -1,12 +1,12 @@ #!/usr/bin/env bash - ip=$(cat "/scripts/backup_data_stream_pod_ip.txt") - echo "Start master data transferring..ip $ip" - export MYSQL_PWD="$MYSQL_ROOT_PASSWORD" - mariabackup --backup --stream=mbstream --user=root | socat -u STDIN TCP:$ip:3307 - if [ $? -eq 0 ]; then - echo "Backup data for pod $ip transferred successfully." - else - echo "Backup data transfer for pod $ip failed." - fi - rm /scripts/backup_data_stream_pod_ip.txt +ip=$(cat "/scripts/backup_data_stream_pod_ip.txt") +echo "Start master data transferring..ip $ip" +export MYSQL_PWD="$MYSQL_ROOT_PASSWORD" +mariabackup --backup --stream=mbstream --user=root | socat -u STDIN TCP:$ip:3307 +if [ $? -eq 0 ]; then + echo "Backup data for pod $ip transferred successfully." +else + echo "Backup data transfer for pod $ip failed." +fi +rm /scripts/backup_data_stream_pod_ip.txt diff --git a/scripts/copy-data.sh b/scripts/copy-data.sh index c121f98..e65e2af 100755 --- a/scripts/copy-data.sh +++ b/scripts/copy-data.sh @@ -5,28 +5,28 @@ TOTAL_DIR_TO_COPY="$TOTAL_DIR_TO_COPY" DATA_DIR="$DATA_DIR" if [ -z "$ROOT_DIR" ] || [ -z "$TOTAL_DIR_TO_COPY" ]; then - echo "ROOT_DIR and TOTAL_DIR_TO_COPY must be set." - exit 1 + echo "ROOT_DIR and TOTAL_DIR_TO_COPY must be set." + exit 1 fi Size1=$(du -s "$ROOT_DIR" | cut -f1) echo "DATA DIRECTORY SIZE: ", $Size1 -for (( i = 1; i <= $TOTAL_DIR_TO_COPY; i++ ));do - if [[ -d "$ROOT_DIR$i" ]];then - Size2=$(du -s "$ROOT_DIR$i" | cut -f1) - echo $Size1, " ", $Size2 - if [[ "$Size1" == "$Size2" ]];then - continue +for ((i = 1; i <= $TOTAL_DIR_TO_COPY; i++)); do + if [[ -d "$ROOT_DIR$i" ]]; then + Size2=$(du -s "$ROOT_DIR$i" | cut -f1) + echo $Size1, " ", $Size2 + if [[ "$Size1" == "$Size2" ]]; then + continue + fi + fi + # not deleting any data + # because the sole purpose of this script is to copy the data + # rm -rf "$ROOT_DIR$i"/* + rm "$ROOT_DIR/mysql.sock" + cp -rvL "$ROOT_DIR/"* "$ROOT_DIR$i"/ + if [[ $? -ne 0 ]]; then + echo "Error occurred while copying to $ROOT_DIR$i" + exit 1 fi - fi - # not deleting any data - # because the sole purpose of this script is to copy the data - # rm -rf "$ROOT_DIR$i"/* - rm "$ROOT_DIR/mysql.sock" - cp -rvL "$ROOT_DIR/"* "$ROOT_DIR$i"/ - if [[ $? -ne 0 ]]; then - echo "Error occurred while copying to $ROOT_DIR$i" - exit 1 - fi done -exit 0 \ No newline at end of file +exit 0 diff --git a/scripts/ensure-restore.sh b/scripts/ensure-restore.sh index aa35885..d2aa184 100755 --- a/scripts/ensure-restore.sh +++ b/scripts/ensure-restore.sh @@ -1,21 +1,21 @@ #!/usr/bin/env bash if [[ "$PITR_RESTORE" == "true" ]]; then - if [[ "$HOSTNAME" != *"-0" ]]; then - if [[ -f /var/lib/mysql/gvwstate.dat ]]; then - rm /var/lib/mysql/gvwstate.dat + if [[ "$HOSTNAME" != *"-0" ]]; then + if [[ -f /var/lib/mysql/gvwstate.dat ]]; then + rm /var/lib/mysql/gvwstate.dat + fi fi - fi fi RECOVERY_DONE_FILE="/tmp/recovery.done" if [[ "$PITR_RESTORE" == "true" ]]; then while true; do - sleep 2 - echo "Point In Time Recovery In Progress. Waiting for $RECOVERY_DONE_FILE file" - if [[ -e "$RECOVERY_DONE_FILE" ]]; then - echo "$RECOVERY_DONE_FILE found." - break - fi + sleep 2 + echo "Point In Time Recovery In Progress. Waiting for $RECOVERY_DONE_FILE file" + if [[ -e "$RECOVERY_DONE_FILE" ]]; then + echo "$RECOVERY_DONE_FILE found." + break + fi done fi diff --git a/scripts/on-start.sh b/scripts/on-start.sh index 02c5a91..bfde47e 100755 --- a/scripts/on-start.sh +++ b/scripts/on-start.sh @@ -26,18 +26,18 @@ hosts=$(cat "/scripts/peer-list") log "INFO" "hosts are {$hosts}" if [[ $DISTRIBUTED == "true" ]]; then - while [ ! -f "/etc/podip/podip" ];do - sleep 1 - echo "nsmIP not available!!!" - done - - while [ ! -s /etc/podip/podip ]; do - sleep 1 - echo "nsm ip not available" - done - - export POD_IP=$(cat /etc/podip/podip) - log "INFO" "pod ip is-> $POD_IP" + while [ ! -f "/etc/podip/podip" ]; do + sleep 1 + echo "nsmIP not available!!!" + done + + while [ ! -s /etc/podip/podip ]; do + sleep 1 + echo "nsm ip not available" + done + + export POD_IP=$(cat /etc/podip/podip) + log "INFO" "pod ip is-> $POD_IP" fi # write on galera configuration file diff --git a/scripts/std-replication-run.sh b/scripts/std-replication-run.sh index 82b1f25..581f546 100755 --- a/scripts/std-replication-run.sh +++ b/scripts/std-replication-run.sh @@ -34,4 +34,3 @@ while [ true ]; do ./scripts/std-replication-on-start.sh $@ sleep 1 done - diff --git a/scripts/std-replication-setup.sh b/scripts/std-replication-setup.sh index cbb75cb..1a36981 100755 --- a/scripts/std-replication-setup.sh +++ b/scripts/std-replication-setup.sh @@ -62,16 +62,16 @@ function wait_for_mysqld_running() { joining_for_first_time=1 -function alter_user(){ - local mysql="$mysql_header --host=$localhost" - local ssl_require="" - local user="$1" - if [[ "${REQUIRE_SSL:-}" == "TRUE" ]]; then +function alter_user() { + local mysql="$mysql_header --host=$localhost" + local ssl_require="" + local user="$1" + if [[ "${REQUIRE_SSL:-}" == "TRUE" ]]; then ssl_require="REQUIRE SSL" - else + else ssl_require="REQUIRE NONE" - fi - retry 120 ${mysql} -N -e "SET SQL_LOG_BIN=0;ALTER USER '$user'@'%' $ssl_require;" + fi + retry 120 ${mysql} -N -e "SET SQL_LOG_BIN=0;ALTER USER '$user'@'%' $ssl_require;" } function create_replication_user() { @@ -137,7 +137,6 @@ function create_maxscale_user() { # fi #} - function create_monitor_user() { log "INFO" "Checking whether monitor user exist or not......" local mysql="$mysql_header --host=$localhost" @@ -151,12 +150,12 @@ function create_monitor_user() { retry 120 ${mysql} -N -e "SET SQL_LOG_BIN=0;CREATE USER 'monitor_user'@'%' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD';" #mariadb 10.6+ change SUPER-> READ_ONLY ADMIN, REPLICATION CLIENT> SLAVE MONITOR if [[ "$(echo -e "1:10.7\n$MARIADB_VERSION" | sort -V | tail -n1)" == "$MARIADB_VERSION" ]]; then - retry 120 ${mysql} -N -e "SET SQL_LOG_BIN=0;GRANT READ_ONLY ADMIN, RELOAD on *.* to 'monitor_user'@'%';" - retry 120 ${mysql} -N -e "SET SQL_LOG_BIN=0;GRANT SLAVE MONITOR ON *.* TO 'monitor_user'@'%';" - retry 120 ${mysql} -N -e "SET SQL_LOG_BIN=0;GRANT BINLOG ADMIN, REPLICATION MASTER ADMIN, REPLICATION SLAVE ADMIN ON *.* TO 'monitor_user'@'%';" + retry 120 ${mysql} -N -e "SET SQL_LOG_BIN=0;GRANT READ_ONLY ADMIN, RELOAD on *.* to 'monitor_user'@'%';" + retry 120 ${mysql} -N -e "SET SQL_LOG_BIN=0;GRANT SLAVE MONITOR ON *.* TO 'monitor_user'@'%';" + retry 120 ${mysql} -N -e "SET SQL_LOG_BIN=0;GRANT BINLOG ADMIN, REPLICATION MASTER ADMIN, REPLICATION SLAVE ADMIN ON *.* TO 'monitor_user'@'%';" else - retry 120 ${mysql} -N -e "SET SQL_LOG_BIN=0;GRANT SUPER, RELOAD on *.* to 'monitor_user'@'%';" - retry 120 ${mysql} -N -e "SET SQL_LOG_BIN=0;GRANT REPLICATION CLIENT on *.* to 'monitor_user'@'%';" + retry 120 ${mysql} -N -e "SET SQL_LOG_BIN=0;GRANT SUPER, RELOAD on *.* to 'monitor_user'@'%';" + retry 120 ${mysql} -N -e "SET SQL_LOG_BIN=0;GRANT REPLICATION CLIENT on *.* to 'monitor_user'@'%';" fi retry 120 ${mysql} -N -e "SET SQL_LOG_BIN=0;FLUSH PRIVILEGES;" @@ -199,7 +198,7 @@ function join_to_master_by_slave_pos() { retry 20 ${mysql} -N -e "STOP SLAVE;" retry 20 ${mysql} -N -e "RESET SLAVE ALL;" if [ $joining_for_first_time -eq 1 ]; then - retry 20 ${mysql} -N -e "SET GLOBAL gtid_slave_pos = '$gtid';" + retry 20 ${mysql} -N -e "SET GLOBAL gtid_slave_pos = '$gtid';" fi if [[ "${REQUIRE_SSL:-}" == "TRUE" ]]; then ssl_options=", MASTER_SSL=1, MASTER_SSL_CA='/etc/mysql/certs/server/ca.crt'" @@ -231,30 +230,30 @@ function start_mysqld_in_background() { backup_restored=0 if [ -f "/scripts/receive_backup.txt" ]; then - echo "Waiting for the master to start streaming backup data..." - echo "$POD_IP">/scripts/backup_receive_started.txt - while true; do - socat -u TCP-LISTEN:3307 STDOUT | mbstream -x -C /var/lib/mysql - if [ $? -eq 0 ]; then - log "INFO" "Data restore successful." - break - else - log "INFO" "Data restore failed." - rm -rf /var/lib/mysql - fi - done - mariabackup --prepare --target-dir=/var/lib/mysql - rm /scripts/backup_receive_started.txt - backup_restored=1 - rm /scripts/receive_backup.txt + echo "Waiting for the master to start streaming backup data..." + echo "$POD_IP" >/scripts/backup_receive_started.txt + while true; do + socat -u TCP-LISTEN:3307 STDOUT | mbstream -x -C /var/lib/mysql + if [ $? -eq 0 ]; then + log "INFO" "Data restore successful." + break + else + log "INFO" "Data restore failed." + rm -rf /var/lib/mysql + fi + done + mariabackup --prepare --target-dir=/var/lib/mysql + rm /scripts/backup_receive_started.txt + backup_restored=1 + rm /scripts/receive_backup.txt fi start_mysqld_in_background if [[ "${REQUIRE_SSL:-}" == "TRUE" ]]; then - export mysql_header="mariadb -u ${USER} --port=3306 --ssl-ca=/etc/mysql/certs/server/ca.crt --ssl-cert=/etc/mysql/certs/server/tls.crt --ssl-key=/etc/mysql/certs/server/tls.key" + export mysql_header="mariadb -u ${USER} --port=3306 --ssl-ca=/etc/mysql/certs/server/ca.crt --ssl-cert=/etc/mysql/certs/server/tls.crt --ssl-key=/etc/mysql/certs/server/tls.key" else - export mysql_header="mariadb -u ${USER} --port=3306" + export mysql_header="mariadb -u ${USER} --port=3306" fi export MYSQL_PWD=${PASSWORD} @@ -299,27 +298,26 @@ while true; do fi if [[ $desired_func == "join_to_master" ]]; then - # wait for the script copied by coordinator - while [ ! -f "/scripts/master.txt" ]; do - log "WARNING" "master detector file isn't present yet!" - sleep 1 - done - master=$(cat /scripts/master.txt) - rm -rf /scripts/master.txt - if [[ $backup_restored -eq 0 ]]; then - join_to_master_by_current_pos - else - while [ ! -f "/scripts/gtid.txt" ]; do - log "WARNING" "gtid detector file isn't present yet!" + # wait for the script copied by coordinator + while [ ! -f "/scripts/master.txt" ]; do + log "WARNING" "master detector file isn't present yet!" sleep 1 done - gtid=$(cat /scripts/gtid.txt) - echo "master replica's current gtid position is $gtid" - rm -rf /scripts/gtid.txt - join_to_master_by_slave_pos - fi + master=$(cat /scripts/master.txt) + rm -rf /scripts/master.txt + if [[ $backup_restored -eq 0 ]]; then + join_to_master_by_current_pos + else + while [ ! -f "/scripts/gtid.txt" ]; do + log "WARNING" "gtid detector file isn't present yet!" + sleep 1 + done + gtid=$(cat /scripts/gtid.txt) + echo "master replica's current gtid position is $gtid" + rm -rf /scripts/gtid.txt + join_to_master_by_slave_pos + fi fi log "INFO" "waiting for mysql process id = $pid" wait $pid done -