文档章节

Ghost博客数据库迁移至MySQL

陈袁at互联
 陈袁at互联
发布于 2015/12/27 11:16
字数 1212
阅读 76
收藏 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互联
粉丝 48
博文 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 1.3.0 发布,现代在线内容专业发布平台

Ghost 1.3.0 已发布,Ghost 是一个简单而强大的开源内容发布平台, 用于构建和运行现代在线出版物,旨在改变改变在线新闻的现状。 Ghost 的编辑环境基于 Markdown ,所有已发布的内容都会存放...

王练
2017/08/02
556
4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Go语言_通神之路(2)

1、包 每个Go程序都是由包构成,从main包开始运行,就是我上一篇讲到的,都是从main函数开始执行,但是必须在main包下面! package mainimport ( "fmt" "math/rand")func ...

木九天
昨天
1
0
51.php-fpm的pool 慢日志 open_basedir 进程管理

12.21 php-fpm的pool 12.22 php-fpm慢执行日志(测试时报错) 12.23 open_basedir 12.24 php-fpm进程管理 12.21 php-fpm的pool: php-fpm里的pool也叫池子,咱们之前加入过www的配置,这个w...

王鑫linux
昨天
0
0
java内存模型概述

1、Java虚拟机运行时数据分区图 程序计数器:线程私有,是一块较小的内存空间,它是当前线程所执行的字节码文件的行号指示器 java虚拟机栈:线程私有,其生命周期与线程相同,这也就是我们平...

京一
昨天
0
0
shell学习之test语法

因为if-then语句不能测试退出状态码之外的条件,所以提供了test, 如果test命令中列出的条件成立,test命令就会退出并返回退出状态码0;如果条件不成立,test命令就会退出并返回非零的退出状态...

woshixin
昨天
0
0
openJDK之如何下载各个版本的openJDK源码

如果我们需要阅读openJDK的源码,那么需要下载,那么该去哪下载呢? 现在JDK已经发展到版本10了,11已经处于计划中,如果需要特定版本的openJDK,它们的下载链接在哪呢? 1.openJDK的项目 链接...

汉斯-冯-拉特
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部