2015-09-28 3 views
0

Я реплицировал свой db на mysql 5.1 в mariadb 10.0. Я установил mariadb 10.0 на подчиненный сервер, возьму резервную копию на mysql 5.1, переместил резервную копию на подчиненный сервер с mariadb 10.0. и настроить репликацию. Все идет хорошо. Но раб застрял в delete_row_event. Я сделал RCA и обнаружил, что в этой таблице был некоторый тип несоответствия данных. Ниже приведена структура таблицы:Репликация из mysql 5.1 в mariadb 10.0

CREATE TABLE gsf ( data_on_date даты по умолчанию NULL, record_timestamp метка времени Ноль По умолчанию CURRENT_TIMESTAMP, WAODate VARCHAR (25) По умолчанию значение NULL, CardNbr VARCHAR (255) По умолчанию NULL, TranAmt флоат УМОЛЧАНИЮ NULL, то TranCode VARCHAR (255) По умолчанию значение NULL, InvoiceNbr VARCHAR (255) По умолчанию значение NULL, MerNo VARCHAR (255) По умолчанию значение NULL, BatchNo VARCHAR (255) По умолчанию значение NULL, GoeRefNum VARCHAR (255) По умолчанию значение NULL, GoeOrderID VARCHAR (255) По умолчанию значение NULL, КЛЮЧ InvoiceNbr (InvoiceNbr) ) ДВИГАТЕЛЬ = MyISAM CHARSET = УМОЛЧАНИЮ latin1 Я

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

На мастер, я выполнил:

MySQL> выберите record_timestamp из GSF, где record_timestamp = 1443078738; Пустой набор, 1 предупреждение (0,38 с)

mysql> показывать предупреждения; + --------- + ------ + ------------------------------- ------------------------------------------------ + | Уровень | Код | Сообщение | + --------- + ------ + ------------------------------- ------------------------------------------------ + | Предупреждение | 1292 | Неверное значение даты и времени: «1443078738» для столбца «record_timestamp» в строке 1 | + --------- + ------ + ------------------------------- ------------------------------------------------ +

На ведомом я выполнил тот же запрос, и он возвращает,

record_timestamp | + --------------------- + | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | + --------------------- + 10 строк в наборе, 1 предупреждение (0.29 сек.)

показать предупреждения; + --------- + ------ + ------------------------------- --------- + | Уровень | Код | Сообщение | + --------- + ------ + ------------------------------- --------- + | Предупреждение | 1292 | Неверное значение даты и времени: '1443078738' |

Я думаю, что переменная конфигурации mariadb 10 выполняет мои данные.

Пожалуйста, помогите мне в этом.

Является ли создание slave от mysql 5.1 до mariadb 10.0 выполнимым?

ответ

0

TIMESTAMP поля ожидаются в формате '2015-09-24 07:12:18'. Вот почему вы получаете предупреждения в MySQL и MariaDB. Запустите запрос с правильным форматированием, и результаты будут одинаковыми для обоих БД - при условии, что импорт также не имеет предупреждений.

Использование FROM_UNIXTIME() для преобразования секунд с 1970 года в формат временной метки:

SELECT FROM_UNIXTIME('1443078738') AS `timestamp`; 

timestamp 
......... 
2015-09-24 07:12:18 

Как я понимаю, MySQL и Мария не обязаны сохранением совместимости. Я бы не удивился, если были несовместимы бинарные журналы. Могли бы вы протестировать более новую версию MySQL или более старую версию MariaDB.