文档章节

Ghost博客数据库迁移至MySQL

陈袁at互联
 陈袁at互联
发布于 2015/12/27 11:16
字数 1212
阅读 100
收藏 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互联
粉丝 52
博文 41
码字总数 26406
作品 0
深圳
高级程序员
私信 提问
浅谈:node快速搭建个人博客

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

mosaic101
2016/01/06
1K
0
使用DaoCloud一键搭建Wordpress/Ghost博客

零成本,免费空间,直接使用当今最火的Docker搭建Wordpress/Ghost博客,不用学习docker,可以一键搭建。 Docker的热门同样在国内也催生了众多的基于了Docker技术的服务,本文要介绍的DaoClou...

zaixianle
2015/10/05
2.8K
1
从升级Ghost博客到迁移Hexo文章

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

GISCAFF
2017/12/03
0
0
Ghost 2.28.0 发布,现代化在线写作平台

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

h4cd
12/13
0
0
GitHub 的 MySQL 基础架构自动化测试

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

tomkrouper, Shlomi Noach
2017/10/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Eos如何删除钱包

在使用Eos的keosd钱包软件时,如果要删除EOS中指定名称的钱包,最简单的办法是直接删除钱包文件,不过在删除钱包之前,需要先停止钱包软件的运行。 学习EOS应用开发要选这个:【EOS智能合约与...

geek12345
13分钟前
1
0
js操作时间

获取当前时间 function getSystemDate(){ var systemDate = new Date(); // 获取当年 var year = systemDate.getFullYear(); // 获取当月 (月+1是因为js中......

简心
20分钟前
2
0
区块链开发教程推荐

区块链的重要性已经毋庸置疑,但对大多数跃跃欲试的开发者而言,去中心化思想、非对称加密、共识算法等技术点的理解和运用,都是入门区块链开发的挑战。合适的区块链开发教程可以极大地缩短区...

笔阁
20分钟前
1
0
菜单menuView总结

1、FTPopOverMenu

_____1____
31分钟前
3
0
MyEclipse教程:Web开发——部署和测试Web项目

MyEclipse 在线订购年终抄底促销!火爆开抢>> MyEclipse最新版下载 本教程向用户展示了使用关联的Web项目创建Web片段项目的机制。用户还可以获得要检查的示例项目。在本教程中,用户将学习如...

电池盒
47分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部