Mysql 数据备份导出
mysqldump导出整个数据库
mysqldump --single-transaction --skip-lock-tables -uDBUSER -pDBPASSWD -hDBIP \
--default-character-set=utf8 -B DATABASE -q -R --add-drop-table=true --add-drop-database=true > DATABASE_`date +%Y%m%d_%H`.sql
mysqldump导出一个表
mysqldump --single-transaction --skip-lock-tables -uDBUSER -pDBPASSWD -hDBIP \
DATABASE TABLE > TABLE_`date +%Y%m%d_%H`.sql
mysqldump导出数据库结构
mysqldump --single-transaction --skip-lock-tables -uDBUSER -pDBPASSWD -hDBIP \
-d --add-drop-table DATABASE > DATABASE_`date +%Y%m%d_%H`.sql
mysqldump导出某个表结构
mysqldump --single-transaction --skip-lock-tables -uDBUSER -pDBPASSWD -hDBIP \
-d --add-drop-table DATABASE TABLE > TABLE_`date +%Y%m%d_%H`.sql
执行sql导出数据
mysql -uDBUSER -pDBPASSWD -hDBIP < select.sql > DATA_`date +%Y%m%d_%H`.sql
mysql -uDBUSER -pDBPASSWD -hDBIP -e "use mysql;select * from mysql;" > DATA_`date +%Y%m%d_%H`.sql
可添加 -N 参数,不带表头输出
备注
-R 导出存储过程以及自定义函数
-B 指定到导出的database
-q 不缓冲查询,直接导出到标准输出
-d 不导出数据只导出结构
--add-drop-table 在每个create语句之前增加一个drop table
--add-drop-database 在每个数据库创建之前添加drop数据库语句
--skip-add-locks 取消默认在每个表导出之前LOCK TABLES并且之后UNLOCK TABLE
#!/bin/bash mysqlHost= mysqlUser= mysqlPasswd= nowdate=`date +%Y%m%d%H%M` for database in `mysql -h ${mysqlHost} -u ${mysqlUser} -p${mysqlPasswd} -e"show databases"|tail -n +2|grep -Ev 'information_schema|performance_schema|sys'` do echo "database name:"${database}"***********************" dirPath=${nowdate}/dashboard/${database} [ ! -d ${dirPath} ] && mkdir -p ${dirPath} for table in `mysql -h ${mysqlHost} -u ${mysqlUser} -p${mysqlPasswd} -e"use ${database};show tables"|tail -n +2` do mysqldump -h ${mysqlHost} -u ${mysqlUser} -p${mysqlPasswd} ${database} ${table} > ${dirPath}/${table}.sql done done