サブライブラリー/分のテーブルのバックアップを達成するためのMySQLデータベース(シェルスクリプト)

仕事は、多くの場合、すべてのデータがお金になった後、データベースのバックアップは、非常に重要なことで、人生です!騒ぎ、以下の導入:MySQLデータベースのバックアップを分割する方法(シェルスクリプト)

Mysqデータベース・ダンプ・バックアップ/構文を復元します:

-uユーザ名-pデータベース名>エクスポートされたファイル名をmysqldumpを。

-uユーザ名-pデータベースをmysqldumpを<ファイル名を導入しました。

まず第一に、私たちが知っている必要があり、データベース全体またはライブラリの一部をバックアップすることです。

第二に、我々はバックアップするライブラリ名のリストを取得する必要があります。

最後に、データのバックアップ用のスクリプトを書きます。

ミニッツのバックアップ:

起動しない場合は1、現在の環境は、MySQLサービスを開始するかどうかを確認するために、そのサービスを開始します。

サブライブラリーライブラリ名のバックアップのリストについては、2:

二つの方法でMySQLデータベースログイン:靴下モードおよびTCP / IP、および詳細https://my.oschina.net/zjllovecode/blog/1617755を

私たちは、MySQLデータベース名のリストをログに記録靴下ために得ます:

3、バックアップスクリプトを記述します。

Vimのmysqldb.sh#1 [スクリプト@ルート-1 18をBQH] 
#!/ binに/ SH 
#************************************************************ ************************ 
ガード:?#作者
#最終更新日:2019年5月18日13時25 
#メール:[email protected] 
ブログ#:https://www.cnblogs.com/su-root 
#ファイル名:mysqldb.sh 
#説明:mysql_dmup 
#*********************** ******************************* 
ユーザー=ルート#ユーザ名の         
パス= 123456#パスワード
ソケット=を/ tmp /にmysql.sock #ログイン
バックファイル= /サーバー/バックアップ#バックアップパス
[!$のバックファイルを-d] &&ます。mkdir -p $バックファイル#は、 バックアップパスがあるかどうかを判断
CMD = "mysqlの-u $ユーザー-p #1 $ -S $ソケット渡す" ログインデータベース 
ダンプが=「mysqldumpを-u $ユーザー-p $ -S $ソケット-Bを渡します- X -F -R「#mysqldumpバックアップパラメータ
DBリスト= `$ CMD -e "ショーのデータベース; "| sedの1D | egrepの-v" _schema | mysqlの"`#は、ライブラリ名のリストを取得する
バックライブラリのリストアップサイクル#forの$ DBリストのDB_NAMEのために
行う
 $ダンプの$ DB_NAME | GZIP> /サーバー/バックアップ/ $ {DB_NAME} _ $(日付+%F)#.sql.gz バックアップライブラリ名の+時間パック指定されたパスに
完了

スクリプトを実行します。

[OK]を、バックアップの成功を分割!

ここでは、サブライブラリーサブテーブルのバックアップを紹介します:

データバックアップ用のスクリプトを書いて、それから、第一に、我々は、ライブラリ名のリストと、バックアップするテーブル名のリストを取得する必要があります。

[OK]を、ライブラリの名前と顔を取得し、その後、我々は、わずかに(追加テーブル名を循環さ)に基づいて既存のスクリプトを修正しました

[root@bqh-118 scripts]# vim mysqldb1.sh 
#!/bin/sh
# ******************************************************
# Author       : a?锦衣卫 
# Last modified: 2019-05-18 13:25
# Email        : [email protected]
# blog         : https://www.cnblogs.com/su-root
# Filename     : mysqldb.sh
# Description  : mysql_dmup_fk
# ******************************************************
user=root        #用户名        
pass=123456      #密码
socket=/tmp/mysql.sock  #登录方式
backfile=/server/backup #备份路径
[ ! -d $backfile ] && mkdir -p $backfile #判断是否有备份路径
cmd="mysql -u$user -p$pass -S $socket"  #登录数据库
dump="mysqldump -u$user -p$pass -S $socket -X -F -R" #mysqldump备份参数 
dblist=`$cmd -e "show databases;"|sed 1d|egrep 'bqh|jyw'` #获取库名列表
for db_name in $dblist #for循环备份库列表
do
 tablest=`$cmd -e "show tables from $db_name;"|sed 1d` #获取库中表名
   for tname in $tablest  #for循环备份库中表名列表
   do
     mkdir -p $backfile/$db_name #创建库文件
     $dump $db_name $tname|gzip >$backfile/$db_name/${tname}_$(date +%F).sql.gz
                        #库名+表名+时间备份打包至指定路径下
   done
done

 

执行脚本:

ok,分库分表备份success!

おすすめ

転載: www.cnblogs.com/su-root/p/10885854.html