Davinci BI平台数据备份方案

写在开头:使用Davinci制作出dashboard后,如果出现docker损坏,或者转移机器的情况,应当保留哪部分的信息呢?这就是本文要说明的东西

前言

在本文中主要有两个解决方案,一个是手动备份,另一个是使用配置好的volume文件

Davinci备份解决方案—手动备份与还原

这个是davinci的备份方案,主要就是保留davinci自带mysql中的davinci0.3数据库就可以
为了避免docker损坏使得之前在Davinci上做的dashboard和配置损失,故需要将Davinci数据配置到本地,并能够还原到新设备上。其实在docker上安装Davinci已经自动将数据备份到了ubuntu本地的volume上,但目前还不知道怎么迁移到新的设备上,于是本方法采用了手动备份方法。此方法可以将制造好的网页展示转移到其他设备和windows本地,能够整个数据库一起覆盖还原。

Step1.
首先制作好 Davinci的各种配置以及Dashboard。假设docker-compose.yml文件是在Davinci文件夹下运行,那么之后生成的三个容器名应该分别叫davinci_davinci_1、davinci_mysql_1、davinci_chrome_1,其中所有配置与绘图数据保存在davinci_mysql_1;
Step2.
进入到正在运行的docker容器davinci_mysql_1中,使用命令

sudo docker exec -it davinci_mysql_1 /bin/bash

Step3.
然后完整复制mysql中的davinci0.3数据库到docker容器中,并命名为backup.sql,使用命令

mysqldump -uroot -pabc123123 davinci0.3 > /backup.sql

相关问题:
如果在复制的时候报错1812,可能是因为对应的表不存在,笔者当时测试的时候在davinci0.3数据 库创建了一张表。并删除了ibd文件导致会中断复制数据库表格。

如果遇到when using LOCK TABLES报错。https://www.cnblogs.com/bluewelkin/p/3701948.html

Step4.
将backup.sql从docker容器中转移到ubuntu本地或windwos本地中,需要退出docker,使用命令

sudo docker cp davinci_mysql_1:/backup.sql /home/mingsee/

Step5.
备份完后需要,如果需要的时候要还原数据,首先将backup.sql文件传入对应的docker容器中,这里加入我们另一个Davinci是在test文件下启动的docker-compose.yml,那么就需要将backup.sql传入到docker容器中的test_mysql_1中,此时应当在test下启动Davinci,使用命令

sudo docker cp /home/mingsee/backup.sql test_mysql_1:/

相关问题:
如何将windows中的backp.sql传到docker toolbox?这里直接切换到对应目录就行,因为docker toolbox会自动挂载windows目录,所以只需要完成传递到docker容器这一步即可。

Step6.
然后这里的恢复数据是完全覆盖之前的数据库的做法,首先确保test_mysql_1中的mysql包含davinci0.3数据库,然后在test_mysql_1容器里,注意不是在mysql里,使用命令

扫描二维码关注公众号,回复: 11498149 查看本文章
mysql -uroot -pabc123123 davinci0.3 < /backup.sql

这样再回到Davicni中会发现之前的工作都被迁移过来了。
相关问题:
如果覆盖davinci0.3报错[ERR] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci':
https://blog.csdn.net/yinzitun7947/article/details/89917611
如何批量替换'utf8mb4_0900_ai_ci’这里建议的话就是将backup.sql用编译器打开,这里使用的是Vscode,其批量修改方法为:https://blog.csdn.net/gengyiping18/article/details/104694646/


Davinci备份解决方案—volume自动备份与还原

在上面的Davinci备份解决方案中主要是用手动备份数据库的方法进行,而在yml文件找那个就已经配置了保存在ubuntu本地的volume备份文件,但这个数据库的备份是ibd的文件形式备份,所以与上面不同,上面是sql形式的数据库整体还原,这个是ibd数据格式的是针对每一个表的,目前还只能对一个表一个表单独进行备份。
Step1.
找到docker-compose.yml中对于mysql的配置volume位置,一般是在
/var/lib/docker/volume/davinci_mysql_data/_data/davinci0@002e3中存放着Davinci的数据,如果找不到就用find命令进行寻找,使用命令

sudo find / -name volume

表格数据均以ibd形式储存,下面展示某一个表的还原过程,就以user表举例吧。
Step2.
假如我们现在已经有了一个Davinci Bi平台,但我们在另一台设备开设了新的Davinci,且在test文件夹下启动的,那么需要进入到docker容器test_mysql_1中,使用命令

sudo docker exec -it test_mysql_1 /bin/bash

进入mysql,并调用davinci0.3数据库,使用命令
mysql -uroot -pabc123123(这里的账户密码是davinci mysql的初始密码)

use davinic0.3

需要判断所在数据库中是否存在user表,如果存在,那么首先删除其对应的表空间,也就是mysql储存在文件夹中的数据,执行完下面的命令后会发现test_mysql_1/var/lib/mysql/ davinci0@002e3中就不存在user表了,使用命令

ALTER TABLE user DISCARD TABLESPACE

如果数据库中不存在user表,那么需要创建一张表结构与原表结构一致的user表,这里建议直接换个文件夹重新启动yml文件,然后复制空的user表在这边来,创建后的操作与上面相同。
相关问题:
mysql1808报错、1812报错https://blog.csdn.net/wearegouest/article/details/79538618
Step3.
将准备还原的数据表user.ibd复制到对应的docker容器的数据库储存位置中,使用命令
sudo docker cp 存放路径/user.ibd test_mysql_1/var/lib/mysql/davinci0@002e3
如果是想要传到本地的docker toolbox则还需要将user.ibd传到window本地上.
相关问题:
在使用WinSCP从ubuntu传输数据到window时,可能存在权限不足,错误3
https://zhuanlan.zhihu.com/p/98509899
Step4.
然后切换到docker容器的数据库储存位置,修改文件权限,使用命令

sudo docker exec -it test_mysql_1 /bin/bash
cd var/lib/mysql/davinci0@002e3
chown mysql:mysql user.ibd

Step5.
最后进入docker中的mysql,并进入davinci0.3数据库,导入表空间,也就是将储存在文件夹的数据导入mysql中,使用命令,

ALTER TABLE user IMPORT TABLESPACE;

成功后就可以发现数据被复制过来了


结语

目前的备份方法有很多成熟的工具,作为数据分析师目前笔者只能寻找到备份文件是什么,然后把这个文件告诉IT运维组,来进行有效的备份。
谢谢阅读。

引用参考

1.如果遇到when using LOCK TABLES报错。https://www.cnblogs.com/bluewelkin/p/3701948.html
2.如果覆盖davinci0.3报错[ERR] 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci’:
https://blog.csdn.net/yinzitun7947/article/details/89917611
3.如何批量替换’utf8mb4_0900_ai_ci’这里建议的话就是将backup.sql用编译器打开,这里使用的是Vscode,其批量修改方法为:https://blog.csdn.net/gengyiping18/article/details/104694646/
4.mysql1808报错、1812报错https://blog.csdn.net/wearegouest/article/details/79538618
5.在使用WinSCP从ubuntu传输数据到window时,可能存在权限不足,错误3
https://zhuanlan.zhihu.com/p/98509899

猜你喜欢

转载自blog.csdn.net/qq_35149632/article/details/107762504