如果线上数据库中一些数据量比较大的表,不经常变动,在导出时,可以选择忽略,以节省下载时间。
例如,开发环境同步线上数据库的表结构。数据量大的表就没有导出的必要。
如何知道哪些表占用的磁盘空间最大
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;
忽略指定表
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 聊聊, 查看更多联系方式