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.
kalo pake script batch nya windows…
gimana om?