如何合并多台程序数据
2 年前
说明
提示:对于转码有大量需求的,建议使用GPU服务器转码,且多分布式转码还在开发中。
比如我目前使用3
台服务器A
、B
、C
同时转码,需要将B
和C
服务器切片等数据合并到A
服务器,下面就按照该例子配置演示。
注意事项
- 建议被合并的程序,比如
B
、C
只负责给视频设置分类+转码视频;对影片信息等标签有需求的,请合并后,再到主程序A
中进行编辑操作,不然会造成混乱的情况。 - 如果你在
B
、C
程序中给视频设置过分类,则A
中必须新建相同分类,即存在B
、C
的分类名称。 - 合并的时候,被合并的程序,比如
B
、C
里的视频全部已经转码完成,防止合并的时候出现问题。
合并数据库
提示:以下只演示服务器B合并到A,C合并到A的步骤一样。
1、导出B服务器数据库
首先使用SSH
客户端,比如Xshell
软件,登录B
服务器,再使用命令:
#没修改数据库信息的话,可直接复制粘贴到ssh运行
mongodump -h 127.0.0.1 -u ffmpeg -p ffmpeg -d ffmpeg -o /root --authenticationDatabase ffmpeg
-d
是选择要导出的数据库,-u
是用户名,-p
是密码,--authenticationDatabasehou
后面也是要备份的数据库。
导出后,数据库文件路径为/root/ffmpeg
,接下来只需要2
个文件,如下:
#视频库数据
movies.bson
movies.metadata.json
再将这2
个文件下载并上传到服务器A
。
2、将数据导入到A服务器
先将上面备份好的2
个存放在A
服务器的/root/ffmpeg
文件夹,不存在/root/ffmpeg
文件夹的话,就自己新建一个。
再使用SSH
客户端,比如Xshell
软件,登录A
服务器,再使用命令:
#没修改数据库信息的话,可直接复制粘贴到ssh运行,/root/ffmpeg为此前数据表存放文件夹
mongorestore -h 127.0.0.1 -u ffmpeg -p ffmpeg -d ffmpeg /root/ffmpeg --authenticationDatabase ffmpeg
-d
是选择要合并的数据库,-u
是用户名,-p
是密码,--authenticationDatabasehou
后面也是要合并的数据库。
此时你在A
的后台会发现A
和B
视频库数据合并一起了。
合并切片
提示:以下只演示服务器B合并到A,C合并到A的步骤一样。
1、将服务器B切片等数据同步到A
使用SSH
客户端,比如Xshell
软件,登录A
服务器,安装一下rsync
:
#CentOS系统
yum install rsync -y
#Debian、Ubuntu系统
apt install rsync -y
再将B
中的切片文件夹转移到A
,同样在A
服务器中使用命令:
#同步成功后,自动删除清空B中的切片文件
rsync -av -e 'ssh -p 9999' --remove-source-files root@192.168.0.1:/home/express-ffmpeg/public/videos /home/express-ffmpeg/public/videos
9999
为B
的服务器端口,192.168.0.1
为B
的服务器IP
,前面的/home/express-ffmpeg/public/videos
为B
的切片目录,后面的为A
的切片目录,一定要对应好。
同步完成后,则就完全将B
的数据库信息和切片文件合并到A
中了。
清空B的数据
提示:建议清空下,这下B又变成了一个刚重装好的新系统,方便下次再次将转码切片合并到A。
清空B中的视频库信息
使用SSH
客户端,比如Xshell
软件,登录B
服务器,运行命令:
mongo
use ffmpeg
db.movies.drop()
然后使用Ctrl + D
退出。
清空B中的切片数据
由于同步的时候自动删除B
中的切片文件,所以不需要清空了。