MYSQLのバックアップデータのスケジュールクリアの特定の操作

MYSQLのバックアップデータのスケジュールクリアの特定の操作

1|0 背景

プロジェクトの要件により、各月の履歴在庫データをアーカイブしてバックアップする必要があり、MySQL データベース ディスクのスペースを節約するために、一部のログ テーブルの詳細フィールドをクリアする必要があります。このデータを定期的にクリーンアップするには、いくつかのスケジュールされたタスクが必要です。

2|0 技術選択

  • JavaはQuartz/Timerに基づくスケジュールタスクメカニズムを使用してスケジュールタスクを記述できますが、これにはJavaプログラムへの依存が必要です。
  • Linux の Crontab をベースに cron 式によるスケジュールされたタスク ドキュメントを作成するには、対応するスクリプトを作成する必要があります。ただし、このスクリプトではデータベースを操作する必要があるため、プレーン テキストのパスワードなどのデータが必然的に含まれ、安全性があまり高くありません。
  • MYSQL データベースが使用され、MYSQL はスケジュールされたタスクをサポートしているため、MYSQL に組み込まれているスケジュールされたタスクを使用できます。

3|0 特定の操作

3|1mysql 設定

MySQL のデフォルト設定ではスケジュールされたタスク オプションはオフになっているため、念のため、まずはオプションがオンになっているかどうかを確認しましょう。

'%event_scheduler%' のような変数を表示します。

[オフ] オプションが表示されている場合は、次の 2 つの方法で変更できます。

1. ステートメント方式(現在起動中のインスタンスでは有効、再起動後は無効)

グローバルevent_schedulerを1に設定します。

2. my.cnf(Windowsではmy.ini)を設定し、次のオプションを追加します。

[mysqld]
イベントスケジューラ=オン


保存してmysqlを再起動します

3|2SQLライティング

ストアド プロシージャ (プロシージャ) を作成します [オプション: 単純な SQL の場合は、スケジュールされたタスクで直接指定できます]

ストアド プロシージャ: ストアド プロシージャ (英語: Stored Procedure) は、外部プログラムが呼び出すために複雑なプログラムをデータベースに格納するデータベース オブジェクトです。データベースの関数またはサブルーチンと見なすことができます。

PROCEDURE sched_clean() を作成します --name BEGIN
-- パラメータを定義します。DECLARE begin_time BIGINT DEFAULT UNIX_TIMESTAMP(DATE_SUB(CURRENT_DATE(),interval 31 DAY))*1000;
end_time を BIGINT DEFAULT UNIX_TIMESTAMP(DATE_SUB(CURRENT_DATE(),interval 30 DAY))*1000 として宣言します。
-- データを更新します UPDATE test_table SET rule_cost=null WHERE start_time>begin_time and start_time<end_time;
終わり

スケジュールされたタスクを作成する

ストアド プロシージャが作成されると、定期的に呼び出すことができます。

イベント `demo`.`day_of_clean_event` を作成します
スケジュールに従って '1' 日ごとに開始 DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)
ON完了保存無効
sched_clean() を呼び出します。

コードの説明:

  • CREATE EVENT demo.day_of_clean_event は、デモデータベースに day_of_clean_event という名前のイベントを作成します。
  • 作成時間のタイミングサイクルと開始時間を示します。これは、明日の 1 時から 1 日に 1 回タスクが実行されることを意味します。
  • 3行目は作成後に有効にならないことを示しています
  • 4行目は実行するタスクを示します(ここにSQL文を直接記述することもできます)

関連クエリ

このマシンのすべてのイベントを照会する

information_schema.EVENTS から、event_name、event_definition、interval_value、interval_field、status を選択します。

すでに作成されたイベントを有効/無効にする

alter event event_name on completion preserve enable; //スケジュールされたタスクを開く alter event event_name on completion preserve disabled; //スケジュールされたタスクを閉じる

4|0 注目すべき点

グローバル パラメータがスケジュールされたタスクを開始するように構成されていない場合、作成されたイベントを開始しても、information_schema.EVENTS テーブルでレコードを見つけることができません。

4|1 一般的なサイクルタイミングルール

① サイクル実行 – キーワードEVERY

単位は、秒、分、時間、日、週、四半期、月、年などです。

スケジュールに従って 1 秒ごとに // 1 秒ごとに 1 回実行 スケジュールに従って 2 分ごとに // 2 分ごとに 1 回実行 スケジュールに従って 3 日ごとに // 3 日に 1 回実行

② 特定の時間に実行する – キーワード AT、例:

スケジュールどおり、current_timestamp()+interval 5 day // 5日後に実行 スケジュールどおり、current_timestamp()+interval 10 minute // 10分後に実行 スケジュールどおり、'2016-10-01 21:50:00' // 2016年10月1日午後9時50分に実行

③ 特定の期間に実行する – 次のようなキーワードSTARTS ENDS:

スケジュールに従って 1 日ごとに開始 current_timestamp()+interval 5 日 終了 current_timestamp()+interval 1 か月 //5 日後に毎日実行を開始し、翌月末に終了します スケジュールに従って 1 日ごとに終了 current_timestamp()+interval 5 日 //5 日間毎日実行を開始します

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • MySQL データベースの毎日のスケジュールされたバックアップを実行する Linux シェル
  • Windows での MySQL の使用: 自動スケジュールバックアップの実装
  • Linux での crontab スケジュール バックアップの例を使用した MySQL スケジュール バックアップ
  • MySQL データベースを自動的にバックアップする最良の方法 (Windows サーバー)
  • LinuxはMySQLデータベースの自動バックアップとスケジュールバックアップを毎日実装しています
  • CentOS での MySQL スケジュール バックアップ シェル スクリプトの共有
  • 定期的にMySQLをバックアップし、定期的にnginxのアクセスログをカットする方法
  • Navicat for MySQLのスケジュールされたデータベースバックアップとデータ復旧の詳細
  • MySQLデータベースのスケジュールバックアップを実装する方法
  • MySQLを定期的にバックアップしてQiniuにアップロードする方法

<<:  オブジェクト指向の観点から Vue コンポーネントを理解するための簡単な分析

>>:  ElasticSearch と ElasticSearch-Head の Docker デプロイメントの実装

推薦する

VMware ESXi 6.0 および仮想マシンのインストール チュートリアルの展開 (画像とテキスト)

社内には以前からアイドル状態だった、構成の整ったサーバーがあったので、EXSI 6.0 を使って複数...

MySQL 内部結合の使用例 (必読)

文法規則 列名を選択 テーブル名1から INNER JOIN テーブル名2 ON テーブル名1.列名...

HTML フォームタグチュートリアル (2):

このチュートリアルでは、ウェブデザインにおけるFORMフォームタグのさまざまな属性の応用を紹介します...

nginx.conf ファイルの構文強調表示とフォーマット設定には nginx.vim ツールを使用します。

私はtengineを使用しています。インストールディレクトリは/usr/local/tengineで...

Vueはボトムクエリ関数を実装します

この記事では、ボトムクエリ機能を実装するためのVueの具体的なコードを例として紹介します。具体的な内...

MySQLデータベースを別のマシンに移行する方法の詳細な説明

1. まず、移行サーバー上のデータ ファイルを見つけます。MySQL 5.7 とデフォルトのインスト...

HTML はテキストの外側に省略記号を表示します...テキストオーバーフローによって実装されます

div または span に同時に CSS を適用する必要があります。コードをコピーコードは次のとお...

MySQL 集計関数のソート

目次MySQL 結果のソート - 集計関数環境クエリ結果の並べ替えクエリのグループ化と集約生徒の平均...

州と市町村の連携を簡単に実現するJavaScript

この記事では、省と市の簡単な連携を実現するためのJavaScriptの具体的なコードを参考までに紹介...

見落としがちなMySQLのCOLLATIONの例の詳細な説明

序文MySQL データベースの文字列型は、CHAR、VARCHAR、BINARY、BLOB、TEXT...

ElementUI コンポーネント el-dropdown (落とし穴)

選択して変更: クリックすると現在の値が表示され、ページ UI が表示され、CSS スタイルが変更さ...

ウェブページの色特性の分類

色特性の分類あらゆる色は、赤、緑、青の三原色から構成されます。三原色の中で暖色なのは赤だけなので、作...

Vue はユーザーのログイン状態を維持します (さまざまなトークン保存方法)

目次クッキーの設定方法クッキーのデメリット: LocalStorage と SessionStora...

jsはブラウザを閉じるときにアカウントのログアウトを処理します

目次古典的なアプローチ質問その他の質問注意が必要な問題古典的なアプローチご存知のとおり、アカウントの...

Linux seqコマンドの使い方の詳しい説明

01. コマンドの概要seq コマンドは整数のシーケンスを生成するために使用されます。 02. コマ...