操作环境:
操作系统:Linux CentOS 8.0
数据库:mysql 8.0
站点备份的目的:
1.提前为站点未来可能迁移服务器做好准备。
2.考虑到站点被入侵、攻击、销毁数据的可能,提前做好数据备份,出现问题可及时进行还原。
3.个人心态原因,重要数据和好东西不实实在在”拿“在自己手里不放心。
站点备份的思路:
站点设置、图片资源等数据:使用Halo自带备份还原功能。
站点数据库:由于本人使用的为mysql,故使用mysql本身的备份还原指令,将数据库导出为.sql文件后进行备份还原。
Halo配置文件:直接下载保存备份。
站点备份及还原的过程:
旧服务器备份:
1.备份Halo站点设置、图片资源等数据。后台使用Halo自带备份功能进行备份,得到一个.zip格式压缩包,该压缩包主要包含站点的设置、保存的图片、安装的插件等。
2.备份Halo配置文件。进入服务器,在“.halo2文件夹”内将Halo配置文件“application.yaml”下载保存,该配置文件主要作用为数据库及站点相关设置,具体代码如下:
注:.halo2文件夹
”为隐藏文件夹,用于存放上传的图片、备份等文件。一般位于创建该文件夹及运行Halo站点时的用户所在目录下。例如创建该文件夹及运行Halo站点的用户为非root账户,则该配置文件的路径为/home/系统用户名/application.yaml。如创建该文件夹及运行Halo站点的用户为root账户,则该配置文件的路径为/root/.halo2/application.yaml。
server:
port: 8090 #运行端口
spring:
#数据库配置,支持 MySQL、MariaDB、PostgreSQL、H2 Database
r2dbc:
url: r2dbc:h2:file://${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE
username: admin #数据库账户
password: 123456 #数据库密码
sql:
init:
mode: always
platform: h2 #数据库类型
halo:
caches:
page:
disabled: true #是否禁用页面缓存
work-dir: ${user.home}/.halo2 #工作目录位置
external-url: http://localhost:8090 #站点外部访问地址
# 附件映射配置,通常用于迁移场景
attachment:
resource-mappings:
- pathPattern: /upload/**
locations:
- migrate-from-1.x
#-------------以上为配置文件代码,以下为备注提示--------------
#spring.r2dbc.url 数据库连接地址(指代码中r2dbc结构下需填写的参数,例如设置为mysql数据库则填入r2dbc:pool:mysql://你的服务器地址:3306/halodb(数据库名)
#spring.r2dbc.username 数据库用户名
#spring.r2dbc.password 数据库密码
#spring.sql.init.platform 数据库平台名称,支持 postgresql、mysql、mariadb、h2,需要使用哪个数据库则填写对应的数据库名称参数
#PostgreSQL数据库设置标准:
#r2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE} postgresql
#MySQL数据库设置标准:
#r2dbc:pool:mysql://{HOST}:{PORT}/{DATABASE} mysql
#MariaDB数据库设置标准:
#r2dbc:pool:mariadb://{HOST}:{PORT}/{DATABASE} mariadb
#H2 Database数据库设置标准:
#r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE h2
3.备份mysql数据库。进入服务器,执行mysql备份指令并将生成的sql文件保存。(需牢记数据库名,因为还原时需要先创建数据库,此时数据库名称必须保持一致):
代码语言:javascript复制mysqldump -uUser -pAdmin123 halodb > /var/www/halodb.sql
/*
mysqldump -u数据库账号 -p数据库密码 数据库名 > 文件路径和文件名.sql
*/
服务器还原(假设该服务器已运行Halo站点,但旧服务器数据未迁移过来):
1、mysql放行3306端口外部访问。此时站点默认使用的数据库为h2数据库,假如你需要使用mysql数据库,则还需要进入服务器安装mysql,然后设置mysql放行3306端口外部访问:
代码语言:javascript复制/*使用mysql数据库管理账户登入mysql*/
mysql -u root -p
/*让MySQL 8.0对root账户开放外部访问3306端口。依次执行*/
create user user@'%' identified by '123'; /*此处user和123为你的数据库账户密码*/
grant all privileges on *.* to root@'%' with grant option;
FLUSH PRIVILEGES;
2.创建数据库。在mysql数据库中创建名为halodb的数据库:
代码语言:javascript复制/*#使用mysql数据库管理账户登入mysql*/
mysql -u root -p
/*创建数据库(数据库名需与备份数据库名一致)*/
create database halodb character set utf8mb4 collate utf8mb4_bin;
/*halodb为要创建的数据库名*/
3、删除h2数据库文件。进入.halo2/db/目录下,如果存在”halo-next.mv.db“文件则删除该文件,该文件为Halo站点默认的h2数据库文件。
4.还原数据库。将备份的.sql文件上传至服务器(假设这里我将文件上传至/var/www/路径):
代码语言:javascript复制/*使用mysql数据库管理账户登入mysql*/
mysql -u root -p
/*切换到创建的数据库*/
USE halodb; /*halodb为要创建的数据库名*/
/*执行数据库还原*/
SOURCE /var/www/halodb.sql; /*路径 .sql文件名*/
/*还原成功的提示信息*/
/*
Query OK, 0 rows affected (0.00 sec)
Records: 241 Duplicates: 0 Warnings: 0
*/
5.还原Halo配置文件“application.yaml”。进入”.halo2文件夹“,将“application.yaml”替换为备份的“application.yaml”。
6.重新编译运行Halo站点。如果你是以.service服务开机自启动运行Halo站点,则执行以下代码进行重启服务:
代码语言:javascript复制#重启服务。因Halo项目编译运行较慢,还需等待1分钟左右(视服务器配置决定)
sudo systemctl restart halo.service #halo.service为你的halo服务名
7.恢复Halo站点设置、图片资源数据及相关插件。进入Halo后台初始化,初始化完成后进入后台”概览“查看数据库是否成功切换为mysql,接着使用Halo自带的备份功能还原站点设置、图片资源数据及相关插件相关数据。至此,Halo站点已全部迁移还原完成。