最近、プロジェクトではデータベース データをバックアップする必要がありました。さまざまな資料を参考にして、データベース バックアップ戦略を設計しました。1 週間のデバッグと運用を経て、現在は安定した運用状態になっています。ここで私のアイデアを共有し、gredn に感謝したいと思います。 設計シナリオ1) 月曜日から土曜日の午前 3 時に増分バックアップが実行され、mysql-bin.00000* が指定されたディレクトリにコピーされます。 技術的なポイントmysqldump、mysqlbinlog、crontab サーバー情報ホスト: centos7; データベース: mysql5.7 準備binlog ログを有効にする (1) 新しいディレクトリを作成し、以下を実行します。 #mkdir /home/mysql #cd /home/mysql #mkdir mysql-bin. #増分ログファイルディレクトリ (2)所属するユーザー/グループを変更する(変更しないとMySQLを再起動できません) #chown -R mysql.mysql mysql-bin (3)MySQL設定ファイルを変更し、以下を実行します。 #vim /etc/my.cnf このうち、server-id は単一ノードの ID を表します。ここではノードが 1 つしかないため、ID はランダムに番号に割り当てられます。ここでは ID は 1 に設定されています。クラスター内に複数のノードがある場合、ID は同じにできません (バージョン 5.7 より前のバージョンでは、server-id を指定する必要はありません)。 (4)MySQLを再起動して以下を実行します。 #systemctl mysqld.service を再起動します (5)ログファイルを表示する: #cd /home/mysql/mysql-bin (6)データベースに入り、起動効果を確認します。 # '%log_bin%' のような変数を表示します。 フルバックアップスクリプト(Mysql-FullyBak.sh)を書く/home/mysqlディレクトリに入り、新しいディレクトリを作成します: mkdir backup #vim Mysql-FullyBak.sh パラメータの説明: 増分バックアップ スクリプトの作成/home/mysql ディレクトリに切り替えて、次を実行します。 #vim Mysql-DailyBak.sh スケジュールされたタスク用のcrontabを設定する(1)crontabをインストールします(centos7ではデフォルトでインストール済みです)。 #yum crontabs をインストール サービス操作手順: #/bin/systemctl start crond.service //サービスを開始#/bin/systemctl stop crond.service //サービスをシャットダウン#/bin/systemctl restart crond.service //サービスを再起動#/bin/systemctl reload crond.service //リロード 構成: #/bin/systemctl status crond.service //サービスステータス 自動起動を追加: #chkconfig –level 35 crond オン (2)コマンドラインに次のように入力します。 #crontab -e 対応するタスクを追加し、保存してwqで終了します。 #毎週日曜日の午前3時に完全バックアップスクリプトを実行します 0 3 * * 0 /bin/bash -x /home/mysql/Mysql-FullyBak.sh >/dev/null 2>&1 #月曜日から土曜日の午前3時に増分バックアップを作成します。0 3 * * 1-6 /bin/bash -x /home/mysql/Mysql-DailyBak.sh >/dev/null 2>&1 注意: デフォルトでは、crontabはタスクの実行後にユーザーに電子メールで通知します。毎回メッセージを送信しないようにするには、/dev/null 2>&1を追加します。 (3)スケジュールされたタスクを表示する: #crontab -l パラメータと説明: 回復作戦リカバリ処理ではログファイルも書き込まれます。データ量が多い場合は、まず binlog 機能をオフにすることをお勧めします。 (1)まず、最新のフルバックアップファイルを解凍し、バックアップファイルディレクトリに入り、以下を実行します。 #tar -zxvf XXX.sql.tgz (2)フルバックアップ後に新しく追加されたbinlogファイルを表示するには、次のコマンドを実行します。 #grep CHANGE XXX.sql 図からわかるように、これは完全準備時の binlog ファイルの位置、つまり mysql-bin.000003 の 154 行目です。したがって、このファイルの前の binlog ファイル内のデータは、この完全準備 sql ファイルにすでに含まれています。 (3)mysql-bin.000003ファイルの154行目以降の情報を復元する mysql-bin.000003 ディレクトリに移動して実行します (sysecokit はデータベース名です)。 #mysqlbinlog --start-position=154 --database=sysecokit mysql-bin.000003 | mysql -uroot -p -v sysecokit (4) 他のbinlogファイル(mysql-bin.000003を除く)をsqlファイルにエクスポートして実行します(-dはデータベースを指定します)。 #mysqlbinlog -d sysecokit mysql-bin.00000X >00Xbin.sql (5)最新の00Xbin.sqlをvimで編集し、drop文を削除します。 #mysql -uroot -p < XXX.sql 例: #mysql -uroot -p < 20180716.sql #mysql -uroot -p syseco<00Xbin.sql 例: #mysql -uroot -p syseco<004bin.sql これで、MySQL バックアップ戦略 (フルバックアップ + 増分バックアップ) の実装に関するこの記事は終了です。MySQL バックアップ戦略に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CSS 水平プログレスバーと垂直プログレスバーの実装コード
>>: マーキー要素は、スクロールするフォントや画像などの効果を実装します。
ページの説明: メインページ: 名前 —> shishengzuotanhuichaxun ...
この記事では、例を使用して、MySQL の結合クエリ、結合クエリ、サブクエリの原理と使用方法を説明し...
目次1. 重複したリクエストをキャンセルする2. すべてのリクエストをクリーンアップするこのソリュー...
目次背景探検する要約する背景テーブルでは、dataTime フィールドは varchar 型に設定さ...
目次1. Dockerはリモートアクセスを可能にする2. Intellij IDEAにDockerプ...
目次1. 挿入2. 更新3. 削除1. 挿入 顧客に挿入( 顧客.顧客住所、 顧客.cust_cit...
次のコードを index.html などのデフォルトのホームページ ファイルとして保存し、ルート デ...
1. 2種類のDMAマッピング1.1. 一貫性のあるDMAマッピング主に長期間使用されるエリアをマッ...
フロントエンド開発者が必ず知っておくべきケースとして、タブバーの切り替え効果があります。タブバー自体...
前の記事で説明したフォームの自動入力の問題を解決した後、新しい問題が発生しました。ページの一部のスタ...
リソースを節約するためにWebページの圧縮を設定する1.まず、設定を変更しましょう vim /usr...
HTML 検証はHTML 検証を指します。これは、HTML ドキュメントを分析し、標準の HTML ...
小さな画像をクリックしたときに更新せずに大きな画像コードが表示されるようにLightboxを実現する...
<br />この記事は主に、初心者にXHTMLの基本知識と、XHTMLとHTMLの違いを...
問題を見つける以前、簡単なデモを書いたのですが、IE10以下では動作しないことがわかりました。ここに...