ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL使用dbdump实现传输数据,并更换默认存储目录

2021-01-26 21:04:20  阅读:269  来源: 互联网

标签:dbdump dump -- mysql db 传输数据 file MySQL data


以下备份脚本可一键导出MySQL数据库数据,操作步骤如下(使用的是MySQL 5.7.21版本):

1、将脚本保存至~/bin/dbdump.sh

2、在Linux ~/.profile或者.bash_profile用户环境初始化文件中增加如下内容(环境变量内容视情况而定)

附:导出脚本如下,请复制并保存至~/bin/dbdump.sh

#!/usr/bin/env bash

### file name:dbdump.sh,save to ~/bin,and add $HOME/bin PATH to ~/.bash_profile or ~/.profile

### usage: dbdump.sh all or 1:with data,dbdump.sh none or 2:without data

####################################################################

## add these environment parameters to ~/.bash_profile or ~/.profile

# export ENV=数据库

# export db_host=数据库地址

# export db_port=数据库端口

# export db_user=数据库用户名

# export db_schema=数据库用户名

# export BACKUP_PATH=/data/docker/container/mysql/backup

# export PATH=$HOME/bin:$PATH

####################################################################

 

date=`date "+%Y%m%d"`

error_log=${ENV}_dbdump_error.log

 

mkdir -p $BACKUP_PATH

cd $BACKUP_PATH

 

exec_dump() {

    echo

    echo "-- ${ENV} `date +%F\ %T` Database ${db_schema} dump to ${dump_file} start ..."

    if [ -f ${dump_file} ]; then

        rm -f ${dump_file}

    fi

 

    if [ "v${no_data}" == "v" ]; then

        echo "mysqldump --add-drop-table --set-gtid-purged=OFF -h ${db_host} -u ${db_user} -P ${db_port} -p -R ${db_schema} 2> ${error_log} | gzip > ${dump_file}"

        mysqldump --add-drop-table --set-gtid-purged=OFF -h ${db_host} -u ${db_user} -P ${db_port} -p -R ${db_schema} 2> ${error_log} | gzip > ${dump_file}

    else

        echo "mysqldump ${no_data} --add-drop-table --set-gtid-purged=OFF -h ${db_host} -u ${db_user} -P ${db_port} -p -R ${db_schema} 2> ${error_log} | sed 's/AUTO_INCREMENT=[0-9]*\s*//g' | gzip > ${dump_file}"

        mysqldump ${no_data} --add-drop-table --set-gtid-purged=OFF -h ${db_host} -u ${db_user} -P ${db_port} -p -R ${db_schema} 2> ${error_log} | sed 's/AUTO_INCREMENT=[0-9]*\s*//g' | gzip > ${dump_file}

    fi

 

    if [ -s ${error_log} ] ; then

        rm -f ${dump_file}

        cat ${error_log}

        echo

        echo "-- ${ENV} `date +%F\ %T` Database ${db_schema} dump error."

        exit 1

    else

        rm -f ${link_file}

        ln -s ${dump_file} ${link_file}

        echo

        echo "-- ${ENV} `date +%F\ %T` Database ${db_schema} dump to ${dump_file} finished ."

    fi

}

 

exec_dump_without_data() {

    no_data='--no-data'

    exec_dump

}

 

if [ x$1 != x ]; then

    dump_type=$1

else

 

    read -p "

    Which dump type do you want?

 

    1> all (with data)

    2> none structure only (no data)

 

    Input dump type: [1|2] > " dump_type

 

fi

 

case ${dump_type} in

 

    1|all)

        link_file=${db_schema}_dump_with_data.sql.gz

        dump_file=${date}_${link_file}

        exec_dump

    ;;

    2|none)

        link_file=${db_schema}_dump_without_data.sql.gz

        dump_file=${date}_${link_file}

        exec_dump_without_data

    ;;

    *)

        echo "dump type error, nothing going to do."

        exit 1

    ;;

 

esac

执行导出操作:

#导出数据库全部数据

dbdump.sh all

dbdump.sh 1

#导出数据结构(不包含数据)

dbdump.sh none

dbdump.sh 2

输入密码后数据库备份文件将导出至BACKUP_PATH目录中。

用dbdump.sh all 生成一个.gz数据压缩文件

sftp IP地址 连接到对应IP数据库服务器上,将gz压缩文件传输过去

gunzip *.gz文件  解压数据文件

如果默认存储目录容量不够

修改数据库数据存储目录

mysql -uroot -p 登录mysql

select @@datadir; 查看当前数据存储目录

sudo service mysqld stop 

停止数据库服务

在内容空间充足的目录下  创建存储目录,例如:/data

cp /var/lib/mysql /data

vim /etc/my.cnf

[client]

port=3306

socket=/data/mysql/mysql.sock

[mysqld]

datadir=/data/mysql

socket=/data/mysql/mysql.sock

启动服务

sudo service mysqld start 

再次登录mysql中  验证存储目录是否更改

更改成功后,在解压缩的sql目录下 执行这个命令

nohup mysql -u数据库账号 -p'数据库密码' 数据库 < *.sql &

ps -ef | grep mysql  

查看数据库进程,会有进程在跑

标签:dbdump,dump,--,mysql,db,传输数据,file,MySQL,data
来源: https://blog.csdn.net/weixin_40953794/article/details/113194711

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有