BoyChai's Blog - typecho 2022-06-19T07:07:00+00:00 Typecho https://blog.boychai.xyz/index.php/feed/atom/tag/typecho/ <![CDATA[[排错笔记]TYPECHO折腾日记]]> https://blog.boychai.xyz/index.php/archives/18/ 2022-06-19T07:07:00+00:00 2022-06-19T07:07:00+00:00 BoyChai https://blog.boychai.xyz 数据库迁移

起因

本站用的服务器是腾讯云的轻量应用服务器,规格是2核4G8M的,前些日子开了一个游戏服务器和朋友联机,发现这个内存跑到3000左右的时候就会变的比较卡,到3500左右就会直接死机,当时就想着给服务器优化一下

环境

当时我服务器运行了typecho、harbor、gogs、Jenkins、游戏服务器、还有一些我自己写的后端程序,都在docker上运行,其中typecho、gogs的数据库都是运行单独的mysql5.7,端口不往公网暴露,然后还有一个mysql8.0对外暴露给我自己用,一共是三个,当时就寻思把gogs和typecho的迁移到8.0里面

第一次迁移

当开始迁移的时候我是直接使用DataGrip把老的数据库表拖拽到新数据表里面,修改好网站的数据地址之后基本没有任何问题,之后就没怎么在意。

第二次迁移

当我想要发布一次文章的时候出现了报错。

typecho01

找了好久的问题也没找到,当时就没想过是数据库的问题,重新部署了很多遍的typecho,一直是没有找到问题,一直到我打算重新部署一个数据库的时候我发现迁移之后的数据库他的主键自增索引什么的全都没有了,于是就开始第二次迁移。第二次我是使用mysqldump来进行导出,命令如下

mysqldump --defaults-extra-file=/etc/mysql/my.cnf Blog > blog.sql

然后用DataGrip导入的,导入之后数据库的表结构都回来了内容也都有但是前端对接好之后又出现了问题handsome的主题不能恢复备份,emoji表情全部变成问号"?"。

第三次迁移

emoji加载不出来无非就是编码的问题,typecho之前是不支持emoji的,之前我做过数据库字符集的修改,第三次导出的时候还是用mysqldump的方式导出但是命令改成了这样,命令如下

mysqldump --defaults-extra-file=/etc/mysql/my.cnf --default-character-set=utf8mb4  Blog > blog.sql

mysqldump默认导出的字符集为utf8,emoji的字符集需要utf8mb4,使用DataGrip导入之后就没问题了,emoji显示了,handsome主题备份也能恢复了。

]]>