美文网首页
Mysql分库分表备份方法实现

Mysql分库分表备份方法实现

作者: 果子学长 | 来源:发表于2020-02-08 19:51 被阅读0次

1.mysqldump工具介绍

mysqldump命令是MySQL数据库自带的一个备份命令,它支持数据库全备也可以指定库进行备份,它备份的文件以文件形式备份,且文件内容都是SQL语句形式的存在。

2.基本命令的使用

(1)mysqldump语法格式

mysqldump  [options] –u 用户名 -p 密码 数据库名  >  备份的文件

(2)mysqldump[options]参数列表如下表所示:

(3)连接mysql命令

[root@bigdata3 ~]# mysql -h10.9.1.43 -uroot -p123456 -e "show databases;"

去掉周围边框使用-s命令

[root@bigdata3 ~]# mysql -h10.9.1.43 -uroot -p123456@3306 -s -e "show databases;"

命令执行结果如下图所示:

(4)mysqldump命令多数据库备份

[root@bigdata3 ~]# mysqldump -h10.9.1.43 -uroot -p123456 -B dandan_test oozie > /home/centos/mysql_back.bak

cd 到/home/centos目录下查看生成了该文件

进入该文件中查看,备份的数据全部以sql命令的形式生成,如下图所示。

(5)mysqldump压缩备份

[root@bigdata3 ~]# mysqldump -h10.9.1.43 -uroot -p123456 -B dandan_test | gzip > /home/centos/mysql_back_B.sql.gz

查看:

(6)数据库备份恢复

删掉dandan_test:drop database dandan_test;

非压缩恢复:

[root@bigdata3 centos]# mysql -h10.9.1.43 -uroot -p123456 </home/centos/mysql_back.bak

压缩恢复:

[root@bigdata3 centos]# gunzip < /home/centos/mysql_back_B.sql.gz | mysql -h10.9.1.43 -uroot -p123456

验证:

mysql -h10.9.1.43 -uroot -p123456 -e "use dandan_test;select * from tb_score1;"

[root@bigdata3 centos]# mysql -h10.9.1.43 -uroot -p123456 -e "use dandan_test;select * from tb_score1;"

(7)mysql备份表结构

[root@bigdata3 centos]# mysqldump -h10.9.1.43 -uroot -p123456 -d dandan_test >/home/centos/dandan_test_back.bak

查看:

(8)mysql备份表数据

[root@bigdata3 ~]# mysqldump -h10.9.1.43 -uroot -p123456 -t dandan_test >/home/centos/dandan_test_back.bak

查看结果如下提所示:

3.mysql分库备份shell脚本

具体shel脚本如下:

#!/bin/bash

DATE=$(date '+%Y%m%d')

HOST=10.9.1.43

USER=root

PASS=123456

BACKUP_DIR=/home/centos/db_backup

DB_LIST=$(mysql -h$Host -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep "dandan_test|oozie")

if [ ! -d $BACKUP_DIR ]

then

mkdir -p "$BACKUP_DIR"

fi

for DB in $DB_LIST; do

    BACKUP_NAME=$BACKUP_DIR/${DB}_${DATE}.sql

mysqldump -h$HOST -u$USER -p$PASS -B $DB > $BACKUP_NAME 2>/dev/null

    if [ $? != 0 ]; then

        echo "$BACKUP_NAME 备份失败!"

    fi

done

4 mysql分表备份shell脚本

具体shell脚本如下:

#!/bin/bash

DATE=$(date '+%Y%m%d')

HOST=10.9.1.43

USER=root

PASS=123456

BACKUP_DIR=/home/centos/db_backup

DB_LIST=$(mysql -h$HOST -u$USER-p$PASS -s -e "show databases;" 2>/dev/null |egrep "dandan_test|oozie")

for DB in $DB_LIST; do

    BACKUP_DB_DIR=$BACKUP_DIR/${DB}_${DATE}

    [ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR &>/dev/null

    TABLE_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "use $DB;show tables;" 2>/dev/null)

    for TABLE in $TABLE_LIST; do

        BACKUP_NAME=$BACKUP_DB_DIR/${TABLE}.sql

        if ! mysqldump -h$HOST -u$USER -p$PASS $DB $TABLE > $BACKUP_NAME 2>/dev/null; then

            echo "$BACKUP_NAME 备份失败!"

        fi

    done

done

5.小结

   本文主要阐述了Mysql分库分表的备份方法,并对mysqldump工具具体操作进行了分析研究,给出了具体备份的shell脚本,可以通过crontab定时任务按照项目需求进行备份。

  本文要点:

(1)连接mysql的指令,前提需要安装mysql客户端。

(2)mysqldump指令,注意分库、分表指定的参数,及恢复的方法。

(3)mysql分库的shell脚本的编写

(4)mysql分表的shell脚本编写(建议编写时,基本的指令需要先在linux中实验成功)

相关文章

  • Mysql分库分表备份方法实现

    1.mysqldump工具介绍 mysqldump命令是MySQL数据库自带的一个备份命令,它支持数据库全备也可以...

  • Mysql的分库分表,水平拆分-垂直拆分

    参考文章MySQL分库分表总结参考数据库分库分表策略,如何分库,如何分表?MySQL分库分表原理 MySQL单库数...

  • 分库分表

    【分库、分表】MySQL分库分表方案 - MrSunny - 博客园 总结下Mysql分表分库的策略及应用 - 周...

  • MYSQL分库分表

    大众点评订单系统分库分表实践 利用Mycat中间件实现RDS MySQL的分库分表及读写分离功能 MYSQL数...

  • mysql优化

    Mysql分库分表方案 Mysql分库分表方案 1.为什么要分表: 当一张表的数据达到几千万时,你查询一次所花的时...

  • 集群随想

    SOA框架集群 1,数据库集群,mycat负责读写分离,分表分库,mysql主从备份可设置,主要的集群是mycat...

  • (转载)MySQL数据库之互联网常用分库分表方案

    MySQL数据库之互联网常用分库分表方案 一、数据库瓶颈 1、IO瓶颈 2、CPU瓶颈 二、分库分表 1、水平分库...

  • [MySQL]MySQL分区与传统的分库分表

    传统的分库分表 传统的分库分表都是通过应用层逻辑实现的,对于数据库层面来说,都是普通的表和库。 分库 分库的原因 ...

  • 利用RadonDB实现MySQL分库分表

    利用RadonDB实现MySQL分库分表 RadonDB是青云上提供的MySQL分布式解决方案,提供数据库的透明拆...

  • 面试必备:我们为什么要分库分表?

    目录 什么是分库分表 为什么需要分库分表呢 如何分库分表 什么时候开始考虑分库分表 分库分表会导致哪些问题 分库分...

网友评论

      本文标题:Mysql分库分表备份方法实现

      本文链接:https://www.haomeiwen.com/subject/pmjmxhtx.html