Назад | Перейти на главную страницу

Почему во время моей репликации (главный-подчиненный) он продолжает вставлять данные, затем удаляет данные, а затем вставляет данные?

Я следовал этому руководству по репликации главный-подчиненный: http://www.howtoforge.com/mysql_master_master_replication

В принципе, я так и сделал.

  1. На обоих серверах удален mysql. Установил mysql на оба сервера.
  2. Загрузил данные на оба сервера.
  3. Выполнял процедуру репликации.
  4. Репликация удалила мои таблицы, а затем создала их снова.
  5. Затем репликация начала вставлять строки в таблицу. Затем удаляем их после того, как они достигнут 3 миллионов строк ... затем снова вставляем строки.

Почему он не может просто вставить все строки и сделать их точно такими же, как мой мастер? Почему он удаляет файлы и вставляет их снова и снова?

show slave status\G;
*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 
                Master_User: 
                Master_Port: 
              Connect_Retry: 60
            Master_Log_File: mysql-bin.000025
        Read_Master_Log_Pos: 694442541
             Relay_Log_File: mysqld-relay-bin.000039
              Relay_Log_Pos: 201628150
      Relay_Master_Log_File: mysql-bin.000018
           Slave_IO_Running: Yes
          Slave_SQL_Running: Yes
            Replicate_Do_DB:
        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: 201628013
            Relay_Log_Space: 8213564485
            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: 6343
1 row in set (0.00 sec)

ERROR:
No query specified


 show master status\G;
*************************** 1. row ***************************
            File: mysql-bin.000033
        Position: 540194
    Binlog_Do_DB: fal
Binlog_Ignore_DB:
1 row in set (0.01 sec)

При репликации MySQL мастер записывает файлы «binlog», детализируя только запросы, которые изменяют реплицированные базы данных (UPDATE, DELETE, INSERT, CREATE TABLE ..., а не SELECT и т. Д.).

Начиная с идентичных копий базы данных, мастер записывает файлы binlog, а подчиненный считывает их и выполняет все изменения: Таким образом происходит репликация.

Ваши сообщения о состоянии указывают на то, что реплика ведомого ведущего устройства не полностью обновлена ​​(6343 с = 105 минут), и есть очередь операторов SQL для запуска, находящихся в файлах binlog:

мастер:

File: mysql-bin.000033
Position: 540194

раб:

Master_Log_File: mysql-bin.000025
Read_Master_Log_Pos: 694442541
...
Exec_Master_Log_Pos: 201628013
....
Seconds_Behind_Master: 6343

Я подозреваю, что на ведущем устройстве произошла какая-то операция типа DELETE / INSERT, а ведомое устройство просто реплицирует изменения, хотя и с задержкой почти на пару часов.

Чтобы определить, какие запросы он выполняет / собирается запустить, вы можете использовать mysqlbinlog для просмотра содержимого (двоичных) файлов binlog.

Локки