首页 > 数据库技术 > 详细

MySQL分库备份脚本

时间:2017-01-12 03:30:59      阅读:26      评论:0      收藏:0      [点我收藏+]

标签:mysql   mysqldump   分库备份   


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 -B -F -R"

DBLIST=`$MYCMD -e "show databases;" |sed "1d" |egrep -v "_schema|test"`


[ ! -d $BAKPATH ] && mkdir -p $BAKPATH

for dbname in $DBLIST

do

    $MYDUMP $dbname |gzip > $BAKPATH/${dbname}_$(date +%F).sql.gz

done


执行该脚本,可以在/data/mysql-back目录生成三个库的压缩文件

技术分享





mysqldump命令参数说明

--lock-all-tables,  -x

提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭--single-transaction 和--lock-tables 选项。


--databases, -B

用于备份多个数据库,使用该选项,mysqldump 把每个名字都当作为数据库名。如果没有该选项,mysqldump 把第一个名字参数作为数据库名,后面的作为表名。


--flush-logs,-F

开始转储前刷新MySQL服务器日志文件。该选项要求RELOAD权限。请注意如果结合--all--database(或-A)选项使用该选项,根据每个转储的数据库刷新日志。

例外情况:当使用--lock-all-tables或--master-data的时候,在这种情况下,日志只刷新一次,在所有 表被锁定后刷新。如果你想要同时转储和刷新日志,应使用--flush-logs连同--lock-all-tables或--master-data。


--routines, -R

在转储的数据库中转储存储程序(函数和程序)。使用---routines产生的输出包含CREATE PROCEDURE和CREATE FUNCTION语句以重新创建子程序。但是,这些语句不包括属性,例如子程序定义者或创建和修改时间戳。这说明当重载子程序时,对它们进行创建时定义者应设置为重载用户,时间戳等于重载时间。如果你需要创建的子程序使用原来的定义者和时间戳属性,不使用--routines。相反,使用一个具有mysql数据库相应权限的MySQL账户直接转储和重载mysql.proc表的内容。



本文出自 “M四月天” 博客,请务必保留此出处http://msiyuetian.blog.51cto.com/8637744/1891077

MySQL分库备份脚本

标签:mysql   mysqldump   分库备份   

原文:http://msiyuetian.blog.51cto.com/8637744/1891077

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号