実稼働環境で起こる最も嬉しいことは、シナリオによっては、更新または削除時にパラメータを無視せざるを得ない状況が発生することです。もう終わりです。データを壊してしまいました。どうすればいいですか? オペレーションに行ってバックアップを見つけないと!オペレーションはこう言いました: 馬鹿げている、私たちのシステムはバックアップされていない。あなたはこう言いました: では、ログをください。オペレーションはこう言いました: 馬鹿げている、毎日何 GB ものログがある、まだ開いてもいないのに。あなたはこう言いました: どうすればいいですか、データベースがクラッシュしました。運営側は「それはあなたの仕事であり、私には関係ありません...これはある会社の描写なので、今日はこの状況に終止符を打つつもりです」と言った。 今日は、MySQL 5.7 を使用して顧客向けのシステムを導入する予定ですが、顧客側の開発者の能力を保証することはできません。何か問題が発生した場合に備えて、起動ファイルやデータベースなどの重要なファイルをすべて自動的にバックアップすることしかできません。たった 1 行のコマンドでこれを達成できます。これは責任あるアプローチです。はじめる: 次の機能を実装する必要があります。 1つ目: データベースのバックアップ 2番目: バックアップによるデータベースの回復 3番目: データベースバックアップの自動化 4番目: 期限切れのバックアップファイルをクリーンアップする 1つ目: 自動データベースバックアップ 1. バックアップディレクトリを作成する ここでは、バックアップ ファイルを /data/backup/mysql の下に置き、スクリプトを /data/backup の下に置くことを選択しました。 [root@izwz99z5o9dc90keftqhlrz /]# mkdir -p /data/backup/mysql [root@izwz99z5o9dc90keftqhlrz /]# cd /data/backup 2. スクリプトファイルを作成する mysql_backup.sh を作成する [root@izwz99z5o9dc90keftqhlrz バックアップ]# vi mysql_backup.sh #!/bin/bash # db_name は自分で変更してください db_name = 'baizhan' バックアップディレクトリ='/data/backup/mysql/' 現在の時刻=$(日付 +'%Y-%m-%d_%H%M%S') ファイルパス=$backup_dir$current_time'.sql.gz' #$db_password $db_user はここでは使用されません。これは構成ファイルに書き込まれています echo 'データベースのエクスポートを開始します...' mysqldump --defaults-extra-file=/data/backup/my_mysql.cnf $db_name | gzip > $filepath echo 'エクスポート成功、ファイル名: '$filepath 3. 新しい設定ファイルを作成する 現在のディレクトリ、つまり/data/backup [root@izwz99z5o9dc90keftqhlrz バックアップ]# vi my_mysql.cnf [mysqlダンプ] 最大許容パケット = 400M ホスト=127.0.0.1 ユーザー=root パスワード='SgDGfsrfEi3#@%#%ugslp%z!dAP' [mysql] ホスト=127.0.0.1 ユーザー=root パスワード='SgDGfsrfEi3#@%#%ugslp%z!dAP' 読者の皆様、上記のパラメータをご自身のパラメータに変更してください。この手順を省略しないでください。 mysqldump の下のパラメータはエクスポート コマンドに使用され、mysql の下のパラメータはインポート時に使用されます。 4. ファイルの権限を与える この時点で、エクスポートされたシェルスクリプトが書き込まれました。このスクリプトに実行権限を追加しましょう。 [root@izwz99z5o9dc90keftqhlrz バックアップ]# chmod +x ./mysql_backup.sh 5. コマンドを実行する [root@izwz99z5o9dc90keftqhlrz バックアップ]# sh ./mysql_backup.sh # 結果を確認する [root@izwz99z5o9dc90keftqhlrz バックアップ]# ll ./mysql 6. 長期使用 正常にエクスポートされたファイルを解凍し、元のファイル サイズと圧縮されたファイル サイズを比較してみましょう。 [root@izwz99z5o9dc90keftqhlrz バックアップ]# gzip -dc ./mysql/2019-12-22_180359.sql.gz > ./mysql/2019-12-22_180359.sql [root@izwz99z5o9dc90keftqhlrz バックアップ]# ll -sh ./mysql 合計 44K 36K -rw-r--r-- 1 ルート ルート 36K 12月22日 18:06 2019-12-22_180359.sql 8.0K -rw-r--r-- 1 ルート ルート 5.9K 12月22日 18:03 2019-12-22_180359.sql.gz 36Kb と 8Kb の比較。データベースが大きい場合は、より多くのスペースを節約できます。 ここまででエクスポートスクリプトは完了しました。次のステップはスクリプトをインポートすることです。 2番目: バックアップによるデータベースの回復 1. スクリプトファイルを作成する 最初の手順を実行すると、/data/backup ディレクトリに移動するはずです。続行 [root@izwz99z5o9dc90keftqhlrz バックアップ]# vi mysql_restore.sh #!/bin/bash [ -z $1 ] || [ ! -f $1 ] の場合 それから echo "SQL 圧縮ファイル (*.sql.gz) を入力してください" 出口1 フィ #独自のデータベース名を入力してください db_name='jx_guides' ベースディレクトリ='/data/backup/mysql/' gz_sql_file=`ベース名 $1` file_ext=${gz_sql_file##*.} [ $file_ext != 'gz' ] の場合 それから echo 'ファイル形式が正しくありません。.sql.gz ファイルを入力してください' 出口1 フィ sql_file=${gz_sql_file%.*} echo '解凍されたファイル内...' gzip -dc $base_dir$gz_sql_file > $base_dir$sql_file echo '解凍が完了しました。' echo 'データベースのインポートを開始します...' mysql --defaults-extra-file=/data/backup/my_mysql.cnf $db_name < $base_dir$sql_file [ -f $base_dir$sql_file ]の場合 それから echo '一時ファイルを削除します。' rm -f $ベースディレクトリ$sqlファイル フィ echo 'インポートが完了しました。' 上記のコード内の構成ファイルは、最初の手順で作成した構成ファイルであり、ここでも同じように使用されます。 2. ファイルの実行権限を増やす [root@izwz99z5o9dc90keftqhlrz バックアップ]# chmod +x ./mysql_restore.sh 3. バックアップファイルを使ってデータベースを復元しましょう [root@izwz99z5o9dc90keftqhlrz バックアップ]# sh ./mysql_restore.sh ./mysql/2019-12-22_180359.sql.gz ファイルを解凍します... ここで、最初のパラメータはディレクトリを記述せずにバックアップファイルの名前を直接記述できますが、ディレクトリを追加した後はテーブルを使用して自動補完できるため、非常に便利です。その他の実行方法:実際には、理解している人は、それらはすべて同じであることを知っています 実際、どのフォルダでも復元でき、どの場所でも実行できます。 [root@izwz99z5o9dc90keftqhlrz バックアップ]# sh /data/backup/mysql_restore.sh /data/backup/mysql/2019-12-22_180359.sql.gz [root@izwz99z5o9dc90keftqhlrz mysql]# pwd を実行することもできます。 /データ/バックアップ/mysql [root@izwz99z5o9dc90keftqhlrz mysql]# sh /data/backup/mysql_restore.sh 2019-12-22_180359.sql.gz 3番目: データベースバックアップの自動化 1. スケジュールされたタスクを追加する [root@izwz99z5o9dc90keftqhlrz mysql]# crontab -e # 次の内容を貼り付けます。自動データベース バックアップ 0 1,12 * * * /data/backup/mysql_backup.sh # 毎日 1 回、午前 1 時と午後 12 時にデータをバックアップします。 4番目: 期限切れのバックアップファイルをクリーンアップする 1. ファイルを削除するスクリプトを作成する [root@izwz99z5o9dc90keftqhlrz mysql]# vi remove_backup.sh #/bin/bash # 15日前のバックアップを削除する find /data/backup/mysql -type f -mtime +15 | xargs rm -f ここでは最新の 15 日間のバックアップ データのみを保存することを選択しました。必要に応じて変更できます。 2. 実行権限を追加する [root@izwz99z5o9dc90keftqhlrz mysql]# chmod +x ./remove_backup.sh #15日前のバックアップを手動で削除します [root@izwz99z5o9dc90keftqhlrz mysql]# ./remove_backup.sh 3. 自動クリーンアップ [root@izwz99z5o9dc90keftqhlrz mysql]# crontab -e # 以下はスクリプトの内容です。この文を追加してください 0 1 * * * /data/backup/remove_backup.sh # 毎日午前1時に、15日前のバックアップを自動的に削除します [15はremove_backup.shで設定されています] 5番目: スケジュールされたタスク構成を投稿する # 次の内容を貼り付けます。データベースの自動バックアップ 0 1,12 * * * /data/backup/mysql_backup.sh # 毎日午前 1 時と正午に 1 回データをバックアップします # 以下はスクリプトの内容です。この文を追加します 0 1 * * * /data/backup/remove_backup.sh # 毎日午前 1 時に、15 日前のバックアップを自動的に削除します [15 は remove_backup.sh で設定されています] 要約する 上記は、編集者が紹介した CentOS7 での MySQL のスケジュール自動バックアップの実装方法です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
目次HTTP ハイジャック、DNS ハイジャック、XSS HTTPハイジャックDNSハイジャックXS...
序文Ahhang が Springboot プロジェクトを開発していたとき、フロントエンドから検証コ...
新しいウィンドウが開きます。 利点: ユーザーがリンクをクリックしても、現在閲覧しているコンテンツは...
質問docker run コマンドを使用して、tomcat コンテナが正常に追加されました。ポートも...
今日、会社のプロジェクトでは docker を設定する必要があります。Windows に正常にインス...
外部 CSS ファイルを使用したレンダリング パイプライン上図では、HTML データの要求から DO...
北西を見ると私の故郷はどこにあるでしょうか。南東の満月を何度見たことがあるでしょうか。月が再びゆっく...
tomcat はオープンソースの Web サーバーです。Tomcat ベースの Web は実行効率...
この記事では、Docker コマンドの使用とインストールについては説明しません。Docker を基礎...
mysql countの詳細な説明count関数はテーブルや配列内のレコードを数えるために使われます...
この記事では、弾幕効果を実現するためのjQueryの具体的なコードを参考までに共有します。具体的な内...
目次JVM クラスローダーTomcat クラスローダークラスを検索ロードクラスクラスをロードしようと...
前回の記事ではMySql8.0.19のインストール手順を紹介しました。必要な方はクリックしてご覧くだ...
現在、クラウドサーバーに nginx をインストールする際、最初に zlib などの依存ライブラリを...
解決策1: msvcr100.dll ファイルをダウンロードし (インターネットからソース ファイル...