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
mysql_dump.sh
Learn how to learn~~
原文地址:https://www.cnblogs.com/Mrhuangrui/p/4555252.html