Tuesday, October 24, 2017

Instalasi dan Setting MySQL Server 5.6 Multi Pada FreeBSD 11

Pada kesempatan kali ini saya akan mencoba memberikan petunjuk instalasi sekaligus setting atau konfigurasi supaya dapat menjalankan MySQL Server versi 5.6 secara multi instance.

Apakah yang dimaksud dengan multi instance ?

Multi instance maksudnya adalah menjalankan beberapa daemon service MySQL Server pada satu mesin yang sama  secara bersamaan.

Mengapa hal ini dibutuhkan ?

Well... apabila anda ingin membangun 1 server backup, katakanlah MySQL slave backup server, dimana anda ingin supaya dapat membackup lebih dari 1 master server, maka anda perlu menjalankan beberapa daemon MySQL di server slave ini karena pada MySQL versi 5.6 hanya support 1 ip address master server saja. Berbeda dengan MySQL versi 5.7 keatas, tampaknya sudah support multi ip master server. Entahlah, saya sendiri belum pernah mencobanya. Mungkin nanti saja, karena sementara ini yang saya butuhkan adalah MySQL Server versi 5.6 untuk mendukung aplikasi Visual FoxPro saya.

Ok, kita lanjut ya...

Langkah pertama, kita install terlebih dahulu MySQL Server 5.6 di mesin FreeBSD kita. Caranya cukup mudah, anda hanya perlu mengetikkan perintah : pkg install mysql56-server-5.6.37_1

Setelah MySQL Server 5.6 terinstall, buatlah konfigurasi my.cnf pada folder : /usr/local/etc/mysql seperti dibawah ini :

[mysqld_multi]
mysqld = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin

[mysqld1]
user = root
datadir = /var/db/mysql1
socket = /var/db/mysql1/mysql1.sock
pid-file = /var/db/mysql1/mysql1.pid
port = 3306
server-id = 12
max_allowed_packet = 2000M
lower_case_table_names = 1
relay-log = /var/db/mysql1/mysql-relay-bin.log
log_bin = /var/db/mysql1/mysql-bin.log
binlog_do_db = makmur
expire_logs_days = 3

[mysqld2]
user = root
datadir = /var/db/mysql2
socket = /var/db/mysql2/mysql2.sock
pid-file = /var/db/mysql2/mysqld2.pid
port = 3308
server-id = 22
max_allowed_packet = 2000M
lower_case_table_names = 1
relay-log = /var/db/mysql2/mysql-relay-bin.log
log_bin = /var/db/mysql2/mysql-bin.log
binlog_do_db = gilang
expire_logs_days = 3

[mysqld3]
user = root
datadir = /var/db/mysql3
socket = /var/db/mysql3/mysql3.sock
pid-file = /var/db/mysql3/mysqld3.pid
port = 3309
server-id = 32
max_allowed_packet = 2000M
lower_case_table_names = 1
relay-log = /var/db/mysql3/mysql-relay-bin.log
log_bin = /var/db/mysql3/mysql-bin.log
binlog_do_db = gita
expire_logs_days = 3


Konfigurasi diatas dapat anda modifikasi dan sesuaikan sendiri dengan kebutuhan anda sendiri, namun untuk keperluan saya saat ini, konfigurasi saya adalah seperti diatas karena saya membutuhkan 3 instance MySQL Server untuk berjalan bersamaan. 

Anda bebas menjalankan berapapun banyaknya mysql instance, tidak ada batasan, hanya saja anda perlu mengedit bagian [mysqldN] dimana N adalah angka 1,2,3, dst untuk menunjukkan instance ke 1,2,3, dst. Namun perlu diingat bahwa setiap instance yang dijalankan harus memiliki port yang berbeda. Jangan menjalankan lebih dari 1 instance pada port yang sama karena hal tersebut akan mengakibatkan MySQL Server crash serta tidak dapat dijalankan.

Setelah selesai dengan konfigurasi diatas, langkah selanjutnya adalah membuat script kecil. Saya membuat dengan nama file mysqlmulti dan saya tempatkan di : /usr/local/bin supaya dapat dipanggil dari mana saja seperti fungi command FreeBSD pada umumnya. Isi script tersebut sederhana sekali, yakni 1 baris perintah untuk menjalankan Mysqld Multi. Berikut command untuk menjalankan Mysqld Multi di dalam script tersebut :

mysqld_multi --defaults-file=/usr/local/etc/mysql/my.cnf start

Menjalankan Mysqld Multi berbeda dengan Mysqld Single.

Kalau untuk menjalankan MySQL daemon secara single, anda cukup menggunakan perintah : service mysql-server start, atau bisa juga menempatkan mysql_enable = YES pada /etc/rc.conf supaya service dapat berjalan otomatis pada saat startup. 

Namun untuk menjalankan Mysqld Multi, terdapat perintah khusus yakni : mysqld_multi.
Silahkan cek manual perintah tersebut untuk melihat opsi-opsi yang ada.

Langkah terakhir sebagai penutup, saya ingin supaya mysqld_multi ini dapat berjalan secara otomatis pada saat server dinyalakan. Untuk mencapai tujuan ini, saya menjalankan script starter diatas dengan menggunakan cron. Cukup menambahkan baris ini pada cron job : @reboot /usr/local/bin/mysqlmulti maka script diatas akan dijalankan setiap kali server dinyalakan.

Demikian semoga penjelasan saya dapat dimengerti dan bermanfaat.

No comments:

Welcome to my blog ...

Welcome and have a nice reading ...

Comments are welcome too :-)