MySQLを定期的にバックアップしてQiniuにアップロードする方法

MySQLを定期的にバックアップしてQiniuにアップロードする方法

ほとんどのアプリケーション シナリオでは、緊急時に備えて重要なデータをバックアップし、安全な場所に保管する必要があります。

一般的な MySQL データのバックアップ方法には、対応するデータベースまたはテーブル ファイルを直接パッケージ化してコピーする (物理バックアップ)、mysqldump 完全論理バックアップ、xtrabackup 増分論理バックアップなどがあります。

一般的なデータ保存方法には、ローカル ストレージ、リモート サーバーへの FTP アップロード、クラウド ストレージ (Alibaba Cloud OSS、Qiniu Cloud Storage など)、さらにはローカル ストレージなどがあります。

オフサイト バックアップが必要なので、毎回手動でバックアップしたり、毎回ダウンロードに多くの時間を費やしたり、サーバー上でデータを失ったりしたくない場合があります。次に、データベースを定期的にバックアップし、指定されたサーバーまたはクラウド ストレージに自動的にアップロードするスクリプトを作成します。

ここでは、Linux サーバー上の MySQL をバックアップし、Qiniu Cloud Storage にアップロードする方法について説明します。

準備

• リナックス

•crontab サービス

crond サービスが開始済みかつ自動開始状態であることを確認する必要があります。

•gzipコマンド

ファイルを圧縮するには、システムで gzip コマンドを正常に実行できる必要があります。

•mysqldumpコマンド

論理データ バックアップの場合、システムは mysqldump コマンドを正常に実行できる必要があります。 mysqldump によってバックアップされたデータは実行可能な SQL で構成されており、バージョンの非互換性の問題はありません。

•qshellツール

qshell は、開発者が Qiniu API サービスをテストおよび使用しやすくするために、Qiniu Cloud が Qiniu ドキュメントのパブリック API を使用して公式に実装したコマンドライン ツールです。

具体的なドキュメントとダウンロードアドレス: https://developer.qiniu.com/kodo/tools/1302/qshell

• Qiniuクラウドアカウント

もちろん、データを保存するための前提条件は、Qiniu アカウントを持っていることです。Qiniu は個人使用のために 10G の無料ストレージ スペースを個人に提供します。登録住所:
https://portal.qiniu.com/signup?code=3looatwobaxci

• 七牛収納スペース

Qiniu Cloud アカウントを取得したら、データを保存するためのスペース (バケット) をコンソールに手動で作成する必要があります。

qshell の設定

公式アドレスからダウンロードした qshell は、複数のシステム プラットフォームをサポートする圧縮パッケージです。対応するシステムのバイナリ ファイルを選択し、実行権限を付与します。また、qshell コマンドを直接呼び出すために、/usr/local/bin/ などのディレクトリに配置することもできます。

Qiniu アカウントを設定します。ak と sk は、Qiniu Cloud Console > Personal Center > Key Management にあります。
qshell アカウント ak sk

このコマンドは、ak/sk アカウントを ~/.qshell/account.json に書き込みます。それ以上の設定は必要ありません。

ここで使用する qshell コマンドは rput で、マルチパート アップロード モードでファイルをアップロードします。次のドキュメントを使用します。

https://github.com/qiniu/qshell/blob/master/docs/rput.md

qshell rput <バケット> <キー> <ローカルファイル> true

qshell のその他の詳細な機能については、ドキュメントを参照してください。

スクリプトの内容

#!/bin/sh
#mysql データ バックアップ スクリプト
#
# mysqldump --help を使用して詳細を取得します。
dbname=あなたのデータベース名
ユーザー=あなたのDBユーザー名
パスワード=あなたのDBパスワード
バックアップディレクトリ=/opt/backup/sql
ログファイル=/opt/backup/mysqlbak.log
datetime=`日付 +%Y%m%d%H%M%S`
保持日=7
echo "------------------------------------------" >> $logFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $logFile
echo "--------------------------" >> $logFile
cd $bakDir
バックアップファイル=$dbname.$datetime.sql.gz
mysqldump -u $user -p $password $dbname | gzip > $bakFile
echo "データベース [$dbname] のバックアップが完了しました" >> $logFile
echo "$bakDir/$bakFile" >> $logFile
echo "Qiniu Cloud Storage へのバックアップファイルのアップロードを開始します" >> $logFile
/usr/local/bin/qshell rput <バケット> database/$bakFile $bakFile true | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" >> $logFile 2>&1
echo "${keepDay} 日前のバックアップ ファイルを削除します" >> $logFile
$bakDir -ctime +$keepDay >> $logFile を検索します
$bakDir -ctime +$keepDay -exec rm -rf {} \; を検索します。
エコー " " >> $logFile
エコー " " >> $logFile

スクリプト内のデータベース構成、ログファイル、ストレージパス、<Bucket>などは自分で変更して存在させる必要があります。 database/$bakFile は <Key> を表します。これは Qiniu ストレージ内のパスとファイル名であり、カスタマイズ可能です。

スクリプト ファイルには実行権限が必要であり、その後スクリプトを実行してテストすることができます。

スケジュールされたタスク

# 毎日午前2時にバックアップスクリプトを実行する * 2 * * * /opt/backup/baksql.sh

スケジュールされたタスクが実行されない場合は、ログ /var/log/cron を確認して問題をトラブルシューティングするか、crond が実行されているかどうかを確認します。

要約する

上記は、Mysql を定期的にバックアップして Qiniu にアップロードする方法を紹介しました。お役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQL のスケジュールされたバックアップ、削除、および回復機能を実装するシェル スクリプト
  • CentOS での MySQL スケジュール バックアップ シェル スクリプトの共有
  • MySQL スケジュール バックアップ ソリューション (Linux crontab を使用)
  • MySQL スケジュールバックアップタスクの簡単な分析
  • MySQL スケジュールされたデータベース バックアップ操作の例
  • MySQLデータベースのスケジュールバックアップを実装する方法
  • Linux で MySQL データベースのスケジュールされたバックアップを実装する簡単な方法
  • LinuxはMySQLデータベースの自動バックアップとスケジュールバックアップを毎日実装しています
  • MySQL データベースのスケジュールされたバックアップ スクリプトの共有
  • Windows での MySQL スケジュールバックアップ スクリプトの実装
  • MySQL データベースを自動的にバックアップする最良の方法 (Windows サーバー)
  • Windows での MySQL の使用: 自動スケジュールバックアップの実装

<<:  一般的な Linux ツール vi/vim の完全版

>>:  Angularルーティングの基礎の詳細な説明

推薦する

vite2.x は ant-design-vue@next コンポーネントのオンデマンド読み込みを実装します。

1. 使用バージョンバイト:2.0 ant-design-vue: 2.0.0-rc.8ヴュー:3...

WeChatアプレットが検索ボックス機能を実装

この記事の例では、WeChatアプレットの検索ボックス機能を実装するための具体的なコードを参考までに...

WeChatアプレットがチャットルーム機能を実現

この記事では、参考のために、WeChatアプレットのチャットルームを実装するための具体的なコードを例...

9999px に別れを告げる新しい CSS 画像置換テクニック (背景表示と画面外へのテキストの移動)

-9999 ピクセルの画像置換技術は、ここ 10 年近く人気があります。テキスト要素を画像に置き換え...

MySQLで自動作成時間と変更時間を設定する方法の例

この記事では、MySQL の自動作成時刻と変更時刻を設定する方法について説明します。ご参考までに、詳...

JavaScript で 9 グリッドのモバイル パズル ゲームを実装

この記事では、Jiugonggeモバイルパズルゲームを実装するためのJavaScriptの具体的なコ...

DockerにrockerChatをインストールし、チャットルームを設定するための詳細な手順

包括的なドキュメントgithubアドレスhttps://github.com/RocketChat/...

Vueカスタム命令の詳細な説明

目次Vueカスタムディレクティブカスタムディレクティブフック機能出力関連属性アプリケーション例要約す...

MySQL の完全バックアップとクイックリカバリ方法

過去 15 日間のデータをバックアップするシンプルな MySQL 完全バックアップ スクリプト。バッ...

MySQL データ圧縮パフォーマンス比較の詳細

目次1. テスト環境1.1 ハードウェアとソフトウェア1.2 テーブル構造2. テストの目的2.1 ...

jwtを使用してノードによって生成されたトークンをどこに保存するかについての簡単な説明

A: 通常はクライアントに保存されます。 jwt または JSON Web Token は、リクエス...

企業サイトとコラム辞典 中国語と英語の比較 中国語と英語のバイリンガル企業サイトを作る仲間は

名前キャラクター名前キャラクター情報ニューステクノロジー技術スキンケアスキンケア補う補う香水香水化粧...

Vueキャッシュ機能の使い方

目次vue2のキャッシュ機能Vue キャッシュ関数の変換最適化要約するvue2のキャッシュ機能vue...

CSS で div にスクロールを追加し、スクロール バーを非表示にする

CSS は div にスクロールを追加し、スクロール バーを非表示にします。具体的なコードは次のとお...

MySQL はデータベースを動的に更新します スクリプト例の説明

具体的なupgradeスクリプトは次のとおりです。インデックスを動的に削除する アップグレードが存在...