很多时候DBA需要导出部分记录至开发、测试环境,因数据量需求较小,如果原库的记录多,且表数量也多,在用mysqldump命令导出时可以添加一个where参数(如自定义导出n条记录),而不必全量导出。
示例脚本如下:
导出dbname库每张表的1000条记录
/usr/local/mysql5.7/bin/mysqldump --skip-add-locks --master-data=2 --default-character-set utf8 -E --single-transaction -R --triggers -uroot -pxxxx --socket=/data/mysql/mysql3307/tmp/mysql3307.sock --databases dbname --where "1=1 limit 1000" > dbname.sql
MySQLdump的其他主要用法如下:
1、导出数据和表结构——将特定数据库特定表中的数据和表格结构和数据全部返回
/usr/local/mysql5.7/bin/mysqldump --skip-add-locks --master-data=2 --default-character-set utf8 -E --single-transaction -R --triggers -uroot -pxxxx --socket=/data/mysql/mysql3307/tmp/mysql3307.sock dbname tbname >tbname.sql
2、导出表结构却不导出表数据——只返回特定数据库特定表格的表格结构,不返回数据,添加“-d”命令参数
/usr/local/mysql5.7/bin/mysqldump --skip-add-locks --master-data=2 --default-character-set utf8 -E --single-transaction -R --triggers -uroot -pxxxx --socket=/data/mysql/mysql3307/tmp/mysql3307.sock dbname tbname -d > tbname_str.sql
3、导出数据却不导出表结构——只返回特定数据库中特定表格的数据,不返回表格结构,添加“-t”命令参数
/usr/local/mysql5.7/bin/mysqldump --skip-add-locks --master-data=2 --default-character-set utf8 -E --single-transaction -R --triggers -uroot -pxxxx --socket=/data/mysql/mysql3307/tmp/mysql3307.sock dbname tbname -t >tbname_data.sql
4、导出特定数据库的所有表格的表结构及其数据,添加“--databases ”命令参数
/usr/local/mysql5.7/bin/mysqldump --skip-add-locks --master-data=2 --default-character-set utf8 -E --single-transaction -R --triggers -uroot -pxxxx --socket=/data/mysql/mysql3307/tmp/mysql3307.sock --databases dbname > this_database.sql
想进一步沟通或想了解其他文章的同学可以关注我。