Thursday, February 6, 2025

.::: Script running command Linux using Remote include Restart Shutdown sample for maintenance MariaDB & MaxScale :::.

 
1. Data IP LAB
IP Maxscale : 10.10.10.15
IP Master : 10.10.10.31
IP Slave : 10.10.10.32


2. enable access root without password

yum install -y sshpass
ssh-keygen -t rsa
sshpass -p root ssh-copy-id -p22 -o 'StrictHostKeyChecking=no' root@10.10.10.15
sshpass -p root ssh-copy-id -p22 -o 'StrictHostKeyChecking=no' root@10.10.10.31
sshpass -p root ssh-copy-id -p22 -o 'StrictHostKeyChecking=no' root@10.10.10.32

3. test

ssh root@10.10.10.15 "hostname"
ssh root@10.10.10.31 "hostname"
ssh root@10.10.10.31 "hostname"

4. test to check

ssh root@10.10.10.15 "maxctrl list servers"
 


5. for sample using script

[root@ha01 script]# maxctrl list servers | awk '$2 == "gtid02-v32" {print $4}'
10.10.10.32
[root@ha01 script]# maxctrl list servers | awk '$2 == "gtid02-v32" {print $2}'
gtid02-v32
[root@ha01 script]#

[root@ha01 script]# maxctrl list servers | awk '$4 == "10.10.10.32" {print $2}'
gtid02-v32
[root@ha01 script]# maxctrl list servers | awk '$4 == "10.10.10.32" {print $4}'
10.10.10.32
[root@ha01 script]#


6. sample maintenance

[root@ha01 script]# cat script_maintenance_maria.sh
#!/bin/bash
ipmaxscale=$1
ipserver=$2

echo "------------------------------------------------------------"
echo "sh script_maintenance_maria.sh <ipmaxscale> <ipserver>"
echo "------------------------------------------------------------"
datex=$(date "+%Y-%m-%d %H:%M:%S")

# Menjalankan perintah maxctrl list servers dan mencari address $ipserver
server_status=$(ssh root@$ipmaxscale "maxctrl list servers" | grep $ipserver)
serverx=$(ssh root@$ipmaxscale "maxctrl list servers" | awk -v ip="$ipserver" '$4 == ip {print $2}')

# Mengecek apakah server $ipserver ditemukan
if [[ ! -z "$server_status" ]]; then
    echo "Server $ipserver ditemukan, menjalankan perintah maintenance..."
    ssh root@$ipmaxscale "maxctrl list servers | grep -i $ipserver"
        ssh root@$ipmaxscale "maxctrl set server $serverx maintenance"
        ssh root@$ipmaxscale "maxctrl list servers | grep -i $ipserver"
    echo "Perintah berhasil dijalankan."
     mysql -h $ipserver -uadmin -padmin -e "select @@hostname,@@version,now() - interval variable_value second as 'MySQL started on',TIME_FORMAT(SEC_TO_TIME(VARIABLE_VALUE ),'%Hh %im')  as Uptime from information_schema.global_status where variable_name='Uptime';";
    echo "restart service mariadb $ipserver"
        ssh root@$ipserver "systemctl restart mariadb"
        mysql -h $ipserver -uadmin -padmin -e "select @@hostname,@@version,now() - interval variable_value second as 'MySQL started on',TIME_FORMAT(SEC_TO_TIME(VARIABLE_VALUE ),'%Hh %im')  as Uptime from information_schema.global_status where variable_name='Uptime';";
    datey=$(date "+%Y-%m-%d %H:%M:%S")
        echo "$datey --->>> maintenance di $serverx ($ipserver) dengan ipmaxscale $ipmaxscale sudah dilakukan..."
else
    echo "Server $ipserver or Maxscale $ipmaxscale tidak ditemukan atau tidak aktif."
fi
[root@ha01 script]#

 

7. scrip clear maintenance

[root@ha01 script]# cat script_clear_maintenance_maria.sh

#!/bin/bash
ipmaxscale=$1
ipserver=$2
echo "------------------------------------------------------------"
echo "sh script_clear_maintenance_maria.sh <ipmaxscale> <ipserver>"
echo "------------------------------------------------------------"
datex=$(date "+%Y-%m-%d %H:%M:%S")
# Menjalankan perintah maxctrl list servers dan mencari address $ipserver
server_status=$(ssh root@$ipmaxscale "maxctrl list servers" | grep $ipserver)
serverx=$(ssh root@$ipmaxscale "maxctrl list servers" | awk -v ip="$ipserver" '$4 == ip {print $2}')

# Mengecek apakah server $ipserver ditemukan
if [[ ! -z "$server_status" ]]; then
    echo "$datex --->>> Server $ipserver ditemukan, clear maintenance di $serverx ($ipserver) dengan ipmaxscale $ipmaxscale"
    ssh root@$ipmaxscale "maxctrl list servers | grep -i $ipserver"
        ssh root@$ipmaxscale "maxctrl clear server $serverx maintenance"
        ssh root@$ipmaxscale "maxctrl list servers | grep -i $ipserver"
    echo "Perintah berhasil dijalankan."
     mysql -h $ipserver -uadmin -padmin -e "select @@hostname,@@version,now() - interval variable_value second as 'MySQL started on',TIME_FORMAT(SEC_TO_TIME(VARIABLE_VALUE ),'%Hh %im')  as Uptime from information_schema.global_status where variable_name='Uptime';";
    datey=$(date "+%Y-%m-%d %H:%M:%S")
        echo "$datey --->>> clear maintenance di $serverx ($ipserver) dengan ipmaxscale $ipmaxscale sudah dilakukan..."
else
    echo "Server $ipserver or Maxscale $ipmaxscale tidak ditemukan atau tidak aktif."
fi
[root@ha01 script]#
 

8. script restart server via remote

[root@ha01 script]# cat script_restart_server.sh
#!/bin/bash

ipserver=$1
echo "------------------------------------------------------------"
echo "sh script_restart_server.sh <ipserver>"
echo "------------------------------------------------------------"
datex=$(date "+%Y-%m-%d %H:%M:%S")
# Menjalankan perintah maxctrl list servers dan mencari address $ipserver
echo "$datex --->>> Restart Server $ipserver Begin"
ssh root@$ipserver "init 6"
datey=$(date "+%Y-%m-%d %H:%M:%S")
echo "$datey --->>> Perintah Restart Server $ipserver dijalankan"
[root@ha01 script]#

 

No comments:

Post a Comment

Popular Posts