Спроба зрозуміти ПОКАЗУВАТИ СТАТУС РОЗКЛАДУ в MySQL


11

У мене налаштування реплікації Master-Slave, і схоже, що вона працює нормально. Нижче наведено результат SHOW SLAVE STATUSкоманди:

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:

Я хотів би розібратися далі про те Relay_Log_File, Relay_Log_Posі Relay_Master_Log_File.

Мої запитання:

  • Чи правда, що файл журналу ретрансляції - це той, який читається та зберігається локально для запуску реплікації?

  • Що з relay_master_log_fileтодішнім; чим він відрізняється від Master_Log_File?

  • Які обидва ці значення, а саме. , Read_Master_Log_Posі Relay_Log_Pos? Чому вони відображаються, навіть якщо реплікація завершена і синхронізована?

  • Чи правда, що ці файли у двійковому форматі, і тому я не можу їх переглядати?

Відповіді:


8

Хочу зрозуміти далі - Relay_Log_File, Relay_Log_Pos і Relay_Master_Log_File.

Від SHOW SLAVE STATUS\G, отримайте два значення

  • Relay_Log_File : Поточний журнал ретрансляції, що приймає нові записи під час реплікації
  • Relay_Log_Pos : Поточне положення поточного журналу ретрансляції, що приймає нові записи під час реплікації
  • Relay_Master_Log_File : Файл журналу ретрансляції, що містить останній успішно виконаний оператор SQL на Master, який був виконаний на Славі.
  • Master_Log_File: Журнал у програмі Master, який відповідає поточному файлу журналу реле та поточному положенню журналу реле

Файли перебувають у двійковій формі, тому їх не можна переглядати правильно

Так, ви можете переглядати журнали ретрансляцій. Оскільки вони мають таку ж структуру, як звичайний бінарний журнал, просто запустіть програму mysqlbinlog . Наприклад, щоб переглянути SQL в будь-якому з ваших журналів ретрансляції, наприклад, в останньому, зробіть це:

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

Мені зараз зрозуміліше, як щодо Exec_Master_Log_Pos (це виконується майстер-позиція журналу) і до_log_pos де зупинитись?
newbie14

Тут незначна помилка. Relay_Master_Log_File- це ім'я головного бінарного файлу журналу, що містить останню подію, виконану потоком SQL, а не файл журналу ретрансляції .
crishoj


8

Relay_Master_Log_Fileнасправді це ім'я бінолога на майстрі, що містить останній оператор SQL, успішно виконаний на підлеглому. Це не назва журналу ретрансляції на підлеглому. Дивіться: http://dev.mysql.com/doc/refman/5.5/uk/show-slave-status.html

Exec_Master_Log_Pos- це позиція у relay_master_log_file, до якої виконується підлеглий потік SQL. Отже, у вашому прикладі ведений db виконує всі операції до binlog mysql-bin.000001pos 10726644 на master db.

until_log_posнасправді використовується лише в тому випадку, якщо ви починаєте свого раба із синтаксису START SLAVE UNTIL master_log_pos = $integer. Цей синтаксис буде повторюватися до цього положення (це буде той самий exec_master_log_pos), а потім зупиниться. Зазвичай ви робите це лише в тому випадку, якщо хочете повторити на певну точку, але не далі (наприклад, якщо наступний випадок - випадкове падіння таблиці чи щось таке). Значення until_log_posдорівнює 0, коли воно не вказане, тож у вашому випадку означає, що реплікація просто продовжує рухатися вперед.


дякую, мені зараз стає ще зрозуміліше. Що ще зараз слідкувати?
newbie14
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.