为什么要迁移数据?
原因是这样的。原本呢,是把数据放在了 windows2019 里 hyper-v 虚拟机下的 CentOS-7.6 里的 seafile7.0.6 服务里(有点套娃的感觉)。有一天发现有 7.1 版本可以升级。于是手痒,也没看升级说明就一顿骚操作。升级之后打开网页端直接给我报 502。然后就去看官方的指导说明了。一看被惊到了,一个小版本,居然搞那么多升级,就连依赖的 python 也从 v2.7,升级到了 v3。当然我的 python 的升级还是很顺畅的。报 502 的原因是 seafile7.1 的 nginx 反代模式也做了变更。至于为什么非得迁移,还有个原因值得说明的是,就在这之前几天,我的两台 windows 服务器居然被勒索了。实在是气啊。于是,为了数据的安全起见。我决定直接转移到物理机下部署 Seafile(至少不怕被勒索了)。于是就发生了接下来要讲的故事。
备份资料到共享服务器
1.备份 seafile-data 目录到我的 windows 搭建的共享服务器中
#安装 mount.cifs yum install mount.cifs -y #创建临时挂在目录 mkdir /mnt/data #挂在共享目录到/mnt/data 目录下 mount.cifs //10.10.0.254/seafilebackup /mnt/data -o username='administrator',password='password' #复制 seafile 的数据到 windows 共享里 cp /opt/seafile/seafile-data /mnt/data/
2.备份数据库
mysqldump --opt ccnet_db > /mnt/data/databases/ccnet_db.sql.`date +"%Y-%m-%d-%H-%M-%S"` mysqldump --opt seafile_db > /mnt/data/databases/seafile_db.sql.`date +"%Y-%m-%d-%H-%M-%S"` mysqldump --opt seahub-db > /mnt/data/databases/seahub_db.sql.`date +"%Y-%m-%d-%H-%M-%S"`
seafile 数据和数据库都已经备份完毕,先不要急着销毁服务器。万一数据恢复时出问题呢。数据还在就多一份保障。
目标服务器准备
操作系统:CentOS-8.1(操作系统的安装没什么可说的)
技术有限+人比较懒
使用官方一件脚本搭建好 seafile7.1.5 (建议有能力的在全局番羽土啬环境搭建,因为在国内环境直接下载 python 的时候,网速超级慢,容易导致安装失败)
wget --no-check-certificate https://raw.githubusercontent.com/haiwen/seafile-server-installer/master/seafile-8.0_centos bash seafile-8.0_centos 7.1.5 reboot
安装 mount.cifs
yum install mount.cifs -y
安装 ntfs-3g(用来挂载 NTFS 磁盘专门存储数据)
yum install ntfs-3g -y
如果直接 yum 安装失败的话,可以参考CentOS 8 挂载 NTFS 系统磁盘方案来编译安装
挂载磁盘
查看新磁盘
df
我的磁盘是 sdb1,图片是挂在之后截取的,只是多显示了挂载点而已
停止 seafile
/opt/seafile/seafile-server-latest/seahub.sh stop /opt/seafile/seafile-server-latest/seafile.sh stop
删除原数据文件
rm -rf /opt/seafile/seafile-data/*
把磁盘挂载到 seafile-data 目录
mount /dev/sdb1 /opt/seafile/seafile-data
查看挂载是否生效
lsblk
显示如下表示已经生效
复制数据
mkdir /mnt/data mount.cifs //10.0.0.254/seafilebackup /mnt/data -o username='administrator',password='password' cp -rf /mnt/data/seafilebackup/seafile-data/* /opt/seafile/seafile-data/
启动 seafile
/opt/seafile/seafile-server-latest/seafile.sh start /opt/seafile/seafile-server-latest/seahub.sh start
恢复数据库
如果有备份多份数据库,注意源数据库后缀的日期(下面的*号内容的选择)选择相应数据库
mysql ccnet_db < /mnt/data/databases/ccnet_db.sql.* mysql seafile_db < /mnt/data/databases/seafile_db.sql.* mysql seahub-db < /mnt/data/databases/seahub_db.sql.* reboot
数据迁移完成!
/opt/seafile/seafile-server-latest/reset-admin.sh
补充
完成迁移后发现 seafile 没有开机自启动。我的解决办法是写脚本添加启动项
vi /etc/init.d/auto_seafile.sh
脚本内容如下
#!/bin/sh #chkconfig:2345 80 90 #description:auto_seafile /opt/seafile/seafile-server-latest/seafile.sh start /opt/seafile/seafile-server-latest/seahub.sh start
给予执行权限
chmod +x /etc/init.d/auto_seafile.sh
添加到开机启动
chkconfig --add auto_seafile.sh
完成以上配置之后,以后重启电脑就不用去手动启动 seafile 了