Halo站点全站备份及还原

2024-03-12 11:28:38 浏览数 (2)

操作环境:

操作系统: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。

代码语言:javascript复制
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站点已全部迁移还原完成。

0 人点赞