Настройка репликации MysqlMM с экземплярами EC2 с эластичными IP-адресами для обоих

1

Я просто раскрутил два экземпляра EC2 и получил эластичный IP для каждого. Я не могу заставить его подключиться. Вот основная часть моего конфига:

auto_increment_offset=2

log-bin=master2-bin
binlog-ignore-db=mysql

server-id = 2

master-host = 10.122.191.151
master-user = slaverep
master-password = *********
master-port = 3306

Конфигурация для другого сервера очень похожа (но отличается IP-адрес среди нескольких вещей).

Когда я бегу:

mysql> show slave status\G;

Я вижу следующее:

*************************** 1. row ***************************
           Slave_IO_State: Connecting to master
              Master_Host: 107.20.178.31
              Master_User: replication
              Master_Port: 3306
            Connect_Retry: 60
          Master_Log_File: mysqld-bin.000002
      Read_Master_Log_Pos: 1145380
           Relay_Log_File: mysqld-relay-bin.000005
            Relay_Log_Pos: 618
    Relay_Master_Log_File: mysqld-bin.000002
         Slave_IO_Running: No
        Slave_SQL_Running: No
          Replicate_Do_DB: 
      Replicate_Ignore_DB: 
       Replicate_Do_Table: 
   Replicate_Ignore_Table: 
  Replicate_Wild_Do_Table: 


Replicate_Wild_Ignore_Table: 
                   Last_Errno: 1062
                   Last_Error: Error 'Duplicate entry '2124' for key 'PRIMARY'' on query. Default database: 'phpmyfaq'. Query: 'INSERT INTO 
                            faqsessions
                        (sid, user_id, ip, time)
                            VALUES
                        (2124, -1, '10.223.61.111', 1314625795)'
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 472
              Relay_Log_Space: 1148388
              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: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 1130
                Last_IO_Error: error connecting to master 'replication@107.20.178.31:3306' - retry-time: 60  retries: 86400
               Last_SQL_Errno: 1062
               Last_SQL_Error: Error 'Duplicate entry '2124' for key 'PRIMARY'' on query. Default database: 'phpmyfaq'. Query: 'INSERT INTO 
                            faqsessions
                        (sid, user_id, ip, time)
                            VALUES
                        (2124, -1, '10.223.61.111', 1314625795)'
1 row in set (0.00 sec)

ERROR: 
No query specified

Я не знаю, что делать в этот момент ...

РЕДАКТИРОВАТЬ:

Я исправил мои настройки, чтобы они соответствовали следующему: MASTER1:

auto_increment_increment = 1
auto_increment_offset = 2

Master2:

auto_increment_increment = 2
auto_increment_offset = 2
Publiccert
источник

Ответы:

2

Оба сервера пытаются использовать одинаковые наборы идентификаторов автоинкремента, вызывая конфликт при репликации.

Чтобы это исправить, вам нужно настроить auto_increment_offset(1 на первом сервере, 2 на втором) и auto_increment_increment(2). Если в конечном итоге вы добавите третий сервер, его auto_increment_offsetдолжно быть 3, а всем трем серверам потребуется auto_increment_increment3.

Это заставит сервер 1 использовать идентификаторы автоинкремента 1, 3, 5, 7, 9 ... и сервер 2 будет использовать 2, 4, 6, 8, 10, предотвращая конфликт.

ceejayoz
источник
Я изменил свои настройки и добавил изменения в свой пост. Это то, что вы имели в виду?
Publiccert
Да, похоже, это должно работать. Возможно, вам придется пропустить ошибки, чтобы репликация наверстала упущенное, или выполнить новый импорт базы данных.
ceejayoz
Извините, в моем последнем наборе конфигов была опечатка. Я изменил смещения на 1 и 2 соответственно и сохранил приращение на уровне 2. Как заставить раб возобновить работу? Это все еще показывает тот длинный дамп ошибки, который я отправил выше.
Publiccert