Linux Mysql使用【mysqldump】备份数据库结构及数据

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

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李指导、

您的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值