Daripada bergantung ke aplikasi untuk mengetahui koneksi ke MySQL server berhasil, ada baiknya dibuat script helper sederhana. Alasannya dengan bergantung ke aplikasi banyak dependency yang harus di install, tidak mudah membuat batas berapa lama mysql client mencoba untuk terhubung ke server, menampilkan pesan untuk user sebagai informasi.

Format standart MySQL client

mysql -h HOST -P PORT -u USER -pPASSWORD DATABASE

format ini juga yang akan kita gunakan. Kita buat shell script konek-mysql.sh, dengan membuat HOST,PORT,USER,PASSWORD dan DATABASE sebagai variable

#!/usr/bin/env bash
MYSQL_SERVER="192.168.1.1"
MYSQL_PORT="3306"
MYSQL_USER="jaranguda"
MYSQL_DATABASE="devops"
MYSQL_PASSWORD="ErbjsbbMe3eAg9zapvLz"
 
mysql -h $MYSQL_SERVER -P $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE

coba jalankan cript diatas.

bash konek-mysql.sh

muncul masalah pertama. Kita langsung membuka MySQL shell, tujuan utama adalah untuk konek ke server MySQl untuk mengetahui status server, cara ini kurang fleksibel. Karena MySQL dapat menerima input dari STDIN, maka bisa kita modifikasi menjadi

#!/usr/bin/env bash
MYSQL_SERVER="192.168.1.1"
MYSQL_PORT="3306"
MYSQL_USER="jaranguda"
MYSQL_DATABASE="devops"
MYSQL_PASSWORD="ErbjsbbMe3eAg9zapvLz"
 
echo "status" | mysql -h $MYSQL_SERVER -P $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE

Jalankan lagi script diatas, muncul status MySQL, dan script langsung dihentikan. Cara ini jauh lebih mudah, tidak perlu memikirkan bagaimana cara keluar dari mysql shell, exit code dan lain sebagainya.

mysql  Ver 15.1 Distrib 10.3.21-MariaDB, for Linux (x86_64) using readline 5.1
 
Connection id:		11
Current database:	devops
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server:			MariaDB
Server version:		10.3.21-MariaDB-log MariaDB Server
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	latin1
Db     characterset:	latin1
Client characterset:	utf8
Conn.  characterset:	utf8
UNIX socket:		/var/lib/mysql/mysql.sock
Uptime:			41 min 34 sec
 
Threads: 7  Questions: 228  Slow queries: 0  Opens: 45  Flush tables: 1  Open tables: 39  Queries per second avg: 0.091
--------------

Dari sini muncul lagi pertanyaan, bagaimana jika servernya tidak ada respond? Dari percobaan saya mysql akan menyerah setelah 2 menit. tambahkan date didepan, biar bisa dilihat berapa lama script tersebut dieksekusi.

ERROR 2002 (HY000): Can't connect to MySQL server on '192.168.1.1' (115)
 
real	2m11.449s
user	0m0.007s
sys	0m0.005s

bagaimana bila kita set maksimal 2 detik saja, lalu menampilkan pesan error bila tidak terhubung dalam 2 detik tersebut

#!/usr/bin/env bash
MYSQL_SERVER="192.168.1.1"
MYSQL_PORT="3306"
MYSQL_USER="jaranguda"
MYSQL_DATABASE="devops"
MYSQL_PASSWORD="ErbjsbbMe3eAg9zapvLz"
 
echo 'status' | timeout 2s mysql -h $MYSQL_SERVER -P $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE || echo "Give up! I cant access MySQL server!"

hasilnya sesuai dengan harapan

> time bash konek-mysql.sh 
Cant reach MySQL server!
 
real	0m2.009s
user	0m0.011s
sys	0m0.006s

bila server bisa diakses, akan tetap menampilkan status dari database server.

Join the Conversation

1 Comment

Your email address will not be published. Required fields are marked *