somemo's diary

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【mysql】足りなくなったときの対処【partition】

パーティションが足りなくなるというミスを犯してしまったときの対処法です。

パーティションの追加

以下のようにして追加します。

ALTER TABLE テーブル名 ADD PARTITION (
 PARTITION パーティション名 VALUES IN ( 追加する値) ENGINE = InnoDB
);

これだけです。ただし、そのときに運用中のテーブル対してパーティションを追加することに対するリスク等を把握していなかったので、他の方法にしました。

データ作成および取得の停止

幸いランキングデータであったため、ランキング作成(バッチ)の停止および、データ取得部分(DAO)の戻り値をnullにしました。スクリプト言語でよかったと思いました…。

パーティションの追加

上記の停止を確認後、テーブルのデータをダンプし、テーブルをリネームしました。

まずは、ダンプしたファイルをもとにパーティションを多くとるようにテーブル定義を修正(パーティション部分のみ)します。定義の修正を完了後、テーブルを作り、ダンプしたデータをもとにデータを入れ直しました。

停止していた作成と取得機能を元に戻して完了しました。

まとめ

パーティションの追加であげた方法を定期的に自動で実行するようにしましょう。今回行なった方法は、データの用途が重要でなかったためなので、いつでもできるわけではありません。運用中のテーブル対してパーティションを追加するとどうなるのか調べてみたいと思います。