質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

解決済

2回答

1983閲覧

データの移行および削除について

takagi.1994

総合スコア47

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2016/05/24 14:48

編集2016/05/26 20:49

あるテーブルのデータを一定期間経過したら過去データをdumpファイルにするか、別のテーブルへコピーをして削除したいと思っているのでが、一般的にどのような方法が考えられるでしょうか?

mysqlだけで行うことは可能なのでしょうか?
それともタスクスケジューラやcronにてスクリプトを回す必要があるでしょうか?

もう少し具体的に言いますと、
テーブルに日時とデータが毎秒挿入されていきます。

このデータをアプリケーションから必要な時にとりにくるのですが、そのときに必要なデータは過去1日分なので、それ以上は必要ないのですが、別のアプリケーションにて過去のデータを必要とする場合があるので、削除するわけにはいきませんが、テーブルにはなるべく最低限のデータとして軽くさせたいと思っています。

なので、定期的にテーブルからデータを定期的に抜き取って削除しようと思っています。
この場合、テーブルのコピーでもdumpファイルでもどちらでも構いません。また、方法も今回は 簡単 > 軽い、効率 が良いかなと思っています。

運用はcentosで考えていますが、場合によってはwindowsでもといいのかなとはおもっています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

mysqlだけで行うことは可能なのでしょうか?

については、イベントスケジューラを使う、という手があります。
https://dev.mysql.com/doc/refman/5.6/ja/events.html
https://mariadb.com/kb/en/mariadb/events/

対象テーブルからバックアップテーブルに1日以上前のデータをコピーし、対象テーブルから削除するストアドプロシージャを作り、それをイベントスケジューラを利用して日次で実行してやれば、望むことが実現できると思います。

もっとも、タスクスケジューラやcronと比べて、必ずしもこの方法の方が良い、というわけではありません。
例えばDBを(Master-Slaveなどの)冗長構成にしている場合、Master側でしか動かさないようにする措置が必要となりますので。

ご自身の要件やお使いの環境などを考慮して、適切な方を選択するのが良いでしょう。

投稿2016/05/24 15:37

KiyoshiMotoki

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takagi.1994

2016/05/26 20:51

ありがとうございました。 参考になりました。
guest

0

一般的かはわかりませんが、例えばこんな方法は手軽に出来ますね。
1.mysqldumpでデータをバックアップする(出来れば処理の軽い時間にcronで実施)
2.バックアップ完了したら時間で指定してDELETEする(これも軽い時間にcronで実施)

ある程度お金をかけていい&クラウド環境が許容されるような条件であれば、
フルマネージドなMySQLサービス、例えばAWSのRDS(Multi-AZ)を利用すれば自動で定期的にスナップショットを取るような機能が提供されます。

投稿2016/05/24 15:16

tanat

総合スコア18713

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takagi.1994

2016/05/24 15:39

さっそくのご回答ありがとうございます。 バックアップと削除はやはり別として考えないといけないのですかね。 やはりcronとかでバッチ処理的な感じになるのですかね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問