一、背景:
アリクラウドRDS生産ライブラリが毎日バックアップし、自作のライブラリのコピーを読んでする必要がありますが、あなたはアリクラウドを使用している場合、自動的に読み取り専用インスタンスをコピーしているため、コストが高すぎるので、同期スクリプトを書くための自己実現の方法を使用します。
第二に、前提:
1)それはアリクラウドRDSを立ち上げ、および定期的なバックアップ機能を開いてきました。(ダウンロード用のバックアップ世代バックアップファイル)
2)。MySQLデータベースは、ターゲット・サーバーのバックアップにインストールされています。
3)Percona XtraBackupインストールバックアップ対象のサーバーのデータ復旧ツールは、ダウンロードしてPercona XtraBackup公式サイトからインストールすることができます。
- 5.6とMySQLの以前のバージョンの公式ドキュメントを参照、Percona XtraBackup 2.3、インストール手順をインストールする必要がPercona XtraBackup 2.3。
- MySQLの5.7バージョンはPercona XtraBackup 2.4、インストール手順をインストールする必要があり、公式ドキュメントを参照Percona XtraBackup 2.4。
- MySQLの8.0バージョンはPercona XtraBackup 8.0、インストール手順をインストールする必要があり、公式ドキュメントを参照Percona XtraBackup 8.0。
第三に、スクリプトの作成と検証
1.スクリプトSHELLを書きます
#!は/ usr / binに/ envをbashの #########基本情報データベース############# #入力パラメータ URL_path = $ 1 #定義された時間のフォーマット DATE = ` DATE + Y%のM%のD %%のH%Mは%S ' #ログファイルアドレス 開き、log_path = /データ/ db_bakup / bakup.log #保存バックアップ番号 BACK_NUM = 3 #バックアップファイルストレージパス BAKUP_PATH = /データ/ db_bakup / ## ######################## back_up(){ CD} $ {をBAKUP_PATH エコー " === $ {DATE} -バックアップをダウンロードし、URL_PATH = $ { ===} URL_path " >> $ {}開き、log_path wgetの -C " $ {} URL_path "データベース-O。$ {DATE}。タール.gzを エコー " ===解凍ファイルを保存するためのフォルダを作成=== " >> $ {}開き、log_path は、mkdir データベース。$ {DATE} エコーは 「===データベースを抽出します。 {DATE} === $ " >> $ {}開き、log_path タール -izxvfデータベース$ {DATE} .. タール .gzを- 。Cデータベース$ {DATE} エコーは " === ===バックアップファイルを復元良い解凍します」 >> $ {}開き、log_path innobackupex --defaults ファイル = /データ/ db_bakup /データベース。$ {DATE} /backup-my.cnf --applyログ/データ/ db_bakup / データベース。$ {DATE} エコー " == === =ストップデータベース」>> $ {}開き、log_pathの サービスのMySQL STOP #は、データベースのデータにソフトリンクを削除します(私のデータベースがインストールされて /データ/ MySQLの/ ) RM -rf /データ/ MySQLの/ データ エコー " === ===元フォルダデータベースを削除します。" >> $の開き、log_path} { #元のフォルダデータベースの削除 RMデータベース/ -rf #の名前が変更 MV データベースを。$ {DATE}データベース #新しいデータベースソフトリンク LNの -s /データ/ db_bakup /データベース/データ/ MySQLは/ データ #はバージョンを作成します文書(現在のデータベースのバックアップが属するバージョンを識別することは容易である) タッチデータベース/ rev.database CAT 「$ {DATE} 」 >>データベース/ rev.database エコー " === ===変更されたファイルの所有者" >> $ {}開き、log_path をchown -R&LTのMySQL:MySQLの/データ/ db_bakup / データベース のchown -R&LTのMySQL:MySQLの/データ/ MySQLの エコー " ===再開データベースは=== " >> $ {}開き、log_pathを 開始-サービスのMySQL #削除するには、バックアップの必要性を識別 DELFILE = ` LS {-l-CRT BAKUP_PATH} $ / * .tar.gzの|のawk '{}を。9印刷$' |ヘッド-1` #は、現在のバックアップ番号$の数よりも大きいか否かを判断 COUNT =` 。LS BAKUP_PATH} -1- CRT $ {/ * tar.gz形式| awkの。{} 9プリント$ '| WC -l` IF [[-gt $ $ BACK_NUM] COUNT];その後、 #のみを残し、最も古い作成したバックアップを削除数バックアップの数 RMます$ DELFILEの #の書き込みログファイルは削除する エコー「終わりを=== ===」>> $ {}開き、log_path エコー「$のDELFILEを削除」>>$ {}開き、log_path Fiを } back_up。
スクリプトとしてファイルを保存:/data/db_bakup/back_up.sh
2.実行するために、ファイルのパーミッションに追加しました
chmod uの+ X /data/db_bakup/back_up.sh
3.バックアップコマンドを起動します。
SH /データ/ db_bakup / back_up。SH " バックアップファイルのダウンロードリンク"
注:RDS管理コンソールから取得した「バックアップファイルのダウンロードリンク」アリの雲のコピー
4.プロセスを参照するには、バックアップログを確認
テール -f /data/db_bakup/bakup.log -n 50
5.データベースが新しいバックアップに切り替わったかどうかを確認するためにログオンします
MySQLの-uroot -p
6.終了~~~
参考文献:
自作のデータベースにMySQLの物理バックアップファイルの回復のためのRDS