如果你是用的5和1镜像,有没有宝塔备份数据库,当上传太多文件后,使用phpmyadmin导出数据困难,参考此教程。
MySQL的数据库文件都存储在一个文件夹中,linux上存储在/var/lib/mysql/moneynote,如果存储引擎是MyISAM,可以通过直接备份文件夹的方式。
如果api的版本号是93.61以及之后安装的,存储引擎已经改为MyISAM,如果是之前的版本,则是InnoDB,如果需要使用此备份方式,需要先升级,并且把导出的sql文件中的InnoDB替换为MyISAM重新建表和数据,总之如果你现在的存储引擎是InnoDB,需要改为MyISAM。
因为我们的数据都存在docker的volume(moneynote_mysql_data)中,第一步需要将docker中的/var/lib/mysql/moneynote文件夹捞到本地。
参考docker如何备份volume的教程。
https://docker.easydoc.net/doc/81170005/cCewZWoN/XQEqNjiu
moneynote的执行命令:
docker run --rm --volumes-from moneynote -v .:/backup ubuntu bash -c "cd /var/lib/mysql && tar -xzvf /backup/moneynote.tar.gz"
执行成功的话,会在当前目录生成moneynote.tar.gz,这个文件就是包含了moneynote所有数据的重要文件,将这个文件想办法从服务器拿到本地。
后面如果在新搭建的环境中,需要还原数据,则利用此moneynote.tar.gz文件操作。
参考教程:https://www.xiebruce.top/689.html
1. 参考教程,运行moneynote-all
2. 运行起来之后在phpmyadmin,删掉moneynote数据库,重新创建,将spring boot自动建的表清空。
3. 将moneynote.tar.gz上传到服务器
4. 在包含moneynote.tar.gz的目录执行:
docker run --rm --volumes-from moneynote -v .:/backup ubuntu bash -c "cd /var/lib/mysql && mkdir m_temp && cd m_temp && tar -xzvf /backup/moneynote.tar.gz"
5. 在phpmyadmin查看 show variables like 'secure_file_priv';
6. 进入moneynote容器的命令行执行
cp /var/lib/mysql/m_temp/moneynote/*.MYI /var/lib/mysql/moneynote cp /var/lib/mysql/m_temp/moneynote/*.MYD /var/lib/mysql/moneynote cp /var/lib/mysql/m_temp/moneynote/*.sdi /var/lib/mysql-files chmod -R 777 /var/lib/mysql-files
7. 在phpmyadmin执行导入 import table from '/var/lib/mysql-files/*.sdi';
8. 如果出现table is readonly,执行chown -R mysql:mysql /var/lib/mysql/moneynote