背景
由于需要造数,但又怕磁盘空间不够,于是用新的机器,直接docker拉起一个mysql,因此需要把原mysql里面的库导过来。所以命令看起来是简单,但是实操起来还是有些细节需要注意的,为了下次操作能够加快效率,记录一下。
过程
确定使用的工具:mysqldump。
mysqldump是 MySQL 提供的一个命令行工具,用于备份 MySQL 数据库
用法:
msqldump -u 用户名 -p 数据库名 > 备份文件名.sql --备份单个
mysqldump -u 用户名 -p --databases 数据库名1 数据库名2 > 备份文件名.sql --备份多个
mysqldump -u 用户名 -p --all-databases > all_databases_backup.sql --备份所有-u:指定连接 MySQL 服务器的用户名。
-p:提示输入该用户的密码。输入密码时,密码不会显示在屏幕上。
数据库名:要备份的数据库的名称。
>:将备份内容重定向到指定的文件中。
备份文件名.sql:指定备份文件的名称,通常以 .sql 作为扩展名。
参考案例
mysqldump -u root -p testdb > testdb_backup.sql
如我在实际中的使用,我把密码也带上了直接使用
备份完之后,就生成了一个.sql文件了。
由于我是在服务器A上面备份的数据,然后又需要在服务器B上面进行迁移。
但是服务器A又不能ssh过去服务器B,
因此我就把.sql文件迁移到了服务器B。
ps:在这里迁移过去的时候,我们需要保证目标mysql中有对应的库,因此需要先创建好
迁移过去的时候,我就直接使用命令迁移,但是这是出现了如下报错
mysql -u 目标数据库用户名 -p datasense_copilot_new < datasense_copilot_new_backup.sql
有点纳闷。
于是我查了一下,发现我的mysql是用docker部署的,需要在容器内存执行该命令,因此我采用新的命令:
docker exec -i ds-mysql mysql -u root -p'GHC***T4J' datasense_copilot_new < /tmp/datasense_copilot_new_backup.sql
成功迁移成功,查看对应的表,都存在,顺便查看一下数据,校对条数,全都对得上
ok,问题解决!!