Linux下seafile6.0.7迁移到Docker6.3.4


#1

背景:
一、升级到最新稳定版本(从CentOS 6.0.7,先升级到6.2.x,再升级到6.3.4,再迁移到Docker6.3.4)
二、扩充存储(目前1T,已用700GB,迁移到2T)
服务器A 10.9.156.5、B 10.9.52.215。
A是现有生产环境,B是新开准备迁入机器,二者在一个内网。
A是生产环境,只给出数据。
B是新主机,做升级测试,中途都顺利的话,最后转为生产环境,回收A。

步骤主要分为三个部分:
1)备份、同步。
2)备份、升级。
3)备份、迁移。

1)备份、同步。
B部署和A一样的版本。
A主机和B主机都停服务
./seafile.sh stop
./seahub.sh stop

万事开头先备份!!!
rsync放在screen模式下运行,如果你的数据非常小,可以scp。
先备份A数据库,配置为rsync客户端。
mysqldump -useafile -pxxxxx --opt ccnet_db > /opt/seafile/seafile-data/ccnet_db.sql
mysqldump -useafile -pxxxxx --opt seafile_db > /opt/seafile/seafile-data/seafile_db.sql
mysqldump -useafile -pxxxxx --opt seahub_db > /opt/seafile/seafile-data/seahub_db.sql

B搭建和A一样的版本6.0.7。
然后备份B数据库,配置为rsync服务端。
mysqldump -useafile -pxxxxx --opt ccnet_db > /tmp/ccnet_db.sql
mysqldump -useafile -pxxxxx --opt seafile_db > /tmp/seafile_db.sql
mysqldump -useafile -pxxxxx --opt seahub_db > /tmp/seahub_db.sql

运行rsync
rsync两端版本要一致
A同步到B,在A操作。
rsync -avz /opt/seafile/seafile-data/* root@10.9.52.215::backup --password-file=/etc/rsync.password

待上面数据同步完成,导入数据库。
mysql -h127.0.0.1 -useafile -pxxxxx ccnet_db < /opt/ccnet_db.sql
mysql -h127.0.0.1 -useafile -pxxxxx seafile_db < /opt/seafile_db.sql
mysql -h127.0.0.1 -useafile -pxxxxx seahub_db < /opt/seahub_db.sql

将B的/opt/seafile/conf文件修改成A的/opt/seafile/conf文件一致。
启动Seafile,上传和下载文件,绑Host验证,迁移前后的用户和数据是否一样。
./seafile.sh start
./seahub.sh start

2)备份、升级。
B升级从6.0.7到6.2.5
先关闭服务
./seafile.sh stop
./seafile.sh stop
备份数据库
mysqldump -useafile -pxxxxx --opt ccnet_db > /tmp/6.0.7/ccnet_db.sql
mysqldump -useafile -pxxxxx --opt seafile_db > /tmp/6.0.7/seafile_db.sql
mysqldump -useafile -pxxxxx --opt seahub_db > /tmp/6.0.7/seahub_db.sql

sh upgrade_6.0_6.1.sh
sh upgrade_6.1_6.2.sh
启动Seafile,上传和下载文件,绑Host验证,迁移前后的用户和数据是否一样。
启动服务
./seafile.sh start
./seahub.sh start

B升级从6.2.5到6.3.4
先关闭服务
./seafile.sh stop
./seafile.sh stop
备份数据库
mysqldump -useafile -pxxxxx --opt ccnet_db > /tmp/6.0.7/ccnet_db.sql
mysqldump -useafile -pxxxxx --opt seafile_db > /tmp/6.0.7/seafile_db.sql
mysqldump -useafile -pxxxxx --opt seahub_db > /tmp/6.0.7/seahub_db.sql

sh upgrade_6.2_6.3.sh
启动Seafile,上传和下载文件,绑Host验证,迁移前后的用户和数据是否一样。

3)备份、迁移。
关闭B的Seafile服务
./seafile.sh stop
./seafile.sh stop

数据库备份。
mysqldump -useafile -pIar6uyie --opt ccnet_db > /opt/seafile-data/db/6.3.4/ccnet_db.sql
mysqldump -useafile -pIar6uyie --opt seafile_db > /opt/seafile-data/db/6.3.4/seafile_db.sql
mysqldump -useafile -pIar6uyie --opt seahub_db > /opt/seafile-data/db/6.3.4/seahub_db.sql

在B安装运行Docker6.3.4
docker run -d --name seafile
-e SEAFILE_SERVER_HOSTNAME=seafile.xxxx.com
-e SEAFILE_ADMIN_EMAIL=seafile-admin@qq.com
-e SEAFILE_ADMIN_PASSWORD=python
-v /opt/seafile-data:/shared
-p 80:80
-p 443:443
seafileltd/seafile:latest

上面可以看到B主机的/opt/seafile-data,对应于docker seafile 的/shared ,二者是映射关系,意思是文件写入到/opt/seafile-data,也就写到了/shared 。

进入Docker
docker ps #查看CONTAINER ID
docker exec -it xxxxxxxxx /bin/bash

导入数据库
mysql -h127.0.0.1 -useafile -pxxxx ccnet_db < /shared/db/6.3.4sql/ccnet_db.sql
mysql -h127.0.0.1 -useafile -pxxxx seafile_db < /shared/db/6.3.4sql/seafile_db.sql
mysql -h127.0.0.1 -useafile -pxxxx seahub_db < /shared/db/6.3.4sql/seahub_db.sql

同步数据存储,B主机目录同步到B安装的Docker目录
rsync -az /seafile-data /opt/seafile-data/seafile/seafile-data

将B的/opt/seafile/conf文件修改成A的/opt/seafile/conf文件一致。
启动Seafile,上传和下载文件,绑Host验证,迁移前后的用户和数据是否一样。
./seafile.sh start
./seahub.sh start

验证OK。
迁移顺利完成。
将域名解析由A主机IP地址改成B主机IP地址。

可以参考:
https://manual.seafile.com/maintain/backup_recovery.html
https://blog.csdn.net/wusilen/article/details/54142120