文档章节

Ghost博客数据库迁移至MySQL

陈袁at互联
 陈袁at互联
发布于 2015/12/27 11:16
字数 1212
阅读 66
收藏 0
点赞 1
评论 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互联
粉丝 47
博文 41
码字总数 26406
作品 0
深圳
高级程序员
从升级Ghost博客到迁移Hexo文章

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

GISCAFF ⋅ 2017/12/03 ⋅ 0

浅谈:node快速搭建个人博客

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

mosaic101 ⋅ 2016/01/06 ⋅ 0

GitHub 的 MySQL 基础架构自动化测试

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

tomkrouper, Shlomi Noach ⋅ 2017/10/16 ⋅ 0

centos7.3上快速搭建ghost博客

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

漫游人 ⋅ 05/01 ⋅ 0

Ghost 1.3.0 发布,现代在线内容专业发布平台

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

王练 ⋅ 2017/08/02 ⋅ 4

在CentOS上搭建基于Nodejs的Ghost博客

Ghost介绍 搭建Ghost博客系统 1、本机测试环境 2、 安装Node.js #通过node -v 和npm -v命令查看是否安装成功。 3.、安装 ghost ①安装 Ghost Client (ghost-cli) ②添加 Ghost 运行用户并创...

明成51xit ⋅ 04/23 ⋅ 0

生存还是毁灭 CouchDB遭遇滑铁卢

曾几何时,许多公司或机构都热衷于从关系型数据库迁移到NoSQL数据库。而现在却出现了许多相反的情况,Sauce实验室就是一个典例。 CouchDB是一个面向文档的NoSQL数据库,适用于主流的Unix/Li...

oschina ⋅ 2012/05/21 ⋅ 20

EF架构~migration对mysql数据库的迁移

ef这个orm工具确实强大,无论在实体建模还是在实体关系上,都发挥的很出色,而最近的code first针对数据库变更的使用更让我眼前一亮,先不说对sqlserver的支持,因为mssql本身就是微软的,我...

mcy247 ⋅ 2017/12/05 ⋅ 0

Ghost 博客系统终极安装教程,装不上来打我!

先放出Ghost博客项目地址:https://github.com/tryghost/Ghost 前言 Ghost这个博客系统可真是难装,第一次装失败后放弃了一段时间,转而用的JustWriting,但是这个系统也太精简了......之后我...

Kernel开发者 ⋅ 2016/01/09 ⋅ 0

四、创建后台管理账号、迁移数据库

四、创建后台管理账号、迁移数据库 前面三个应用的模型都创建好了,现在需要把它们迁移至数据库 python manage.py makmigrations python manage.py migrate 数据库迁移完毕后,每个应用的mig...

Treehl ⋅ 05/03 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringCloud 微服务 (六) 服务通信 RestTemplate

壹 通信的方式主要有两种,Http 和 RPC SpringCloud使用的是Http方式通信, Dubbo的通信方式是RPC 记录学习SpringCloud的restful方式: RestTemplate (本篇)、Feign 贰 RestTemplate 类似 Http...

___大侠 ⋅ 5分钟前 ⋅ 0

React创建组件的三种方式

1.无状态函数式组建 无状态函数式组件,也就是你无法使用State,也无法使用组件的生命周期方法,这就决定了函数组件都是展示性组件,接收Props,渲染DOM,而不关注其他逻辑。 无状态函数式组...

kimyeongnam ⋅ 11分钟前 ⋅ 0

react 判断实例类型

今天在写组件的时候想通过判断内部子元素不同而在父元素上应用不同的class,于是首先要解决的就是如何判断子元素的类型。 这里附上一个讲的很全面的文章: https://www.cnblogs.com/onepixel...

球球 ⋅ 18分钟前 ⋅ 0

Centos7备份数据到百度网盘

一、关于 有时候我们需要进行数据备份,如果能自动将数据备份到百度网盘,那将会非常方便。百度网盘有较大的存储空间,而且不怕数据丢失,安全可靠。下面简单的总结一下如何使用 bypy 实现百...

zctzl ⋅ 32分钟前 ⋅ 0

开启远程SSH

SSH默认没有开启账号密码登陆,需要再配置表中修改: vim /etc/ssh/sshd_configPermitRootLogin yes #是否可以使用root账户登陆PasswordAuthentication yes #是都开启密码登陆ser...

Kefy ⋅ 35分钟前 ⋅ 0

Zookeeper3.4.11+Hadoop2.7.6+Hbase2.0.0搭建分布式集群

有段时间没更新博客了,趁着最近有点时间,来完成之前关于集群部署方面的知识。今天主要讲一讲Zookeeper+Hadoop+Hbase分布式集群的搭建,在我前几篇的集群搭建的博客中已经分别讲过了Zookeep...

海岸线的曙光 ⋅ 42分钟前 ⋅ 0

js保留两位小数方法总结

本文是小编针对js保留两位小数这个大家经常遇到的经典问题整理了在各种情况下的函数写法以及遇到问题的分析,以下是全部内容: 一、我们首先从经典的“四舍五入”算法讲起 1、四舍五入的情况...

孟飞阳 ⋅ 今天 ⋅ 0

python log

python log 处理方式 log_demo.py: 日志代码。 #! /usr/bin/env python# -*- coding: utf-8 -*-# __author__ = "Q1mi""""logging配置"""import osimport logging.config# 定义三种......

inidcard ⋅ 今天 ⋅ 0

mysql 中的信息数据库以及 shell 查询 sql

Information_schema 是 MySQL 自带的信息数据库,里面的“表”保存着服务器当前的实时信息。它提供了访问数据库元数据的方式。 什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,...

blackfoxya ⋅ 今天 ⋅ 0

maven配置阿里云镜像享受飞的感觉

1.在maven目录下的conf/setting.xml中找到mirrors添加如下内容,对所有使用改maven打包的项目生效。 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.al......

kalnkaya ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部