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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式