1. 正常使用命令
mysqldump -h主机名 -P端口 -u用户名 -p密码 参数1,参数2.... > 备份文件.sql
2.导出全部到数据库, 包含数据及结构 –all-databases , -A
mysqldump -uroot -p1234 --all-databases > /root/db_back/all.sql
或
mysqldump -uroot -p1234 -A > /root/db_back/all.sql
3.只导出表结构信息 –all-tablespaces , -Y
mysqldump -uroot -p1234 -A --all-tablespaces > /root/db_back/all.sql
或
mysqldump -uroot -p1234 -A -Y > /root/db_back/all.sql
4, 封装脚本。使用此脚本,先备份数据库表结构, 再备份表数据
脚本当中下列参数需要修改为自己的
MYSQL_HOST=192.168.111.123 #数据库IP地址
MYSQL_USER=root #数据库账号
MYSQL_PASSWORD=123456 #数据库密码
TMPFILE=/tmp/db.txt
DBDIR="/opt/mysql/backup" #备份路径
之后会再DBDIR配置的路径当中生成两个文件,construct为表结构,data为数据
脚本如下
vim mysql_backup_data.sh
#!/bin/bash
MYSQL_HOST=192.168.111.123 #数据库IP地址
MYSQL_USER=root #数据库账号
MYSQL_PASSWORD=123456 #数据库密码
TMPFILE=/tmp/db.txt
DBDIR="/opt/mysql/backup" #备份路径
DBPROFILE="test" #操作环境,无需变动
#DATE_PREFIX=`date '+%Y/%m/%d/%H/%M'` # 会有多个目录结构
DATE_PREFIX=`date '+%Y%m%d%H%M'`
TMPCONSTUCTDIR=${DBDIR}/${DBPROFILE}/${DATE_PREFIX}/construct
TMPDATADIR=${DBDIR}/${DBPROFILE}/${DATE_PREFIX}/data
function autoCreateDb(){
mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} --host=${MYSQL_HOST} -e "CREATE DATABASE IF NOT EXISTS $1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;"
}
function readDbFromFile(){
length=0
for line in `cat ${TMPFILE}`
do
len=${#line}
#last=${line}
tmp=${line}
if [ "${tmp}" != "Database" ]&&[ "${tmp}" != "information_schema" ]&&[ "$tmp" != "mysql" ]&&[ "$tmp" != "performance_schema" ]&&[ "$tmp" != "sys" ] ; then
#echo "${tmp}"
dblist[${length}]=${tmp}
length=$((${length}+1))
fi
done
#dblist[${length}-1]=${last}
}
function exportdbconstruct(){
mysqldump -u${MYSQL_USER} -p${MYSQL_PASSWORD} --host=${MYSQL_HOST} --skip-add-drop-table -d $1 --result-file=${TMPCONSTUCTDIR}/$1.sql
}
function exportdbdata(){
mysqldump -u${MYSQL_USER} -p${MYSQL_PASSWORD} --host=${MYSQL_HOST} -t $1 --result-file=${TMPDATADIR}/$1.sql
}
function exportdbandconstructdata(){
mysqldump -u${MYSQL_USER} -p${MYSQL_PASSWORD} --host=${MYSQL_HOST} --skip-add-drop-table $1 --result-file=${TMPDATADIR}/$1.sql
}
function showdbs(){
mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} --host=${MYSQL_HOST} -e "show databases;">${TMPFILE}
}
showdbs
readDbFromFile
echo ${TMPCONSTUCTDIR}
if [ ! -d ${TMPCONSTUCTDIR} ];then
mkdir -p ${TMPCONSTUCTDIR}
fi
echo ${TMPDATADIR}
if [ ! -d ${TMPDATADIR} ];then
mkdir -p ${TMPDATADIR}
fi
for ((i=0; i<=${length}; i ++))
do
echo ${dblist[$i]}
if [ "${dblist[$i]}" != "" ] ; then
exportdbconstruct ${dblist[$i]}
fi
done
for ((i=0; i<=${length}; i ++))
do
echo ${dblist[$i]}
if [ "${dblist[$i]}" != "" ] ; then
exportdbandconstructdata ${dblist[$i]}
fi
done
执行脚本
sh mysql_backup_data.sh