文档章节

Ghost博客数据库迁移至MySQL

陈袁at互联
 陈袁at互联
发布于 2015/12/27 11:16
字数 1212
阅读 82
收藏 0

为什么要迁移数据库?

刚刚开始,这个博客是由Ghost + CentOS7 + sqlite3 搭建的。然而自己对于sqlite3不是特别的熟悉,所以决定,将其迁移至MySQL来。但是在迁移的过程中,还不是那么的顺利,就用笔记记录下来吧。

升级阿里云的配置

之前购买的虚拟云主机是最低配置的,1核 + 512M内存。这个配置基本也就能刚好跑跑一个Ghost。因为当时的内存使用率基本就到了90%左右,所以在安装mysql的时候,直接就报错,内存不够,所以,就把当前的云主机升级为了1核 + 1GB内存。费用由原来的每个月30RMB多到了50RMB多,其他厂家的云主机的价格都感觉差不多,阿里的技术我比较信赖,毕竟在11.11这么大并发的情况下,可能抗住。是一个伟大的公司,值得所有人的敬佩。

升级完后,需要在控制台重启机器,配置才会得到更新,其他的方式,介绍说不可以。

安装mysql

按照以前的方式安装mysql竟然不行了,原因是因为系统是CentOS7的。

如何查看系统的相关信息呢?

[cyblogs@iZ94tq694y3Z ~]$ cat /etc/redhat-release 
CentOS Linux release 7.0.1406 (Core) 

系统原来是当时买云主机的时候选择的。

回顾一下原来是如何安装mysql on CentOS的

yum install mysql mysql-server mysql-devel

但是运行下来,发现报错,说mysql-server没有找到,所以这里就安装失败了。通过查阅资料,找到了正确的安装操作说明。

1、- We use Yum to Remove MySQL, like so: yum remove mysql mysql-server

2、- With MySQL removed, we can safely backup the configuration: mv /var/lib/mysql /var/lib/mysql_old_backup If you'd rather remove it, issue: rm -vR /var/lib/mysql

3、- Now we can safely reinstall MySQL, using the default configuration that is included in the package from the Official MySQL repository (we need wget to fetch the rpm that will update your repos):

4、- yum install wget

5、- Verify the repositories are installed: ls -1 /etc/yum.repos.d/mysql-community*

  • Issue the actual install command (This will replace the mysql-server in the CentOS repository with the official package from upstream MySQL):
  • yum install mysql-server

6、- Use the script provided to set the root password, now that we have a fresh install again: mysql_secure_installation

7、- If you ever need to set the password after using the script, use: mysql -u root

8、- Now you can use the standard commands from systemctl, part of systemd to Start and Stop the daemon like so:

  • systemctl start mysqld

按照上面的步骤一步步的操作,应该没有什么太大的问题。因为,我已经安装成功了。

给用户设置密码以及赋予权限

mysqladmin -u root password root (自己的密码)

grant replication slave on *.* to 'root'@'%' identified by 'root';

此时,基本在mysql这一步就OK了。自己可以尝试着登录,操作sql语句查看一些一些表的信息。

备份之前sqlite3的数据,方便后面的重新导入。

输入 http://hostname/ghost/settings/labs/ 可以看到这个页面。 image 点击Export就可以导出数据了,文件名字是这样子的mr-chen.ghost.2015-11-21.json数据JSON格式的数据。

修改Ghost的配置文件

之前用sqlite3的配置 config.js 中的production模块

	database: {
   	client: 'sqlite3',
            connection: {
                filename: path.join(__dirname, '/content/data/ghost.db')
            },
            debug: false
        },
        

修改成mysql的配置

database: {
            client: 'mysql',
            connection: {
                host: 'localhost',
                user: 'root',
                password: 'root',
                database: 'cyblogs',
                charset: 'utf8'
            },
            debug: false
        },

然后将文件替换掉,重启服务。

如果重启服务后,不能访问,有可能你的iptatles没有开放80端口,需要设置一些防火墙。

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT

然后访问自己的网站,就可以正常的工作了。最后再将输入导入进去,但是发现背景图片与用户自己的头像都丢失了,需要用户自己重新上传。

但是在上传用户头像的时候,ghost报错了。错误提示:

ERROR: ER_TRUNCATED_WRONG_VALUE: Incorrect datetime value: '2015-03-18T02:14:41.000Z' for column 'created_at' at row 1

之后在,gitbub上找到了答案,需要在mysql的配置文件中,重新设置一下。

Hi @keesun, sorry to hear you're having trouble.

Although I've seen this problem before with other software, I've never seen it reported with Ghost before, and I can't find anyone reporting it to >bookshelf or knex either.

Not sure specifically why this is happening to you, but it may be to do with your specific version of MySQL.

The fix is to first locate your my.cnf file (often somewhere like /usr/local/my.cnf /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf).

Then, inside of that file remove STRICT_TRANS_TABLES from the sql-mode line, and restart MySQL. All should then be fine.

I don't think there's an issue here for us to fix. Perhaps we ought to be using timestamp rather than datetime fields, however as it should be easily >fixable with a config change, unless we get lots of people running into this I don't think it needs looking into at this stage. Therefore, I'm going to >close this for now - and if we get more reports we can reopen.

删除掉 STRICT_TRANS_TABLES,然后再重新启动mysql服务就好了。

© 著作权归作者所有

共有 人打赏支持
陈袁at互联
粉丝 51
博文 41
码字总数 26406
作品 0
深圳
高级程序员
从升级Ghost博客到迁移Hexo文章

最近准备更新一些笔记到博客,Ghost博客后台总是提醒升级版本。我也是周末手贱,直接将Ghost 0.11.7升级到Ghost1.18.2。 按照官方给出的文档并配置ghost-cli的步骤,总是卡在后面的安装过程,...

GISCAFF
2017/12/03
0
0
浅谈:node快速搭建个人博客

接触web开发不知不觉也有one year了,虽然每天的工作繁重,但是一直有个信念:做个属于自己的网站!!比较容易入手的项目当然属于个人博客了!在这里分享一下我的心得: 1.博客模板--ghost 提...

mosaic101
2016/01/06
1K
0
GitHub 的 MySQL 基础架构自动化测试

原文出处:tomkrouper, Shlomi Noach 译文出处:Linux中国/MonkeyDEcho 我们 MySQL 数据库基础架构是 Github 关键组件。 MySQL 提供 Github.com、 GitHub 的 API 和验证等等的服务。每一次的...

tomkrouper, Shlomi Noach
2017/10/16
0
0
centos7.3上快速搭建ghost博客

1. 介绍 Ghost 是一套基于 Node.js 构建的开源博客平台,具有易用的书写界面和体验,博客内容默认采用 Markdown 语法书写,目标是取代臃肿的 Wordpress。本篇文章主要是介绍在如何在centos7...

漫游人
06/28
0
0
Ghost 2.2.2 发布,现代化在线写作平台

Ghost 2.2.2 已发布,Ghost 是一个能帮助你快速建立并运行的现代化在线写作平台。它驱动着博客、杂志以及像 Zappos 和 Sky News 等新闻媒体。Ghost 的编辑环境基于 Markdown ,所有已发布的内...

王练
10/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

区块链入门教程以太源码分析accounts包简介

兄弟连区块链教程以太源码分析accounts包简介 accounts包实现了eth客户端的钱包和账户管理。 账号的数据结构: typeAccount struct {Address common.Address `json:"address"` // Ether...

兄弟连区块链入门教程
27分钟前
4
0
sed命令详解及运用

10月17日任务 9.4/9.5 sed 9.3、正则介绍 - sed命令(上) sed是流编辑器,默认不编辑源文件,是以行为单位从源文件抽取数据,进而处理再输出于屏幕上;可能有的人说那我直接vi不就好了嘛,但...

zgxlinux
29分钟前
2
0
iOS App “去评分” 功能的几种实现总结

通常 App 都会在它的设置页面或者关于页面添加一个“去评分”选项,或者在用户使用 App 过程中适当时机弹窗,引导用户跳转到 App Store 对当前 App 进行评分或者撰写评论。 绝大部分 App 实现...

秦无炎
34分钟前
1
0
Chrome 图片解码与 Image Decoding Hint

我在之前的一篇文章Chrome 图片解码与 Image.decode API,说明了为什么图片解码可能会导致非合成器动画的阻塞和如何使用 Image.decode API 来避免动画的阻塞。不过虽然 Image.decode API 给页...

全部原谅
34分钟前
0
0
java获取ip和地区

String s = HttpUtil.sendPost("http://pv.sohu.com/cityjson");JSONObject jsonObject = JSONObject.parseObject(s.substring(s.indexOf("{"), s.indexOf("}") + 1));jsonObject.get("c......

吴伟祥
36分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部