背景
公司一直在用Redash做一些轻量级的报表展示,使用的免费的SelfHosted,之前安装在一台配置较低的aws 镜像服务器上,最近业务的发展需要将redash迁移到配置更好的服务器上去,但是查遍官方文档,并没有详细的迁移方案,不迁移的话,就需要重新配置,那么之前所有的用户、数据库配置、查询dashborad等等都要重新配置,工作量巨大又无意义。花费了半天时间最终将数据迁移好,程序运行完美,在这记录下。
准备工作
公司新提供了一台高配置的aws linux服务器,应我要求使用的是 ubuntu16.04的版本系统(redash官方支持友好,其他版本需要耗费过多时间),在这台机器上先装好redash,可参考这边博客。装好之后的redash是一个全新的系统,什么都是空的,会提示你配置,到此为止不要再操作。
剩下就是要把原来服务器上的redash数据迁移到这台新机器上redash来。基本思路是:
1.将老的服务器上(服务器A)redash 数据备份;
2.copy 备份数据到新的服务器上
3.在新的服务器(服务器B)上restore 服务器A的备份
这里我们用aws s3 来存储备份数据作为中介桥梁,如下图所示:
开始工作
首先在服务器A和服务器B上都安装 aws:
sudo pip install --upgrade awscli
安装完成之后 配置 访问密钥ID 和私有访问密钥
aws configure
1.备份服务器A的redash 数据:
$ sudo -u redash pg_dump redash | gzip > redash_backup.gz
2.数据上传到s3 并拷贝到 服务器B上去
在服务器A上执行:
aws s3 cp redash_backup.gz s3: //S3_BACKUP_PATH/
在服务器B上执行:
aws s3 cp s3: //S3_BACKUP_PATH/redash_backup.gz /home/usr/
3.restore 数据到服务器B上
在服务器B上依次执行
$ sudo service postgresql restart #先重启postgresql 服务,断掉所有链接
$ sudo -u postgres -i #进入postgresql
$ dropdb redash # 删除 redash数据库
$ createdb redash #重新创建redash数据库
$ gunzip -c /home/usr/redash_backup.gz | psql redash #restore备份数据库
上述脚本执行完成。整个数据迁移就完成了。新服务器上将保留所有的 redash数据。