zoukankan      html  css  js  c++  java
  • 三十、分库分表备份脚本

    1、拼接分库备份语句

    #取出库名列表
    $ mysql -uroot -p123 -e "show databases;"|egrep -v "_schema|atabase"
    mysql: [Warning] Using a password on the command line interface can be insecure.
    mysql
    school
    sys
    test
    
    #拼接备份语句
    $ mysql -uroot -p123 
    -e "show databases;"|egrep -v "_schema|atabase"| sed -r 's#^(.*)#mysqldump -uroot -p123 -B 1|gzip >/backup/1.sql.gz#g' |bash
    

    2、分库备份脚本

    #!/bin/sh
    #定义mysql登录账号,密码,SOKET文件
    USER=root
    PASSWD=123
    SOCKET=/tmp/mysql.sock
    
    #定义备份路径
    BACKPATH=/backup/
    
    #定义登录语句
    LOGIN="mysql -u$USER -p$PASSWD -S $SOCKET"
    
    #定义取出库名变量
    DBLIST=$($LOGIN -e "show databases;"|egrep -v "_schema|atabase")
    
    #定义mysqldump备份语句
    MYDUMP="mysqldump -u$USER -p$PASSWD -S $SOCKET -B -F -R"
    
    #判断备份目录是否存在
    [ ! -d $BACKPATH ] && mkdir -p $BACKPATH
    
    #循环取出库名进行分库备份
    for dbname in $DBLIST
    do
    	$MYDUMP $dbname | gzip > /backup/${dbname}_$(date +%F).sql.gz
    done
    

    3、分表备份脚本

    #!/bin/sh
    #定义mysql登录账号,密码,SOKET文件
    USER=root
    PASSWD=123
    SOCKET=/tmp/mysql.sock
    
    #定义登录语句
    LOGIN="mysql -u$USER -p$PASSWD -S $SOCKET"
    
    #定义取出库名变量
    DATABASES=$($LOGIN -e "show databases;"|egrep -v "_schema|atabase")
    
    #定义mysqlMYDUMP备份语句,注意备份表不能加-B
    MYDUMP="mysqldump -u$USER -p$PASSWD -S $SOCKET -x -F -R"
    
    #循环取出库名进行备份
    for dbname in $DATABASES
    do
    	#定义取表名,sed '1d'删除第一行
    	TABLES=$($LOGIN -e "use $dbname;show tables;"|sed '1d')
            #循环取出表名进行备份
    	for table in $TABLES
    	do
    	#判断是否存在/backup/$dbname目录
    		[ ! -d /backup/$dbname ] && mkdir /backup/$dbname -p
    			$MYDUMP $dbname $table | gzip > /backup/$dbname/${dbname}_${table}_$(date +%F).sql.gz
    
    	done
    done
    
    

    学习来自:
    《MYSQL入门与提高实践》P133
    《MYSQL入门与提高实践》P164

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    利用Trace.WriteLine定位难以重现的问题
    技术经验分享
    辞职小记
    残阳如血--读《忆秦娥·娄山关》 有感
    一个简单多线程等待窗口
    [转]Control的Invoke和BeginInvoke
    elk 改为使用 ik 中文分词器
    在 jenkins 的 pipeline 中使用分支参数
    centos8 下删除网桥 docker0
    vscode 实现组件之间的跳转
  • 原文地址:https://www.cnblogs.com/tz90/p/14599999.html
Copyright © 2011-2022 走看看