Hari ini di artikel ini kita akan mendapatkan ide tentang cara memonitor replikasi MySQL. Ini adalah persyaratan hari ini untuk mengatur replikasi di lingkungan Anda, tetapi apakah itu cukup? . Kita perlu memantau replikasi kita dari waktu ke waktu. Saya menulis skrip kecil untuk memantau lingkungan kita, yang akan saya bagikan kepada kalian untuk membuat hidup Anda semudah saya Show
Hal-hal yang perlu dipantau di sisi budak AndaLAST_ERRNO Semua variabel ini adalah bagian dari 'tunjukkan status budak' Simpan skrip di bawah ini di. sh dan jalankan seperti di bawah ini /mysqlhealthcheck. SH MYSQL_CHECK=$(./mysql-uUsername -ppassword -e "SHOW VARIABLES LIKE '%version%';" || echo 1) #echo $MYSQL_CHECK STATUS_LINE=$(./mysql-uUsername -ppassword -e "SHOW SLAVE STATUS\G")"1" LAST_ERRNO=$(grep "Last_Errno" <<< "$STATUS_LINE" | awk '{ print $2 }') SECONDS_BEHIND_MASTER=$( grep "Seconds_Behind_Master" <<< "$STATUS_LINE" | awk '{ print $2 }') IO_IS_RUNNING=$( grep "Slave_IO_Running" <<< "$STATUS_LINE" | awk '{ print $2 }') SQL_IS_RUNNING=$(grep "Slave_SQL_Running" <<< "$STATUS_LINE" | awk '{ print $2 }') MASTER_LOG_FILE=$(grep " Master_Log_File" <<< "$STATUS_LINE" | awk '{ print $2 }') RELAY_MASTER_LOG_FILE=$(grep "Relay_Master_Log_File" <<< "$STATUS_LINE" | awk '{ print $2 }') ERRORS=() MESSAGE="NO ERROR" bold=$(tput bold) normal=$(tput sgr0) echo "${bold}MYSQL_CHECK : ${normal} $MYSQL_CHECK " echo "${bold}LAST_ERRNO : ${normal} $LAST_ERRNO " printf "\n" echo "${bold}SECONDS_BEHIND_MASTER : ${normal} $SECONDS_BEHIND_MASTER" printf "\n" echo "${bold}IO_IS_RUNNING : ${normal} $IO_IS_RUNNING" printf "\n" echo "${bold}SQL_IS_RUNNING : ${normal} $SQL_IS_RUNNING" printf "\n" echo "${bold}MASTER_LOG_FILE : ${normal} $MASTER_LOG_FILE" printf "\n" echo "${bold}RELAY_MASTER_LOG_FILE : ${normal} $RELAY_MASTER_LOG_FILE" printf "\n" ### if there is an error ### if [ "${#ERRORS[@]}" -gt 0 ] then MESSAGE="An error has been detected involving the mysql replciation. Below is a list of the reported errors:\n\n $(for i in $(seq 1 ${#ERRORS[@]}) ; do echo "\t${ERRORS[$i]}\n" ; done) Please correct this ASAP " echo -e $MESSAGE else echo -e $MESSAGE fi KELUARANMYSQL_CHECK : Variable_name Value innodb_version 1.1.8 protocol_version 10 slave_type_conversions version 5.5.19-enterprise-commercial-advanced-log version_comment MySQL Enterprise Server - Advanced Edition (Commercial) version_compile_machine i686 version_compile_os linux2.6 LAST_ERRNO : 0 SECONDS_BEHIND_MASTER : 0 IO_IS_RUNNING : Yes SQL_IS_RUNNING : Yes MASTER_LOG_FILE : mysql-bin.000007 RELAY_MASTER_LOG_FILE : mysql-bin.000007 NO ERROR_ Anda juga dapat menambahkan skrip ini ke dalam tugas cron Anda dan mengirimkan bagian "echo -e $MESSAGE" ke diri Anda sendiri melalui email Jika Anda memiliki replikasi MySQL yang berjalan baik dalam pengaturan tipe master-slave atau master-master, maka jangan menganggap semuanya berjalan dengan sempurna sepanjang waktu. Pemadaman listrik dan bencana lainnya bisa terjadi sehingga Anda perlu memeriksa secara berkala untuk memastikan semuanya berfungsi. Posting ini memiliki skrip PHP untuk memeriksa kesalahan replikasi MySQL dan kemudian mengirim email jika ada masalah Status Budak MySQLDapatkan status MySQL Slave saat ini dengan menjalankan perintah "SHOW SLAVE STATUS" pada slave. Ini akan mengeluarkan semua jenis informasi termasuk apakah yang berikut ini berjalan ("Ya" atau "Tidak")
dan kemudian nomor dan pesan kesalahan untuk masing-masing di atas seperti itu
Skrip PHP untuk memeriksa status budak MySQLSkrip berikut harus dijalankan secara berkala. Modifikasi agar sesuai dengan tujuan Anda sendiri sesuai keinginan Anda Masukkan nilai untuk nama pengguna dan kata sandi untuk login sebagai (skrip saya menganggap login dan kata sandi yang sama digunakan untuk semua server, dan bahwa semua server dapat masuk dari server saat ini) dan daftar server MySQL untuk diperiksa $username = '[username]'; $password = '[password]'; $servers = array( '[server1]', '[server2]', '[serverN]', ); $errors = ''; foreach($servers as $server) { $link = mysql_connect($server, $username, $password); if($link) { $res = mysql_query("SHOW SLAVE STATUS", $link); $row = mysql_fetch_assoc($res); if($row['Slave_IO_Running'] == 'No') { $errors .= "Slave IO not running on $servern"; $errors .= "Error number: {$row['Last_IO_Errno']}n"; $errors .= "Error message: {$row['Last_IO_Error']}nn"; } if($row['Slave_SQL_Running'] == 'No') { $errors .= "Slave SQL not running on $servern"; $errors .= "Error number: {$row['Last_SQL_Errno']}n"; $errors .= "Error message: {$row['Last_SQL_Error']}nn"; } mysql_close($link); } else { $errors .= "Could not connect to $servernn"; } } if($errors) { mail('[email address]', 'MySQL slave errors', $errors); } Tautan yang berguna untuk menangani kesalahanSaya tidak akan membantu Anda memperbaiki kesalahan sendiri karena saya hanya akan menyalin kurang lebih informasi yang saya temukan di situs web lain (dan saya tidak tahu seberapa akurat atau sukses semua solusinya) jadi akan ditautkan HowtoForge memiliki postingan berjudul "cara memperbaiki replikasi MySQL" yang menunjukkan contoh perintah SHOW SLAVE STATUS dan mencakup perbaikan masalah saat Slave_SQL_Running adalah "Tidak". Saya telah menggunakan solusi yang disajikan beberapa kali untuk memperbaiki masalah, tetapi berhati-hatilah jika Anda memiliki sesuatu seperti masalah pelanggaran kunci utama dan Anda melewatkan kesalahan maka database Anda mungkin tidak benar-benar sinkron. Saya pribadi mendapat kesalahan Slave_IO_Running = "No" yang menghasilkan pesan "Got fatal error 1236. 'Klien meminta master untuk memulai replikasi dari posisi yang tidak mungkin' dari master saat membaca data dari log biner" Artikel di wiki Brian Klug ini membantu saya; . Catatan Anda juga tidak perlu mengatur host master, pengguna dan kata sandi juga, hanya file dan posisinya Artikel lain di dev. kafol. net memberi saya referensi silang untuk solusi yang sama dan juga berbicara tentang pengaturan sync_binlog ke 1 dalam konfigurasi MySQL yang mungkin berguna; Bagaimana cara memeriksa status replikasi di MySQL?Periksa Status Replikasi MySQL di Server Kueri . Mulai utilitas baris perintah MySQL di server budak. # cd /opt/mysql/mysql/bin. . Periksa status replikasi menggunakan perintah show slave status (status server slave disampaikan oleh nilai kolom Slave_IO_Running dan Slave_SQL_Running) Bagaimana cara memeriksa status replikasi saya?Gunakan salah satu metode berikut untuk melihat kesalahan replikasi. . Unduh dan jalankan alat Asisten Dukungan dan Pemulihan Microsoft ATAU Jalankan Alat Replikasi Status AD di DC Baca status replikasi di keluaran repadmin /showrepl. Repadmin adalah bagian dari Alat Administrator Server Jarak Jauh (RSAT) Bagaimana cara memeriksa status replikasi grup di MySQL?Anda dapat menggunakan Skema Kinerja MySQL untuk memantau Replikasi Grup. Tabel Skema Kinerja ini menampilkan informasi khusus untuk Replikasi Grup. replication_group_member_stats. Lihat Bagian 17. 4. 2, “Tabel replication_group_members”.
Bagaimana cara memeriksa kelambatan replikasi di MySQL?“ TAMPILKAN STATUS BUDAK” . Mantra MySQL DBA
. Cukup jalankan pernyataan SQL ini di node budak Anda yang diduga mengalami kelambatan replikasi. |