Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Изменение бинарного лога MySQL 18.05.07 14:47
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
|
Есть два сервера MySQL-5.0.33 с репликацией Master-Master. Чтобы не пересекались добавляемые данные установлено на первом
auto_increment_increment = 2
auto_increment_offset = 1
на втором
auto_increment_increment = 2
auto_increment_offset = 2
Произошел какой-то сбой - и данные с одного на другой передались некорректно. Вот что в логе принимающего сервера:
070518 12:43:10 [ERROR] Slave: Error 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '')л' at line 1' on query. Default database: 'replica'. Query: 'update com_whos_online set customer_id = '0', full_name = 'Guest', ip_address = '11.22.33.44', time_last_click = '1179409360', last_page_url = http://ddate_format(now(), '%Y%m%d')л', Error_code: 1064
070518 12:43:10 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'server1-bin.000008' position 689010453
Хотя в бинарном логе на сервере откуда передавались данные SQL выглядит так:
update com_whos_online set customer_id = '0', full_name = 'Guest', ip_address = '11.22.33.44', time_last_click = '1179409360', last_page_url = 'http://xxx.xxx.xxx/crosman-phantom-p-1012144.html?cPath=1000614' where session_id = '3ebsqsl4mmln55o9v474dtmo01';
Вопросы:
1. Можно ли как-то поредактировать бинарный лог, чтобы убрать/поправить некорректно пришедший запрос?
2. Можно ли как-то откатиться по бинарному логу server1-bin.000008, и заново его передать?
|
|
syntax to use near '')л' at line 1' on query. 22.05.07 06:45
Автор: void <Grebnev Valery> Статус: Elderman
|
syntax to use near '')л' at line 1' on query.
У меня на прошлой неделе была похожая ошибка. Оказалось, 5.0.34 некорректно пишет bin-log: если stored procedure имеет один из аргументов BIT(1), то запросы в bin-log содержат случайные символы для этой константы. Как следствие, slave не может выполнить relay лог. Вылечил заменой аргументов BIT(1) на TINYINT(1) во всех SP.
> Вопросы: > 1. Можно ли как-то поредактировать бинарный лог, чтобы > убрать/поправить некорректно пришедший запрос? > 2. Можно ли как-то откатиться по бинарному логу > server1-bin.000008, и заново его передать?
Мне самому интересно %).
По 1) думаю да (binary log - там ведь текстовый файл по существу)
По 2) думаю нет.
|
|
вот что было 18.05.07 17:29
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
|
В момент ротации relay-log произошла запись в него (странно - как-то такое получилось) и конец запроса не был записан.
Решил проблему путем отключения bin-log на принимающем сервере и выполнения побитого запроса (отключение лога для того чтобы это изменение не передалось на второй сервер) и вручную передвинул идентификатор последней выполненной репликации (файл relay-log.info)
|
|
|