MySQL 导出时忽略指定的大数据表

更新日期: 2018-10-25 阅读次数: 7702 分类: MySQL

如果线上数据库中一些数据量比较大的表,不经常变动,在导出时,可以选择忽略,以节省下载时间。

例如,开发环境同步线上数据库的表结构。数据量大的表就没有导出的必要。

如何知道哪些表占用的磁盘空间最大

SELECT CONCAT('my_db_name', '.', table_name),
       CONCAT(ROUND(table_rows / 1000000, 2), 'M')                                    rows,
       CONCAT(ROUND(data_length / ( 1024 * 1024 * 1024 ), 2), 'G')                    DATA,
       CONCAT(ROUND(index_length / ( 1024 * 1024 * 1024 ), 2), 'G')                   idx,
       CONCAT(ROUND(( data_length + index_length ) / ( 1024 * 1024 * 1024 ), 2), 'G') total_size,
       ROUND(index_length / data_length, 2)                                           idxfrac
FROM   information_schema.TABLES
ORDER  BY data_length + index_length DESC
LIMIT  10;

Mysql 导出时忽略指定的大数据表

忽略指定表

mysqldump -uusername -ppassword dbname \
  --ignore-table=schema.tablename1    \
  --ignore-table=schema.tablename2    \
  --ignore-table=schema.tablename3 > mysqldump.sql

在 laravel 项目中,我们可以这样

#!/bin/bash

source .env

mysqldump -u$DB_USERNAME -p$DB_PASSWORD $DB_DATABASE \
	--ignore-table=$DB_DATABASE.questions \
	--ignore-table=$DB_DATABASE.temp_material_0326 \
	--ignore-table=$DB_DATABASE.temp_questions_after_process  \
	> mysqldump.sql

另一种方案,导出指定表

mysqldump -uusername -ppassword dbname t1 t2 t3 > mysqldump.sql

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式