前言:
测试在部署测试项目时,需要将开发的表结构文件导入到数据库服务器,如何用SQL语句来导出导入?
导出:
一、逻辑备份:
" mysqldump " :最常用的备份工具:
原理:将数据库的数据以逻辑的 SQL 语句的方式导出
小于50G的数据量使用逻辑备份比较好,否则时间会很长。
二、物理备份:
1. scp /application/mysql/data/ 拷贝到独立数据库上就可以
scp命令参考:http://www.cnblogs.com/peida/archive/2013/03/15/2960802.html
2. xtrabackup 开源的物理备份工具
物理备份更快,但是容易丢数据。
三、命令:
注意:因为是逻辑备份,所以要求数据库状态开启。
备份所有库:
1 [root@moban ~]#mysqldump -uroot -p111111 -B -A -x|gzip > bak0218.sql.gz
2 -- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
-u:指定用户
-p:指定密码
-B:备份多个库, 并 添加 use 库名; create database 库; 等的功能。(这个参数必须加)
-A:备份所有数据库
-x:锁表(备份时不允许写数据)
|:管道
gzip:压缩
>:重定向到bak0218.sql.gz
.sql.gz:表示sql语句数据 ; .gz 是压缩包
提示: 加上--events参数。
1 [root@moban ~]#mysqldump -uroot -p111111 -B -A --events -x|gzip > bak0218.sql.gz
如图:备份成功,没有指定目录,就默认放在当前目录。 备份出来的文件里都是sql语句
备份某一个库:(比如,备份guest)
1 [root@moban ~]#mysqldump -uroot -p111111 -B -x guest|gzip > bak0218_guest.sql.gz
这样,数据就只是guest。
备份指定的库(比如:A库,B库,C库)
1 [root@moban ~]#mysqldump -uroot -p111111 -B -x A B C|gzip > bak0218_ABC.sql.gz
这时候,如果我们是从Linux服务器导出的表结构,如何直接将文件直接拷贝到另一服务器上?
scp -rp命令,参考:
导入:
首先解压压缩包(注意:该命令会删除源文件)
1 [root@moban ~]#gzip -d bak0218_guest.sql.gz
为了更好的测试,我将mysql中guest库先删了
后台提示:不存在guest库
开始导入...
因为之前已经加 -B 参数了,所以不需要先创建 guest 库。
1 [root@moban ~]#mysql -uroot -p111111 < bak0218_guest.sql
导入ok... 用户正常请求。
如果未加 -B:
首先创建 " guest " 库
然后导入时指定库名