实现MySQL分库分表备份的脚本

1)准备测试数据:通过写脚本批量建库建表并插入测试数据。

[[email protected] scripts]# cat ceshi.sh

#/bin/bash

PATH="/usr/local/mysql/bin:$PATH"                 #定义mysql命令所在路径

MYUSER=root                                                     #定义数据用户名

DBPATH=/server/backup                                    #定义数据备份目录

MYPASS=xiwei1995                                             #定义数据用户密码

SOCKET=/tmp/mysql.sock                                  #定义数据库sock文件,多实例的指定对应路径

MYCMD="mysql -u$MYUSER -p$MYPASS "      #定义登录数据库的命令

for dbname in test2 test3 test4 test5

do

$MYCMD -e "create database $dbname"         #批量创建库

$MYCMD -e "use $dbname;create table test(id int,name varchar(16));insert into test values(1,'testdata');"  #在这些库里面创建表test,并插入测试数据

done

2)使用脚本查看测试数据结果:

[[email protected] scripts]# cat catceshi.sh

#/bin/bash

PATH="/usr/local/mysql/bin:$PATH"                 #定义mysql命令所在路径

MYUSER=root                                                     #定义数据用户名

DBPATH=/server/backup                                    #定义数据备份目录

MYPASS=xiwei1995                                             #定义数据用户密码

SOCKET=/tmp/mysql.sock                                  #定义数据库sock文件,多实例的指定对应路径

MYCMD="mysql -u$MYUSER -p$MYPASS "      #定义登录数据库的命令

for dbname in test2 test3 test4 test5

do

echo =============${dbname}.test=============================

$MYCMD -e "use $dbname;select * from ${dbname}.test;" #批量查看数据

done

查看结果如下:

[[email protected] scripts]# sh catceshi7.sh

=============test2.test=============================

+------+----------+

| id   | name     |

+------+----------+

|    1 | testdata |

+------+----------+

=============test3.test=============================

+------+----------+

| id   | name     |

+------+----------+

|    1 | testdata |

+------+----------+

=============test4.test=============================

+------+----------+

| id   | name     |

+------+----------+

|    1 | testdata |

+------+----------+

=============test5.test=============================

+------+----------+

| id   | name     |

+------+----------+

|    1 | testdata |

+------+----------+

3)真正实现MySQL分库分表的脚本

[[email protected] scripts]# cat backMySQL.sh

#/bin/bash

PATH="/usr/local/mysql/bin:$PATH"                 #定义mysql命令所在路径

MYUSER=root                                                     #定义数据用户名

DBPATH=/server/backup                                    #定义数据备份目录

MYPASS=xiwei1995                                             #定义数据用户密码

SOCKET=/tmp/mysql.sock                                  #定义数据库sock文件,多实例的指定对应路径

MYCMD="mysql -u$MYUSER -p$MYPASS "      #定义登录数据库的命令

MYDUMP="mysqldump -u$MYUSER -p$MYPASS"  #备份数据库的命令

[ ! -d "$DBPATH" ] && mkdir $DBPATH

for dbname in `$MYCMD -e "show databases;"|sed '1,2d'|egrep -v "mysql|schema"` #登录数据库获取数据库里的所有数据库名

do

mkdir $DBPATH/${dbname}_$(date +%F) -p  #创建对应目录。

for table in `$MYCMD -e "show tables from $dbname;"|sed '1d'` #内层循环,获取每个库里的所有表,然后进入循环。

do

$MYDUMP $dbname $table|gzip >$DBPATH/${dbname}_$(date +%F)/${dbname}_${table}.sql.gz  #备份指定的库内的表到指定目录下,并以库表名字命名备份的名字。

done

done

执行脚本结果如下:

[[email protected] scripts]# rm -f /server/backup/*

[[email protected] scripts]# sh backMySQL.sh

[[email protected] scripts]# tree /server/backup/

/server/backup/

|-- test2_2018-05-12

|   `-- test2_test.sql.gz

|-- test3_2018-05-12

|   `-- test3_test.sql.gz

|-- test4_2018-05-12

|   `-- test4_test.sql.gz

|-- test5_2018-05-12

|   `-- test5_test.sql.gz

到这里,就表示脚本成功执行了

原文地址:http://blog.51cto.com/13707680/2115439

时间: 2024-10-21 09:41:14

实现MySQL分库分表备份的脚本的相关文章

企业Shell实战-MySQL分库分表备份脚本

本文来自http://www.xuliangwei.com/xubusi/252.html 免费视频讲解见 http://edu.51cto.com/course/course_id-5064.html 企业Shell实战-MySQL分库分表备份 今天是2015年的最后一天,大家都开心的跨年,而我还在苦逼的呵呵-省略 此处内容来自老男孩教育oldboy以及老男孩26期王续精彩分享整理而来  为表示感谢,特整理此篇博文分享给大家! 项目联系笔者QQ:572891887   也可以加入架构师交流群:

(转)企业Shell实战-MySQL分库分表备份脚本

本文来自http://www.xuliangwei.com/xubusi/252.html 免费视频讲解见 http://edu.51cto.com/course/course_id-5064.html 企业Shell实战-MySQL分库分表备份 今天是2015年的最后一天,大家都开心的跨年,而我还在苦逼的呵呵-省略 此处内容来自老男孩教育oldboy以及老男孩26期王续精彩分享整理而来  为表示感谢,特整理此篇博文分享给大家! 项目联系笔者QQ:572891887   也可以加入架构师交流群:

分享一个MySQL分库分表备份脚本(原)

分享一个MySQL分库备份脚本(原) 开发思路: 1.路径:规定备份到什么位置,把路径(先判断是否存在,不存在创建一个目录)先定义好,我的路径:/mysql/backup,每个备份用压缩提升效率,带上时间方便整理 2.取数据库:抓取数据库名称,我用的awk和grep配合取数据库的名称(如果想按照表备份可以再细化一下)注意要用mysql -e选项 这样才能做成脚本 3.系统环境变量:因为用到了函数,所以非系统内置的命令 最好在脚本里面用 . /etc/profile  把系统当前的环境变量传过来

mysql分库.分表备份

1.mysql的分库备份 myuser=root mypass=yzg1314520 mycmd="mysql -u$myuser -p$mypass " mydump="mysqldump -u$myuser -p$mypass" for database in  mysql test do $mydump $database   > $database_$(date +%F).sql tar -zcvf $database_$(date +%F).tar.

Shell脚步之MySql分库分表备份

前言 数据备份的重要性已经不用过多强调了.这篇文章我们就以MySQL数据进行演示如何通过Shell脚步进行MySQL数据库的分库分表备份. 要求 Linux命令要求比较熟悉,Shell脚步语法规则也要熟悉,MySQL的数据库备份命令要比较熟悉.下面也会提到,如果有不懂得希望可以自行查阅资料学习. 命令窗口查询MySQL数据库列表 上面我们就通过Linux命令窗口查询到了MySQL的数据库列表 去除MySQL自带数据库获取目标业务数据库列表,查看表列表 备注:通过过滤掉MySQL自带数据库,那么就

MySQL分库分表备份脚本

vim /data/mysqlback.sh #! /bin/bash BAKPATH=/data/mysql-back MYUSER=root MYPASS="123456" SOCKET=/var/lib/mysql/mysql.sock MYCMD="mysql -u$MYUSER -p$MYPASS -S $SOCKET" MYDUMP="mysqldump -u$MYUSER -p$MYPASS -S $SOCKET -x -F -R"

mysql分库分表备份

一.单独备份数据库 mysqldump -uroot -poldboy oldboy >/opt/oldboy.sql         最简单的备份 1)  mysql基于myisam引擎 mysqldump -uroot -poldboy  -B -x  -F oldboy | gzip >/opt/oldboy.sql.gz 2)  5.5以后默认是innodb(推荐) mysqldump -uroot -poldboy  -B  -F --single-transactio oldboy

mysql 分库分表备份脚本

#!/bin/bash USER=root #用户 PASSWORD=123456 #密码 MYSQL_PATH=127.0.0.1 #地址 MYSQL_BIN=/bin/mysql MYSQL_DUMP_BIN=/bin/mysqldump MYSQL_CMD="${MYSQL_BIN} -u${USER} -p${PASSWORD} -h${MYSQL_PATH}" DATABASE=($(${MYSQL_CMD} -e "show databases;"|eg

16、MySQL数据库分库分表备份脚本

MySQL数据库分库分表备份脚本 ===================学员分享分库分表========================== 脚本单双引号的区别: 单引号是强引用,强制输出是所见即所得. 双引号是解析变量 和 多个字符串.数字等连接一个字符串 条件1  ||    条件2                      或   假真   真假 条件1 && 条件2                      并   真真    假假 !条件1  && 条件2