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

你可能感兴趣的:(数据库,数据库,linux,mysql,mongodb,服务器)