平常在迁移和测试系统的时候,经常需要迁移数据库,数据量不大的时候,我们可以用mysql dump导出sql,然后再导入,但是假如里面有的表,数据量特别大,比如logs表,几百万,用mysql_dump的话,需要花费很长时间。但是logs并不需要数据。
以下脚本,可以自动导出schema和数据,还可以设置哪些表skip掉,简单实用,分享给大家。
#!/bin/bash # 用户名 USER=root # 密码 PASSWORD= # host HOST=127.0.0.1 # 数据库名 DATABASE=database RESULT_FOLDER=dump_files SCHEMA_FILE=schema.sql DATA_FILE=data.sql # 设置哪些表不导出数据,比如有的表特别大,而且没有意义,logs EXCLUDED_TABLES=( logs ) IGNORED_TABLES_STRING='' for TABLE in "${EXCLUDED_TABLES[@]}" do : IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${TABLE}" done mkdir ${RESULT_FOLDER} echo "start to dump schema from database ${DATABASE}" mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} --single-transaction --no-data --routines ${DATABASE} > http://www.toutiao.com/a0/${RESULT_FOLDER}/${SCHEMA_FILE} echo "start to dump data from database ${DATABASE}" mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} ${DATABASE} --no-create-info --skip-triggers ${IGNORED_TABLES_STRING} >> http://www.toutiao.com/a0/${RESULT_FOLDER}/${DATA_FILE}
学习更多编程技巧
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/16177.html