Я установил MySQL (5.5) в режиме «главный-подчиненный» и создал еще один подчиненный сервер.
Я остановил оригинальное ведомое устройство, сбросил данные, скопировал и повторно импортировал, и это работало отлично. Я отметил pos master_log оригинального ведомого устройства и использовал эти команды, чтобы установить его на новом подчиненном устройстве.
CHANGE MASTER TO MASTER_HOST='<ipaddress>',
MASTER_USER='<username>', MASTER_PASSWORD='<password>',
MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000851',
MASTER_LOG_POS=15824150,
MASTER_CONNECT_RETRY=10;
Когда я начал новый раб, я получил
Last_IO_Error: Получена фатальная ошибка 1236 от мастера при чтении данных из двоичного журнала: «превышена запись в журнале событий max_allowed_packet; Увеличьте max_allowed_packet на master '
Однако, когда я запустил оригинальное ведомое устройство, оно отлично справилось и теперь синхронизировано.
Итак, вопросы:
текущее значение составляет 16M, как я знаю, как большой идти? (Я бы предпочел избежать проб и ошибок с производственным сервером).
зачем мне увеличивать значение на ведущем устройстве, когда исходное ведомое устройство справлялось просто, может ли быть проблема с новым ведомым устройством?
Обновить
Я увеличил max_allowed_packet до 1073741824, как предложил Роландо на главном, старом рабе и новом рабе, и перезапустил их ( SET GLOBAL max_allowed_packet = 1073741824;
по некоторым причинам, похоже, не взял)
теперь последняя ошибка ввода-вывода такая же, как и раньше, но теперь я вижу
Last_SQL_Error: Ошибка чтения журнала ретрансляции: не удалось проанализировать запись события журнала ретрансляции. Возможные причины: бинарный журнал мастера поврежден (вы можете проверить это, запустив mysqlbinlog в двоичном журнале), журнал реле подчиненного устройства поврежден (вы можете проверить это, запустив mysqlbinlog в журнале ретрансляции), проблема с сетью или ошибка в коде MySQL ведущего или подчиненного. Если вы хотите проверить двоичный журнал ведущего или журнал ретрансляции ведомого, вы сможете узнать их имена, введя «SHOW SLAVE STATUS» на этом ведомом устройстве.
Если я делаю mysqlbinlog с файлом мастера, он довольно долго прокручивается с командами - файл 722M - если я делаю это для журнала подчиненного реле, я получаю
ОШИБКА: Ошибка в Log_event :: read_log_event (): «Проверка работоспособности не удалась», data_len: 38916267, тип события: 69
ОШИБКА: не удалось прочитать запись со смещением 253. Ошибка в формате журнала или ошибка чтения.
Я проверил переменные и изменения работали однако
mysql> показывать переменные LIKE '% max_allowed_packet%';
на новом ведомом показал max_allowed_packet
И slave_max_allowed_packet
где как на мастере он только имеетmax_allowed_packet
поэтому я сделал проверку версии на мастере:
mysql> show variables LIKE '%version%';
+-------------------------+--------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------+
| innodb_version | 1.1.6 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.11-log |
| version_comment | MySQL Community Server (GPL) by Remi |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+--------------------------------------+
и на новом рабе
mysql> show variables LIKE '%version%';
+-------------------------+--------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------+
| innodb_version | 5.5.32 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.32-log |
| version_comment | MySQL Community Server (GPL) by Remi |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+--------------------------------------+
Эти 2 версии слишком далеко друг от друга?
источник
Ответы:
Это нормально, чтобы максимально
max_allowed_packet
до 1G. Всякий раз, когда создается пакет MySQL, он не будет переходить на 1G с самого начала. Почему?Для начала нужно узнать, что такое пакет MySQL. Страница 99 из Книги
объясняет это в пунктах 1-3 следующим образом:
Сравните это с документацией по MySQL
max_allowed_packet
:Учитывая эту информацию, вы должны быть рады, что MySQL расширит и сократит пакет MySQL по мере необходимости. Поэтому идти вперед и
max_allowed_packet
1G на ведущем и ведомомnet_buffer_length
максимальное значение 1M как на ведущем, так и на ведомомВедущий и ведомый должны совпадать с точки зрения того, кому они передают данные, особенно данные BLOB.
ОБНОВЛЕНИЕ 2013-07-04 07:03 ПО ВОСТОЧНОМУ ВРЕМЕНИ
Из ваших сообщений, касающихся релейного журнала, похоже, что у вас есть следующее
ПРЕДЛОЖЕНИЕ
Запуск
CHANGE MASTER TO
очищает все журналы реле и запускается с новым. Вы будете выполнять репликацию из последнего события Master BinLog (BinLog, Position), которое было выполнено на подчиненном устройстве.Попробуйте!
источник
MASTER_LOG_FILE
имя. Например, использовал,mysql-bin.000001
когда я должен был использоватьmysql-bin.000003
изSHOW MASTER STATUS
вCHANGE MASTER TO
.Скорее смущающая проблема была неправильными именами файлов для журналов, вызывающими странные результаты, повторно импортированными с правильными именами файлов, и все было хорошо висит голова в позоре
источник