数据迁移
本文介绍如何在更换设备时迁移 Blossom
注意
为保证数据安全,请在迁移成功后再删除旧设备的所有数据。
一、数据库
导出数据库文件
将 blossom 导出到当前执行命令路径下(路径可以是任意路径),文件名可自定义,例如:blossom_backup.sql
。
sql
mysqldump -u root -p blossom > blossom_backup.sql
mysqldump -u root -p blossom > blossom_backup.sql
Docker 导出数据库
首先进入到数据库容器,然后执行命令,本例子在 /home/bl 路径下执行相关命令
sql
mysqldump -u root -p blossom > blossom_backup.sql
mysqldump -u root -p blossom > blossom_backup.sql
然后回到宿主机,执行 docker 命令,将容器内的文件复制到宿主机
bash
// 注意
// 将下方的 19ceb326c 替换成你容器的名称
// 将下方的 /home/bl/blossom_back.sql 替换成你在容器内的备份路径
// 将下方的 /home/backup 替换成你宿主机的某个路径
docker cp 19ceb326c:/home/bl/blossom_back.sql /home/backup
// 注意
// 将下方的 19ceb326c 替换成你容器的名称
// 将下方的 /home/bl/blossom_back.sql 替换成你在容器内的备份路径
// 将下方的 /home/backup 替换成你宿主机的某个路径
docker cp 19ceb326c:/home/bl/blossom_back.sql /home/backup
提示
你也可以使用其他可视化工具导出数据库,会更加方便。
导入数据库文件
在新设备上安装数据库后,复制 blossom_backup.sql 文件到设备路径下,执行以下命令
sql
-- 将当前路径下的 blossom_backup.sql 导入到 blossom
mysql -u root -p blossom < blossom_backup.sql
-- 将当前路径下的 blossom_backup.sql 导入到 blossom
mysql -u root -p blossom < blossom_backup.sql
Docker 导入数据库
将备份文件导入到容器
bash
// 注意
// 将下方的 19ceb326c 替换成你容器的名称
// 将下方的 /home/backup:blossom_back.sql 替换成你宿主机存放备份文件的路径
// 将下方的 /home/bl 替换成你在容器内的备份路径
docker cp /home/backup:blossom_back.sql 19ceb326c:/home/bl
// 注意
// 将下方的 19ceb326c 替换成你容器的名称
// 将下方的 /home/backup:blossom_back.sql 替换成你宿主机存放备份文件的路径
// 将下方的 /home/bl 替换成你在容器内的备份路径
docker cp /home/backup:blossom_back.sql 19ceb326c:/home/bl
然后进入到容器的 /home/bl 路径下,执行以下命令
sql
mysql -u root -p blossom < blossom_backup.sql
mysql -u root -p blossom < blossom_backup.sql
导入后检查数据库数据是否正确。
注意
如果使用 Docker,不建议复制数据库的挂载文件,可能会有意料之外的错误出现。
二、迁移图片
将保存图片的迁移到新设备,可以将图片文件夹压缩后复制到新设备解压,注意路径要与原设备路径相同。
注意
如果使用 Docker,挂载路径可以不同,但容器内的路径不能改变。
例如启动容器时的命令如下:
bash
docker run -d
# 设置容器的挂载路径
# 冒号后的路径不可以变更,冒号前的路径可以变更
-v /home/bltest/:/home/bl/
docker run -d
# 设置容器的挂载路径
# 冒号后的路径不可以变更,冒号前的路径可以变更
-v /home/bltest/:/home/bl/
迁移时,将挂载的文件夹 /home/bltest/
压缩后复制到新设备解压即可。
三、在新设备部署应用
最后在新设备部署应用即可。
四、修改旧链接地址
提示
如果你使用固定的域名访问,并且在迁移后访问域名无变化,则无需关注本步骤。
如果你使用 IP 访问,并且在更换设备后 IP 出现变化,你需要修改文章中的图片链接。
你需要链接到数据库,依次执行以下语句。注意,执行前,不要删除备份文件!以防修改失败时还原数据库。
sql
-- 将下方的地址替换成【旧】的图片地址前缀
set @old_domain = 'https://blossom.xxxxold.xxx/pic';
-- 将下方的地址替换成【新】的图片地址前缀
set @new_domain = 'https://blossom.xxxxnew.xxx/pic';
update blossom_article set markdown = REPLACE(markdown, @old_domain, @new_domain),html = REPLACE(html, @old_domain, @new_domain) where markdown LIKE concat('%',@old_domain,'%');
update blossom_article_open set markdown = REPLACE(markdown, @old_domain, @new_domain),html = REPLACE(html, @old_domain, @new_domain) where markdown LIKE concat('%',@old_domain,'%');
update blossom_article_reference set target_url = REPLACE(target_url, @old_domain, @new_domain) where target_url LIKE concat('%',@old_domain,'%');
update blossom_picture set url = REPLACE(url, @old_domain, @new_domain) where url LIKE concat('%',@old_domain,'%');
-- 将下方的地址替换成【旧】的图片地址前缀
set @old_domain = 'https://blossom.xxxxold.xxx/pic';
-- 将下方的地址替换成【新】的图片地址前缀
set @new_domain = 'https://blossom.xxxxnew.xxx/pic';
update blossom_article set markdown = REPLACE(markdown, @old_domain, @new_domain),html = REPLACE(html, @old_domain, @new_domain) where markdown LIKE concat('%',@old_domain,'%');
update blossom_article_open set markdown = REPLACE(markdown, @old_domain, @new_domain),html = REPLACE(html, @old_domain, @new_domain) where markdown LIKE concat('%',@old_domain,'%');
update blossom_article_reference set target_url = REPLACE(target_url, @old_domain, @new_domain) where target_url LIKE concat('%',@old_domain,'%');
update blossom_picture set url = REPLACE(url, @old_domain, @new_domain) where url LIKE concat('%',@old_domain,'%');
然后进入客户端,修改服务器设置中的文件访问地址,以及博客配置中的文章查看地址。