ホームページ > データベース > mysql チュートリアル > Centos7はMySQL LANバックアップ(完全バックアップ、ログ増分バックアップを含む)を実装しています。

Centos7はMySQL LANバックアップ(完全バックアップ、ログ増分バックアップを含む)を実装しています。

黄舟
リリース: 2017-02-28 13:20:08
オリジナル
1598 人が閲覧しました

オンライン システムの場合、データベースのバックアップ操作は非常に重要な手順です。バックアップのないデータベースは安全ではありません。このブログ投稿では、オンライン情報を参考にして、シェル スクリプト ファイルを使用して、MySQL データベースの LAN 内での完全バックアップ、増分バックアップ、およびスケジュールされたバックアップ操作を実現します。

サーバーの紹介: centos 7.0

【ローカル完全バックアップ】

1. 単一データベースバックアップスクリプトファイル

#vi mysql-backup.sh

db_user="root"     #本服务器用户名密码
db_passwd="root"  
db_host="192.168.64.137"   #本服务器地址
db_name="whp"  #需要备份数据库名称
# the directory for story your backup file.  
backup_dir="/backup"    #备份以后放入的文件路径
# date format for backup file (dd-mm-yyyy)  
time="$(date +"%Y-%m-%d-%H-%M-%S")"  
# mysql, mysqldump and some other bin's path  
MYSQL="/application/mysql/bin/mysql"  
MYSQLDUMP="/application/mysql/bin/mysqldump"  
GZIP="/bin/gzip"  
  
$MYSQLDUMP -u $db_user -h $db_host -p$db_passwd $db_name | $GZIP -9 > "$backup_dir/$db_name"_"$time.gz"
ログイン後にコピー

2. 7 日間の履歴データの完全なバックアップを保持します

db_user="root"  
db_passwd="root"  
db_host="localhost"   
# the directory for story your backup file.  
backup_dir="/application/backup/"  
# date format for backup file (dd-mm-yyyy)  
time="$(date +"%H-%M-%S-%m-%d-%y")"  
# mysql, mysqldump and some other bin's path  
MYSQL="/application/mysql/bin/mysql"  
MYSQLDUMP="/application/mysql/bin/mysqldump"  
MKDIR="/bin/mkdir"  
RM="/bin/rm"  
MV="/bin/mv"  
GZIP="/bin/gzip"  
# check the directory for store backup is writeable   
test ! -w $backup_dir && echo "Error: $backup_dir is un-writeable." && exit 
# the directory for story the newest backup  
test ! -d "$backup_dir/backup.0/" && $MKDIR "$backup_dir/backup.0/"  
echo "Start to Backup...";  
# get all databases  
# don't backup information_schema、performance_schema  
all_db="$($MYSQL -u $db_user -h $db_host -p$db_passwd -Bse 'show databases')"  
all_db=${all_db//information_schema/};  
all_db=${all_db//performance_schema/};  
for db in $all_db  
do  
$MYSQLDUMP -u $db_user -h $db_host -p$db_passwd $db | $GZIP -9 > "$backup_dir/backup.0/$time.$db.gz"  
done  
# delete the oldest backup  
test -d "$backup_dir/backup.7/" && $RM -rf "$backup_dir/backup.7"  
# rotate backup directory  
for int in 6 5 4 3 2 1 0  
do  
if(test -d "$backup_dir"/backup."$int")  
then  
next_int=`expr $int + 1`  
$MV "$backup_dir"/backup."$int" "$backup_dir"/backup."$next_int"  
fi  
done  
echo "BackUp Success!"  
exit 0;
ログイン後にコピー

3. シェル スクリプトの権限を変更し、を実行します。

       # chmod 700 mysql-backup.sh  // 只允许管理员运行此脚本
           #./mysql-backup.sh                //执行脚本,测试一次
ログイン後にコピー

[ログファイルの増分バックアップ]

1. スクリプトファイルを作成します:

#vi incre-backup.sh

#执行mysqladmin执行刷新日志文件         
/application/mysql/bin/mysqladmin -uroot -proot flush-logs   
         
#DATADIR=/var/lib/mysql   
DATADIR=/application/data  #获取数据文件路径 
BAKDIR=/backup    #获取要备份的数据目标文件路径
         
###如果mysql bin log你做了特殊设置,请修改此处或者修改应用此变量的行:缺省取机器名,mysql缺省也是取机器名   
#HOSTNAME=`uname -n`   
cd $DATADIR   #转入到/application/data 查询mysql-bin.index文件
#FILELIST=`cat $HOSTNAME-bin.index`   
 FILELIST=`cat mysql-bin.index`   
 
## COUNTER number   
COUNTER=0   
for file in $FILELIST   
do   
COUNTER=`expr $COUNTER + 1 `   
done   
         
NextNum=0   
for file in  $FILELIST   
do   
base=`basename $file`   
NextNum=`expr $NextNum + 1`   
if [ $NextNum -eq $COUNTER ]   
then
echo "skip lastest"
else
dest=$BAKDIR/$base   
if(test -e $dest)   
then
echo "skip exist $base"
else
echo "copying $base"
cp $base $BAKDIR   
fi   
fi   
done   
         
echo "backup mysql binlog ok"
ログイン後にコピー

2. ファイル権限を変更し、実行します


# chmod 700 incre-backup.sh  // 只允许管理员运行此脚本
  #./mysql-backup.sh                //执行脚本,测试一次
ログイン後にコピー

【自動バックアップ】

上記のスクリプト記述に基づいて、Linux システムの

crontab コマンドを使用して、シェル ファイルを定期的に自動的に実行します:

 # crontab –e
添加:
00 01 * * */mysql-backup.sh    // 每天凌晨1点执行
ログイン後にコピー

[リモート LAN バックアップ]


LAN バックアップは、NFS サーバーを使用して LAN 上のデータ共有を実現します。 NFS サーバーのマウント方法は、ファイルを共有できるようにネットワーク接続を構成することで、通常ファイルを共有するのと同じように実装されます。実装方法は次のとおりです:


1. NFS サーバーのインストール


a) NFS サーバーに必要なソフトウェア パッケージをインストールします:


  # yuminstall -y nfs-utils
 
           b)编辑exports文件
           #vim/etc/exports
           #/home/nfs/192.168.248.0/24(rw,sync)
ログイン後にコピー

192.168.248.0/24 と同じネットワーク番号を持つホストは、 NFS サーバーの /home/nfs/ ディレクトリにマウントされて独自のファイル システムになります

rw は読み取り可能および書き込み可能を意味します

nfs サービスを開始します

#systemctlstart rpcbind.service

#systemctlstart nfs-server 。 service

S d) NFS サーバーが正常に開始されたことを確認します:

#RPCINFO —P

E) 正常に開始されない場合は、RPCBind および NFS サーバー サービスを再起動します:

#SystemCTL RPCBIND.Service

#SystemCTL RESTART NFS-Server.service


A) NFS をインストールし、RPCBind サービスを開始します

# yuminstall-yユーティリティ

b) rpcbind.service

c) 次に、rpcbind サービスを開始します:

systemctlstart rpcbind.service

d) NFS サーバー上に共有ディレクトリがあるかどうかを確認します:

#showmount -e 192.168.64。 138

e) スレーブ マシンの mount を使用して、サーバー側のディレクトリをクライアントのディレクトリにマウントします (ここでは、上記の

ローカル バックアップ

のファイル パスをサーバーと同様にマウントします):

#mount -tnfs - o nolock,nfsvers=1,vers =3 192.168.64.138:/home/nfs /backup

問題

: mount.nfs: 古い NFS ファイル ハンドル

解決策: クライアント側でマウント ファイルを削除し、再マウントします:

# umount – a

【バックアップとリカバリ】

a. gzip データベースを Mysq に復元します

#gunzip | b.

#/mysql/bin/mysqlbinlog--database=fox --start-date="2013-01-22 5:00:00" --stop-date="2013-01-22 9:00:00"/ /mysql/data/mysql-bin.000001: バイナリファイルを指定します

[概要]

基本的なバックアップ方法は完了しましたが、複数のファイルをあまり消費せずにセキュリティを確保するには、特定のアプリケーションシナリオに応じて異なるバックアップ戦略を採用する必要がありますメモリ。

上記は、MySQL LAN バックアップ (完全バックアップ、ログ増分バックアップを含む) を実装した Centos7 の内容です。さらに関連する内容については、PHP 中国語 Web サイト (m.sbmmt.com) に注目してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート