Wednesday, June 18, 2025

.::: Shell Script to compare table Database MariaDB MySQL :::.

 

  correlation with https://teguhth.blogspot.com/2025/03/query-to-check-table-column-compare_28.html

1. check table server1
 
 
2. check table server2
 

3. run script compare table


sh compare_table.sh.sh teguhth 

[root@teguhth02 compare]# sh compare_table.sh.sh teguhth 

 

4. Script compare 

[root@teguhth02 tbl]# cat compare_table.sh

ipx1='10.10.10.31'
portx1='3306'
#dbx1='dbxx'
#dbx0="db_${1}"
userx='admin'
pwdx='admin'

ipx2='10.10.10.32'
portx2='3306'
#dbx2='dbxx'

if [ -z "$1" ]; then
  echo "Usage: $0 <nama_db_suffix>"
  exit 1
fi

dbx0="${1}"


host1=$(mysql -u$userx -p$pwdx -h$ipx1 -P$portx1 -sNe "SELECT @@hostname;")
host2=$(mysql -u$userx -p$pwdx -h$ipx2 -P$portx2 -sNe "SELECT @@hostname;")

ver1=$(mysql -u$userx -p$pwdx -h$ipx1 -P$portx1 -sNe "SELECT @@version;")
ver2=$(mysql -u$userx -p$pwdx -h$ipx2 -P$portx2 -sNe "SELECT @@version;")

COUNT1=$(mysql -u$userx -p$pwdx -h$ipx1 -P$portx1 -sNe "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '$dbx0';")

COUNT2=$(mysql -u$userx -p$pwdx -h$ipx2 -P$portx2 -sNe "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '$dbx0';")

table1=$(mysql -u$userx -p$pwdx -h$ipx1 -P$portx1 -sNe "SELECT table_name FROM information_schema.tables WHERE table_schema = '$dbx0';")
table2=$(mysql -u$userx -p$pwdx -h$ipx2 -P$portx2 -sNe "SELECT table_name FROM information_schema.tables WHERE table_schema = '$dbx0';")

echo "$table1" > compare1.txt
echo "$table2" > compare2.txt

Selisih=$((COUNT1 - COUNT2))

if [ "$Selisih" -gt 0 ]; then
    # COUNT1 lebih besar ? cari tabel yang ada di compare1.txt tapi tidak di compare2.txt
    misingx=$(grep -Fxv -f compare2.txt compare1.txt)
elif [ "$Selisih" -lt 0 ]; then
    # COUNT2 lebih besar ? cari tabel yang ada di compare2.txt tapi tidak di compare1.txt
    misingx=$(grep -Fxv -f compare1.txt compare2.txt)
else
    # COUNT1 == COUNT2 ? tetap bandingkan untuk memastikan tidak ada perbedaan konten
    misingx=$(grep -Fxv -f compare2.txt compare1.txt)
fi

misinginclude=$(grep -Fxv -f compare2.txt compare1.txt)
misingexclude=$(grep -Fxv -f compare1.txt compare2.txt)

datex=$(date)
echo ""
echo ".::: Result compare table ${1}' at $datex :::."
echo ".::: Result compare table '${1}' at $datex :::." > log_compare.txt
echo "" >> log_compare.txt
echo ""
echo "Database       : $dbx0"
echo "Database       : $dbx0"  >> log_compare.txt
echo "" >> log_compare.txt
echo ""
echo "IP Server 1    : $ipx1"
echo "IP Server 1    : $ipx1" >> log_compare.txt

echo "Hostname 1     : $host1"
echo "Hostname 1     : $host1" >> log_compare.txt
echo "DB Version 1   : $ver1"
echo "DB Version 1   : $ver1" >> log_compare.txt


echo "Total Table 1  : $COUNT1 from $dbx0"


echo "Total Table 1  : $COUNT1 from $dbx0" >> log_compare.txt
echo "" >> log_compare.txt
echo ""
echo "IP Server 2    : $ipx2"
echo "IP Server 2    : $ipx2" >> log_compare.txt

echo "Total Table 2  : $COUNT2 from $dbx0"
echo "Total Table 2  : $COUNT2 from $dbx0" >> log_compare.txt
echo "Hostname 2     : $host2"
echo "Hostname 2     : $host2" >> log_compare.txt
echo "DB Version 2   : $ver2"
echo "DB Version 2   : $ver2" >> log_compare.txt

echo "" >> log_compare.txt
echo ""
echo "Different      : $Selisih "
echo "Different      : $Selisih " >> log_compare.txt

echo "Table 1 EXCEPT Table 2 : "
echo "Table 1 EXCEPT Table 2 : "  >> log_compare.txt

echo "$misinginclude" | tail -n +0 | sed 's/^/                /'
echo "$misinginclude" | tail -n +0 | sed 's/^/                /' >> log_compare.txt
echo ""
echo "" >> log_compare.txt

echo "Table 2 EXCEPT Table 1 : "
echo "Table 2 EXCEPT Table 1 : "  >> log_compare.txt

echo "$misingexclude" | tail -n +0 | sed 's/^/                /'
echo "$misingexclude" | tail -n +0 | sed 's/^/                /' >> log_compare.txt
echo ""

echo "-- ============================================="
echo "-- Author: Teguh Triharto"
echo "-- Create date:"
echo "-- Description: Script Backup Database"
echo "-- Website : https://www.linkedin.com/in/teguhth"
echo "-- ============================================="
echo "" >> log_compare.txt
[root@teguhth02 tbl]#

No comments:

Post a Comment