mysqld_multi – Manage Multiple MySQL Servers


mysqld_multi dirancang untuk mengelola beberapa proses mysqld  yang mendengarkan koneksi pada soket file Unix yang berbeda dan port TCP/IP. Hal ini dapat menjalankan atau menghentikan server, atau melaporkan status mereka saat ini.

mysqld_multi mencari untuk group bernama [mysqldN] di my.cnf (atau dalam file bernama dengan opsi --config-file). N dapat berupa bilangan positif integer. Nomor ini disebut dalam pembahasan berikut sebagai opsi group number, atau GNR. Nomor group membedakan option group-group dari yang lain dan digunakan sebagai argumen untuk mysqld_multi untuk menentukan server mana yang ingin anda jalankan, hentikan, atau mendapatkan laporan status. Options yang terdaftar dalam group-group yang sama yang akan anda gunakan dalam group [mysqld] digunakan untuk memulai mysqld. Namun, bila menggunakan beberapa server (multiple server), adalah penting bahwa masing-masing menggunakan nilai sendiri untuk option seperti file socket Unix dan nomor port TCP/IP.

Untuk memanggil mysqld_multi, gunakan sintaks berikut:

shell> mysqld_multi [options] {start|stop|report} [GNR[,GNR] …]

start, stop, dan report menunjukkan operasi mana yang dilakukan. Anda dapat melakukan operasi yang ditujukan untuk server tunggal atau beberapa server, tergantung pada daftar GNR yang mengikuti nama opsi. Jika tidak ada, mysqld_multi melakukan operasi untuk semua server dalam option file.

Setiap nilai GNR merupakan option nomor group atau kisaran angka group. Nilai harus angka pada akhir nama group pada option file. Setiap nilai GNR merupakan pilihan nomor kelompok atau kisaran angka kelompok. Nilai harus nomor pada akhir nama grup pada file pilihan. Sebagai contoh, GNR untuk group bernama [mysqld17] adalah 17. Untuk menentukan kisaran angka, memisahkan angka pertama dan terakhir oleh tanda strip. Nilai GNR 10-13 merupakan kelompok [mysqld10] sampai [mysqld13]. Multiple group atau rentang group dapat ditentukan pada command line, dipisahkan dengan koma. Tidak boleh ada karakter whitespace (spasi atau tab) dalam daftar GNR, apapun setelah karakter spasi diabaikan.

Perintah ini memulai server tunggal menggunakan option group [mysqld17]:

shell> mysqld_multi start 17

Perintah ini menghentikan beberapa server, dengan menggunakan option group [mysqld8] dan [mysqld10] sampai [mysqld13]:

shell> mysqld_multi stop 8,10-13

Sebagai contoh bagaimana anda dapat mengatur option file, gunakan perintah ini:

shell> mysqld_multi --example

mysqld_multi mencari option file sebagai berikut:

  • Dengan --no-default, tidak ada option file yang dibaca.
  • Dengan --defaults-file=file_name, hanya file dengan nama yang dibaca.
  • Kalau tidak, option file dalam daftar standar lokasi yang dibaca, termasuk file bernama dengan option --defaults-extra-file=file_name option, jika ada yang diberikan. (Jika opsi tersebut diberikan beberapa kali, nilai terakhir yang digunakan).

Option file yang dibaca mencari untuk option groups [mysqld_multi] dan [mysqldN]. Group [mysqld_multi] dapat digunakan untuk opsi mysqld_multi sendiri. group-group [mysqldN] dapat digunakan untuk opsi dilewatkan ke instance mysqld tertentu.

mysqld_multi mendukung opsi berikut.

  • --help

Menampilkan pesan bantuan dan keluar.

  • --config-file=file_name

Opsi ini sudah ditinggalkan. Jika diberikan, ini diperlakukan dengan cara yang sama seperti --defaults-extra-file, --config-file telah dihapus di MySQL 5.5.3.

  • --example

Menampilkan contoh option file.

  • --log=file_name

Menentukan nama file log. Jika file ada, output log akan ditambahkan ke sana.

  • --mysqladmin=prog_name

Biner mysqladmin yang akan digunakan untuk menghentikan server.

  • --mysqld=prog_name

Biner mysqld yang akan digunakan. Perhatikan bahwa anda dapat menentukan mysqld_safe sebagai nilai untuk opsi ini juga. Jika anda menggunakan mysqld_safe untuk memulai server, anda dapat menyertakan mysqld atau opsi ledir dalam [mysqldN] sesuai option file.

Opsi ini menunjukkan nama server dimana mysqld_safe harus memulai dan nama path dari direktori dimana server berada. contoh:

[mysqld38]
mysqld = mysqld-debug
ledir = /opt/local/mysql/libexec

  • --no-log

Mencetak log informasi ke stdout daripada file log. Secara default, output masuk ke file log.

  • --password=password

Password dari akun MySQL untuk digunakan saat menjalankan mysqladmin. Perhatikan bahwa nilai password tidak opsional untuk opsi ini, seperti untuk program MySQL lainnya.

  • --silent

Modus Senyap, menonaktifkan peringatan.

  • --tcp-ip

Menghubungkan ke setiap server MySQL melalui port TCP/IP bukan file socket Unix. (Jika file socket hilang, server mungkin masih berjalan, namun hanya dapat diakses melalui port TCP/IP.) Secara default, koneksi yang dibuat menggunakan file socket Unix. Opsi ini mempengaruhi operasi stop dan report.

  • --user=user_name

Nama pengguna account MySQL untuk digunakan saat menjalankan mysqladmin.

  • --verbose

Menjadi lebih verbose.

  • --version

Menampilkan informasi versi dan keluar.

Beberapa catatan tentang mysqld_multi:

  • Sangat penting: Sebelum menggunakan mysqld_multi pastikan bahwa anda memahami arti dari opsi yang dilewatkan ke server mysqld dan mengapa anda ingin memiliki proses mysqld terpisah. Waspadalah terhadap bahaya menggunakan server multiple mysqld dengan direktori data yang sama. Gunakan direktori data yang terpisah, kecuali anda tahu apa yang anda lakukan. Memulai multiple server dengan direktori data yang sama tidak memberikan kinerja ekstra dalam sistem thread.
  • penting
    Pastikan bahwa direktori data untuk setiap server sepenuhnya dapat diakses ke akun Unix bahwa proses mysqld spesifik dimulai. Jangan gunakan akun root Unix untuk ini, kecuali anda tahu apa yang anda lakukan.
  • Pastikan bahwa akun MySQL yang digunakan untuk menghentikan server mysqld (dengan program mysqladmin) memiliki nama pengguna dan password yang sama untuk setiap server. Juga, pastikan bahwa akun memiliki hak SHUTDOWN. Jika server yang anda ingin mengelola memiliki nama pengguna yang berbeda atau password untuk account administratif, anda mungkin ingin membuat account pada setiap server yang memiliki nama pengguna dan password yang sama. Sebagai contoh, anda mungkin membuat akun multi_admin umum dengan menjalankan perintah berikut untuk setiap server:

shell> mysql -u root -S /tmp/mysql.sock -p
Enter password:
mysql> GRANT SHUTDOWN ON *.*
-> TO ‘multi_admin’@’localhost’ IDENTIFIED BY ‘multipass’;

Anda harus melakukan hal ini untuk setiap server mysqld. Mengubah parameter koneksi tepat saat menghubungkan ke masing-masing. Perhatikan bahwa nama host bagian dari nama akun harus mengizinkan anda untuk menghubungkan sebagai multi_admin dari host di mana anda ingin menjalankan mysqld_multi.

  • FIle Soket Unix dan nomor port TCP/IP harus berbeda untuk setiap mysqld. (Atau, jika host memiliki beberapa alamat jaringan, anda dapat menggunakan  --bind-address untuk menyebabkan server yang berbeda untuk mendengarkan antarmuka(interface) yang berbeda.)

Option --pid-file ini sangat penting jika anda menggunakan mysqld_safe untuk menjalankan mysqld(sebagai contoh, --mysqld=mysqld_safe) Setiap mysqld harus memilik ID file ID proses sendiri. Keuntungan menggunakan mysqld_safe dibandingkan mysqld adalah bahwa mysqld_safe  yang memonitor(memantau) proses mysqld dan restart jika proses berakhir karena sinyal yang dikirim menggunakan kill -9 atau untuk alasan lain, seperti segmentation fault. Harap dicatat bahwa skrip mysqld_safe mungkin mengharuskan anda memulainya dari tempat tertentu. Ini berarti bahwa anda mungkin harus mengubah lokasi ke direktori tertentu sebelum menjalankan mysqld_multi. Jika anda memiliki masalah saat memulai, silakan lihat script mysqld_safe. Periksa terutama baris:

----------------------------------------------------------------
MY_PWD=`pwd`
# Check if we are starting this relative (for the binary release)
if test -d $MY_PWD/data/mysql -a \
-f ./share/mysql/english/errmsg.sys -a \
-x ./bin/mysqld
----------------------------------------------------------------

Tes yang dilakukan oleh baris ini seharusnya sukses, atau anda mungkin mengalami masalah. (lihat bagian ini).

  • Anda mungkin ingin menggunakan opsi --user untuk mysqld, tetapi untuk melakukan hal ini anda perlu menjalankan script mysqld_multi sebagai superuser Unix (root). Memiliki opsi dalam option file tidak masalah, anda hanya mendapatkan peringatan jika anda bukan superuser dan proses mysqld dimulai di bawah akun Unix anda sendiri.

Contoh berikut ini menunjukkan bagaimana anda dapat membuat sebuah option file untuk digunakan dengan mysqld_multi. Urutan di mana program mysqld dimulai atau berhenti tergantung pada urutan di mana mereka muncul dalam option file. Nomor group tidak perlu membentuk suatu urutan. Yang pertama dan kelima dari group [mysqldN] sengaja dihilangkan dari contoh untuk menggambarkan bahwa anda dapat memiliki “celah” dalam option file. Ini memberi anda fleksibilitas lebih.

# This file should probably be in your home dir (~/.my.cnf)
# or /etc/my.cnf
# Version 2.1 by Jani Tolonen

[mysqld_multi]
mysqld = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin
user = multi_admin
password = multipass

[mysqld2]
socket = /tmp/mysql.sock2
port = 3307
pid-file = /usr/local/mysql/var2/hostname.pid2
datadir = /usr/local/mysql/var2
language = /usr/local/share/mysql/english
user = john

[mysqld3]
socket = /tmp/mysql.sock3
port = 3308
pid-file = /usr/local/mysql/var3/hostname.pid3
datadir = /usr/local/mysql/var3
language = /usr/local/share/mysql/swedish
user = monty

[mysqld4]
socket = /tmp/mysql.sock4
port = 3309
pid-file = /usr/local/mysql/var4/hostname.pid4
datadir = /usr/local/mysql/var4
language = /usr/local/share/mysql/estonia
user = tonu

[mysqld6]
socket = /tmp/mysql.sock6
port = 3311
pid-file = /usr/local/mysql/var6/hostname.pid6
datadir = /usr/local/mysql/var6
language = /usr/local/share/mysql/japanese
user = jani

Iklan
  1. No trackbacks yet.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: