MySQL 库表导出导入

2019-04-11  本文已影响0人  cli1871

1 MySQL 库表导出

1.1 包含数据

1.1.1 导出整个数据库结构和数据

mysqldump -h localhost -uroot -p123456 -P 3306 database > dump.sql

1.1.2 导出单个数据表结构和数据

mysqldump -h localhost -uroot -p123456 -P 3306  database table > dump.sql

1.1.3 常用的导出多个数据库

mysqldump -hxxx -P3306 -uxxx -pxxx --quick --single-transaction --set-gtid-purged=OFF --databases db1 db2  > ss_db1db2.sql

如果数据库data size过多,导出时间长,那么终端有可能中断而导致导出过程中断,我们选用后台运行的方式导出。

nohup mysqldump -hxxx -P3306 -uxxx -pxxx --quick --single-transaction --set-gtid-purged=OFF --databases db1 db2  > ss_db1db2.sql &

这种方式是有问题的,第一行会出现类似Warning: Using a password on the command line interface can be insecure.导致不能正确导入,数据量过大,用vim将会可能是文件截取,possible option is 

用sed 去除第一行。

基于此,用参数方式--result-file将会避免这种错误,比较实用的解决办法。

mysqldump -hxxx -P3306 -uxxx -pxxx --quick --single-transaction --set-gtid-purged=OFF --databases db1 db2  --result-file=ss_db1db2.sql

1.1.4 导出策略

mysqldump期间,不可避免的对mysql 这台实例有这性能影响,这种case下,我们一般选择负责极轻的mysql slave 实例或者为了dump,我们为dump搞一个专门用于dump mysql slave实例

1.2 不包含数据

1.2.1 导出整个数据库结构(不包含数据)

mysqldump -h localhost -uroot -p123456 -P 3306 -d database > dump.sql

1.2.2 导出单个数据表结构(不包含数据)

mysqldump -h localhost -uroot -p123456 -P 3306 -d database table > dump.sql

1.3  导出option - -column-statistics

错误提示:

  mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"') FROM information_schema.COLUMN_STATISTICS

原因:

因为新版的mysqldump默认启用了一个新标志,通过- -column-statistics=0来禁用他

解决方法:

  mysqldump --column-statistics=0 -h 127.0.0.1 -uroot -proot  -P 3306 -d test > dumptestdb.sql

2 MySQL 库表导入

导入库表前,首先要创建空目标数据库

2.1 创建空数据库

Only take test for example.

CREATE DATABASE IF NOT EXISTS test DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

2.2  库表导入

2.2.1 用mysql命令行

mysql -h localhost -uroot -p123456 -P 3306 test <dump.sql

2.2.2 source sql

进入数据库:

mysql -h localhost -uroot -p123456 -P 3306

选择数据库:

mysql>use test;

mysql> source dump.sql;

2.2.3直接拷贝

如果数据库比较大,可以考虑直接拷贝,但不同版本及操作系统间可能不兼容,慎用。

1.用tar包打包为一个文件mydb.tar.gz

2.在临时目录中解压

cp mydb.tar.gz /tmp

cd /tmp

tar zxf mydb.tar.gz

3. 拷贝

将解压后文件拷贝到相关目录

cp /tmp/mydb/* /var/lib/mysql/mydb

系统不同,路径可能不同

上一篇 下一篇

猜你喜欢

热点阅读