Mencoba memahami SHOW SLAVE STATUS di MySQL


11

Saya memiliki setup replikasi Master-Slave dan sepertinya itu berjalan dengan baik. Di bawah ini adalah hasil dari SHOW SLAVE STATUSperintah:

show slave STATUS\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: *.*.*.*
                  Master_User: repliV1
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 10726644
               Relay_Log_File: mysqld-relay-bin.000056
                Relay_Log_Pos: 231871
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: data1
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 10726644
              Relay_Log_Space: 232172
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:

Saya ingin memahami lebih jauh tentang Relay_Log_File, Relay_Log_Posdan Relay_Master_Log_File.

Pertanyaan saya adalah:

  • Benarkah file log relay adalah file yang sedang dibaca dan disimpan secara lokal untuk menjalankan replikasi?

  • Bagaimana dengan relay_master_log_fileitu; bagaimana bedanya dengan Master_Log_File?

  • Apa saja nilai-nilai ini, yaitu. , Read_Master_Log_Posdan Relay_Log_Pos? Mengapa mereka muncul meskipun replikasi lengkap dan sinkron?

  • Benarkah file-file ini dalam format biner, dan karenanya saya tidak dapat melihatnya?

Jawaban:


8

Yang ingin saya pahami lebih lanjut adalah Relay_Log_File, Relay_Log_Pos dan Relay_Master_Log_File.

Dari SHOW SLAVE STATUS\G, dapatkan dua nilai

  • Relay_Log_File : Log relai saat ini menerima entri baru selama replikasi
  • Relay_Log_Pos : Posisi saat ini dari relai saat ini menerima entri baru selama replikasi
  • Relay_Master_Log_File : Relay file log yang berisi pernyataan SQL yang terakhir berhasil dieksekusi pada Master yang dieksekusi pada Slave.
  • Master_Log_File: Log pada Master yang sesuai dengan file log relai saat ini dan posisi log relai saat ini

File-file tersebut dalam biner sehingga tidak dapat melihatnya dengan benar

Ya, Anda dapat melihat log relai. Karena mereka memiliki struktur yang sama dengan log biner biasa, jalankan saja program mysqlbinlog . Sebagai contoh untuk melihat SQL di dalam diri Anda mana pun menyampaikan log, seperti yang terakhir, lakukan ini:

mysqlbinlog mysqld-relay-bin.000056 > /root/SQLForCurrentRelayLog.txt
less /root/SQLForCurrentRelayLog.txt

Saya sekarang lebih jelas bagaimana dengan Exec_Master_Log_Pos (apakah ini posisi master log pelaksana) dan sampai_log_pos di mana harus berhenti?
newbie14

Kesalahan kecil di sini. Relay_Master_Log_Fileadalah nama file master log biner yang berisi peristiwa terbaru yang dieksekusi oleh untaian SQL, bukan file log relai .
crishoj


8

Relay_Master_Log_Filesebenarnya nama binlog pada master yang berisi pernyataan SQL terakhir yang berhasil dieksekusi pada slave. Itu bukan nama log relai pada budak. Lihat: http://dev.mysql.com/doc/refman/5.5/id/show-slave-status.html

Exec_Master_Log_Posadalah posisi di relay_master_log_file yang dijalankan oleh slave SQL thread. Jadi pada contoh Anda, slave db telah mengeksekusi semua pernyataan hingga binlog mysql-bin.000001pos 10726644 pada master db.

until_log_posbenar-benar hanya digunakan jika Anda memulai budak Anda dengan sintaks START SLAVE UNTIL master_log_pos = $integer. Sintaks itu akan mereplikasi hingga posisi itu (itu akan menjadi exec_master_log_pos) dan kemudian berhenti. Anda biasanya hanya akan melakukan ini jika Anda ingin mereplikasi ke titik tertentu, tetapi tidak lebih jauh (seperti jika pernyataan berikutnya adalah drop tabel disengaja atau sesuatu). Nilai until_log_pos0 ketika tidak ditentukan, jadi dalam kasus Anda berarti replikasi akan terus bergerak maju.


terima kasih saya semakin jelas sekarang. Ada lagi yang perlu dipantau sekarang?
newbie14
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.