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

更新日期: 2018-10-25 阅读次数: 4266 分类: 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 聊聊。 白天写程序,晚上哄熊孩子,可能回复有点慢,见谅。 查看更多联系方式

相关文章

爱评论不评论

近期节日

2020年08月07日 立秋
2020年08月15日 日本投降日
2020年08月22日 处暑
2020年08月25日 七夕
2020年09月02日 中元节
2020年09月03日 抗日胜利纪念日
2020年09月07日 白露
2020年09月08日 国际扫盲日
2020年09月10日 教师节
2020年09月16日 国际臭氧层保护日
2020年09月16日 世界清洁地球日
2020年09月18日 "九一八"事变纪念日
查看更多节日