最近、プロジェクトではデータベース データをバックアップする必要がありました。さまざまな資料を参考にして、データベース バックアップ戦略を設計しました。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 水平プログレスバーと垂直プログレスバーの実装コード
>>: マーキー要素は、スクロールするフォントや画像などの効果を実装します。
目次1. 部分文字列() 2. サブストラクチャ() 3.インデックス() 4.最後のインデックス(...
質問最近、プライベートミラーセンターにログインする必要がありましたが、ログイン時にエラーメッセージが...
1. 問題開発中に、他のデータベースから MySQL データベース テーブルにデータを挿入すると、次...
原因docker スクリプトを実行すると、コンテナを作成できないというエラーが発生します。以下のよう...
この記事は主にMybatisでの動的SQL文の解析について紹介します。この記事のサンプルコードは非常...
ここでは、Linux プラットフォームでの Zabbix エージェントのインストールと構成について簡...
目次1. 画像のバイナリデータを表示する方法2. 絵の種類の見分け方3. 画像の種類を検出する方法3...
この記事の例では、検索ボックスでファジークエリを実装するためのNodeの具体的なコードを参考までに共...
目次まとめ問題の説明問題を分析する問題を解決するまとめ複雑な知識をシンプルに説明できることは重要です...
拡張版です。質問とSQL文は以下の通りです。ユーザー テーブルを作成し、id、name、gender...
目次1. フロントエンドの状態管理とは何ですか? 2. ヴュークス3. バス4. ウェブストレージ序...
MySQL データベースが Centos7 システムにインストールされており、オペレーティング シス...
失敗の原因今日、カルーセルを書いていたときに、overflow;hidden; が失敗する可能性があ...
序文データベースのデータを表示すると、文字化けした文字が表示されることがあります。実際、どのようなデ...
目次問題の原因:解決:解決:私は Centos7 を使用しています (理論的にはこの方法は Cent...