如何合并多台程序数据

说明

比如我目前使用2台服务器AB同时转码,需要将B服务器切片等数据合并到A服务器,下面就按照该例子配置演示。

且如果你在B程序中给视频设置过分类,则A中必须新建相同分类,即存在B的分类名称。

合并数据库

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的后台会发现AB视频库数据合并一起了。

合并切片

使用SSH客户端,比如Xshell软件,登录A服务器,安装一下rsync

#CentOS系统
yum install rsync -y

#Debian、Ubuntu系统
apt install rsync -y

再将B中的切片文件夹转移到A,同样在A服务器中使用命令:

rsync -av -e 'ssh -p 9999' root@192.168.0.1:/home/express-ffmpeg/public/videos /home/express-ffmpeg/public/videos

9999B的服务器端口,192.168.0.1B的服务器IP,前面的/home/express-ffmpeg/public/videosB的切片目录,后面的为A的切片目录,一定要对应好。

同步完成后,则就完全将B的数据库信息和切片文件合并到A中了。