最近有需要对生产环境的数据进行备份到本地,供后续新功能测试用。由于公司使用的是阿里云的数据库服务器。不能通过客户端连接到数据,只能想办法从后台用shell脚本命令来实现数据库的备份。(先申明本次备份针对的是mysql数据库,其他如oracle,sqlserver和nosql等没有试验过,如果您有兴趣可以试试。)
我们知道mysqldump命令可以导出数据到文件中。那么我们就可以先从阿里云数据库服务器上用该命令导出相关数据库表的sql文件,然后用mysql命令导入到本地的mysql数据库中,这样我们就可以实现生产环境的数据备份。那么首先,我们来导出线上数据到sql文件,具体步骤是:
1、导出命令
mysqldump -u用户名 -p密码 -h主机 数据库名 表名 --where "sql语句"> 路径/sql文件
mysqldump -u$user -p$passwd -h$host $dbname $tablename --where "id > 1 and id < 1000" >/home/1.sql #按sql语句导出
mysqldump -u$user -p$passwd -h$host $dbname $tablename> /home/2.sql #导出全表
mysqldump -u$user -p$passwd -h$host $dbname $tablename-d > /home/3.sql #导出全表结构
上述命令导出的sql文件是带有表结构的,所以我们可以用mysql命令直接导入到本地数据库中。
2、导入sql文件中的数据到本地数据库
mysql -u用户名 -p密码 -h主机 数据库名< sql文件
mysql -u$user -p-h$host -D$dbname <1.sql
上述导入命令,有几点要注意,1)语句结尾不要;号 2)-D要大写 3)-p后面不要跟密码,密码在敲完上述命令后回车输入
其他数据库表依次执行此操作。至此,我们对生产环境的数据库备份就完成。
另外,补充一点。我们经常会直接从我们的后台导入数据到文本文件(txt,csv等等)下面的语句对你或许有用。
mysql -u用户名 -p密码 -h主机 数据库名-e "sql语句" > 1.txt
mysql -u$user -p$passwd -h$host $dbnamd -e "select * from test where id = 1“ > 1.txt
导入的文本文件,我们用excel的文件导入功能就能轻松将其转化成工作中需要的excel文件。excel导入文本文件时要注意相关数据的格式,纯数字超过15位要用文本格式否则尾数会精度丢失。