Возникла необходимость провести подобную миграцию серверов.
Всё перенеслось без проблем, и Samba шары и апач.
Но при переносе баз MySQL методом mysqldump > mysql при импорте постоянно идут ошибки.
Насколько я понимаю - у серверов разных версий несколько различаются форматы данных, по этой причине и идут ошибки (и при создании таблиц и при импорте данных).
Естественно возникает вопрос: - как всё таки перенести базы?
Надеюсь, что кто-то уже сталкивался и успешно решил проблему.
Миграция MySQL между CentOS 5.7 MySQL 5.0.27 и CentOS 6.3 MySQL 5.5.25
Ошибки-то покажете?
Upgrading MySQL from 5.0.x to 5.1.x здесь наглядно описывают процедуру обновления.
Ошибки-то покажете?
Да, пожалуйста:
как пример...
18:42:51 Restoring C:\MysqlBasesbackup\Dump20120716.sql
Running: mysql.exe --defaults-extra-file="c:\users\pe03a~1.kos\appdata\local\temp\tmpt8rfto.cnf" --protocol=tcp --host=localhost --user=root --port=13945 --default-character-set=utf8 --comments < "C:\\MysqlBasesbackup\\Dump20120716.sql"
ERROR 1067 (42000) at line 918: Invalid default value for 'QUANTITY'
Operation failed with exitcode 1
18:42:55 Import of C:\MysqlBasesbackup\Dump20120716.sql has finished with 1 errors
И + блок из дампа, начинающийся с 918й строки:
Показать
`ID` int(11) NOT NULL auto_increment,
`FUSER_ID` int(11) NOT NULL,
`ORDER_ID` int(11) default NULL,
`PRODUCT_ID` int(11) NOT NULL,
`PRODUCT_PRICE_ID` int(11) default NULL,
`PRICE` decimal(18,2) NOT NULL,
`CURRENCY` char(3) collate utf8_unicode_ci NOT NULL,
`DATE_INSERT` datetime NOT NULL,
`DATE_UPDATE` datetime NOT NULL,
`WEIGHT` double(18,2) default NULL,
`QUANTITY` double(18,2) NOT NULL default '0,00',
`LID` char(2) collate utf8_unicode_ci NOT NULL,
`DELAY` char(1) collate utf8_unicode_ci NOT NULL default 'N',
`NAME` varchar(255) collate utf8_unicode_ci NOT NULL,
`CAN_BUY` char(1) collate utf8_unicode_ci NOT NULL default 'Y',
`MODULE` varchar(100) collate utf8_unicode_ci default NULL,
`CALLBACK_FUNC` varchar(100) collate utf8_unicode_ci default NULL,
`NOTES` varchar(250) collate utf8_unicode_ci default NULL,
`ORDER_CALLBACK_FUNC` varchar(100) collate utf8_unicode_ci default NULL,
`DETAIL_PAGE_URL` varchar(250) collate utf8_unicode_ci default NULL,
`DISCOUNT_PRICE` decimal(18,2) NOT NULL default '0.00',
`CANCEL_CALLBACK_FUNC` varchar(100) collate utf8_unicode_ci default NULL,
`PAY_CALLBACK_FUNC` varchar(100) collate utf8_unicode_ci default NULL,
`CATALOG_XML_ID` varchar(100) collate utf8_unicode_ci default NULL,
`PRODUCT_XML_ID` varchar(100) collate utf8_unicode_ci default NULL,
`DISCOUNT_NAME` varchar(255) collate utf8_unicode_ci default NULL,
`DISCOUNT_VALUE` char(32) collate utf8_unicode_ci default NULL,
`DISCOUNT_COUPON` char(32) collate utf8_unicode_ci default NULL,
`VAT_RATE` decimal(18,2) default '0.00',
PRIMARY KEY (`ID`),
KEY `IXS_BASKET_LID` (`LID`),
KEY `IXS_BASKET_USER_ID` (`FUSER_ID`),
KEY `IXS_BASKET_ORDER_ID` (`ORDER_ID`),
KEY `IXS_BASKET_PRODUCT_ID` (`PRODUCT_ID`),
KEY `IXS_BASKET_PRODUCT_PRICE_ID` (`PRODUCT_PRICE_ID`),
KEY `IXS_SBAS_XML_ID` (`PRODUCT_XML_ID`,`CATALOG_XML_ID`)
) ENGINE=MyISAM AUTO_INCREMENT=111 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
делал через через Mysqlworkbench 5.2
[quote=Hrafn]Ошибки-то покажете?
Да, пожалуйста:
как пример...
[/quote]
Я бы сделал в новой базе таблицу с аналогичной структурой и сохранил бы её в дамп. А потом - сравнил бы различия...
Сделал менее изящно, чем хотелось бы, но работает:
Перенёс все бинарные файлы из /var/lib/mysql, старые перед этим перенес в резервную копию
Сервер вполне удачно стартовал.
Далее через Phpmyadmin проверил все таблицы в базах, при выдаче сообщения об ошибках следующим шагом восстанавливал.