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

Проблема репликации с mysql 5.5.8 при восстановлении дампа на главном сервере.

При восстановлении файла дампа Mysql возникает следующая ошибка.

ERROR 1665 (HY000): Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging.
Query OK, 0 rows affected (0.00 sec)

Конфигурация репликации приведена ниже.

my.cnf

Конфигурация репликации:

       server-id    = 33
       max_binlog_size=40M
       log_bin=/MySql_5.5.8/log/my-bin
       log-bin-index=/MySql_5.5.8/log/log/mysql_rpllg/my-bin.index

Скорее всего, вам нужно настроить его для смешанного формата, чтобы сервер мог решить.

binlog-format = СМЕШАННЫЙ

Формат оператора не всегда работает, особенно если оператор содержит такую ​​переменную, как CURRENT_TIMESTAMP. Об этом можно прочитать здесь: https://mariadb.com/kb/en/mariadb/mariadb-documentation/log-files/binary-log/binary-log-formats/ - Кларк Вера

Во-первых, вы должны понять, что дает каждый формат, чтобы вы могли выбрать, какой из них вам больше подходит.

По строкам: Записывает события, которые влияют на отдельные строки таблицы.

На основе заявления: Записывает все операторы SQL, которые вносят изменения в данные или структуру таблицы.

Смешанный объединит оба мира, но MariaDB или MySQL предпочтут STATEMENT, а не ROW.

Ответ @Clark Vera имеет документация Больше подробностей.

На основе строк предназначены структуры, которые имеют несколько запросов, которые необходимо регистрировать и реплицировать, поэтому каждое изменение в каждой строке может регистрироваться и реплицироваться.

Журнал на основе операторов, с другой стороны, дает вам более краткий журнал и более эффективную репликацию базы данных большого объема, но может потерять некоторые данные, которые не считались важными или не меняли структуру.

После этого вы должны поддерживать на обоих серверах репликации один и тот же метод ведения журнала, и все будет в порядке.

Я рекомендую вам СМЕШАННЫЙ журнал, как сказал @Clark Vera, или вы можете просто установить его как ROW в своем сеансе, и когда вы перезапустите свой bd, это будет журнал на основе STATEMENT автоматически.

Попробуйте установить это в my.cnf, затем повторите попытку

binlog-format=STATEMENT