美文网首页
MySQL 库表导出导入

MySQL 库表导出导入

作者: cli1871 | 来源:发表于2019-04-11 18:14 被阅读0次

    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

    系统不同,路径可能不同

    相关文章

      网友评论

          本文标题:MySQL 库表导出导入

          本文链接:https://www.haomeiwen.com/subject/murxwqtx.html