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
系统不同,路径可能不同
网友评论