我已经管理一个站点很长时间了,所以数据库仍然使用MyISAM作为数据库引擎。因此,现在我使用mysql 8.0.19(在5.7之前)将该站点转移到新服务器上,我想知道是否需要切换到InnoDB。
如果是,如何备份innodb db?与使用mysqldump的MyISAM有什么不同吗?我可以在站点处于活动状态时进行备份吗?
我这么问是因为我读了这个(WordPress use innodb by default?): 在备份Wordpress站点时,这很重要。我通过艰苦的方式学会了这一点。如果数据库是innodb,那么R1云还原类型备份不会保存所有数据,因为必须先关闭它才能进行备份。而MYISAM可以备份,没有问题。
Update info for @gordan-bobic
| wp_comments | CREATE TABLE `wp_comments` (
`comment_ID` bigint unsigned NOT NULL AUTO_INCREMENT,
`comment_post_ID` bigint unsigned NOT NULL DEFAULT \'0\',
`comment_author` tinytext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`comment_author_email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT \'\',
`comment_author_url` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT \'\',
`comment_author_IP` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT \'\',
`comment_date` datetime NOT NULL DEFAULT \'0000-00-00 00:00:00\',
`comment_date_gmt` datetime NOT NULL DEFAULT \'0000-00-00 00:00:00\',
`comment_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`comment_karma` int NOT NULL DEFAULT \'0\',
`comment_approved` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT \'1\',
`comment_agent` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT \'\',
`comment_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT \'\',
`comment_parent` bigint unsigned NOT NULL DEFAULT \'0\',
`user_id` bigint unsigned NOT NULL DEFAULT \'0\',
PRIMARY KEY (`comment_ID`),
KEY `comment_post_ID` (`comment_post_ID`),
KEY `comment_approved_date_gmt` (`comment_approved`,`comment_date_gmt`),
KEY `comment_date_gmt` (`comment_date_gmt`),
KEY `comment_parent` (`comment_parent`),
KEY `comment_author_email` (`comment_author_email`(10))
) ENGINE=MyISAM AUTO_INCREMENT=16593 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci |
更新2
@gordan bobic I更新了我的。cnf移除NO_ZERO_IN_DATE, NO_ZERO_DATE
使用这个指南是有效的https://ixnfo.com/en/the-solution-of-error-error-1067-42000-at-line-211-invalid-default-value-for-blablabla.html
因此,基本上,这就是我在安装时所做的:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
使用此命令show variables like \'sql_mode\';
所以我更新了我的。具有以下内容的cnf文件:sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
然后,我使用命令将这些表转换为InnoDB,结果成功了。