在更换服务器的时候,数据库的导出导入是避免不了的环节,之前海天都是直接将服务器中的mysql数据库文件复制到新服务器,这种方法虽然简单,但是如果mysql的版本一致,很容易出现数据无效的情况。
后来海天就手动的使用phpmyadmin导出导入,操作麻烦不说,如果数据库文件过大,导出导入都会出错。
直到今天海天发现了这个神器,mysqldump。下面就介绍一些mysqldump常见的功能和操作。
PS:以下代码都以账号密码都为root举例,实际使用时记得更改。
导出所有数据库
mysqldump -uroot -proot --all-databases >/tmp/all.sql
导出db1、db2两个数据库的所有数据
mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql
导出db1中的a1、a2表
mysqldump -uroot -proot --databases db1 --tables a1 a2 >/tmp/db1.sql
导出指定表只能针对一个数据库进行导出,且导出的内容中和导出数据库也不一样,导出指定表的导出文本中没有创建数据库的判断语句,只有删除表-创建表-导入数据
导出db1表a1中id=1的数据
mysqldump -uroot -proot --databases db1 --tables a1 --where='id=1' >/tmp/a1.sql
如果多个表的条件相同可以一次性导出多个表
只导出表结构不导出数据 --no-data
mysqldump -uroot -proot --no-data --databases db1 >/tmp/db1.sql
跨服务器导出导入数据
mysqldump --host=h1 -uroot -proot --databases db1 |mysql --host=h2 -uroot -proot db2
将h1服务器中的db1数据库的所有数据导入到h2中的db2数据库中,db2的数据库必须存在否则会报错
以上就是mysqldump常用的一些导出功能,但其实mysqldump的功能远不止导出这一点功能,可以在很多mysql数据操作中使用到,更深入的使用方法,这里就不多说了。
数据库导出了怎么导入,可以使用source,具体看这篇文章《mysql 数据库导入,一定要试试source命令导入》。或者直接使用
mysql -uroot -proot < db1.sql
进行导入。