Description
概要
【5/30】航海日誌48時間過ぎたデータの削除 #1850
のリリース用PR
テスト方法、確認した内容
手順
1. del_log_data.shのクローンを念の為一旦コメントアウト
2. jrye.log_user_activity__new を作成
CREATE TABLE `jrye`.`log_user_activity__new` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_no` int(11) NOT NULL,
`type` tinyint(4) NOT NULL,
`type2` tinyint(4) NOT NULL,
`user_no2` int(11) NOT NULL,
`info1` int(11) NOT NULL DEFAULT '0',
`info2` int(11) NOT NULL DEFAULT '0',
`info3` int(11) NOT NULL DEFAULT '0',
`check_flg` tinyint(4) NOT NULL DEFAULT '0',
`reg_date` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_no` (`user_no`,`type`,`reg_date`),
KEY `user_no_2` (`user_no`,`check_flg`,`type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;3. jryeDBで、log_user_activity__newテーブルとlog_user_activityテーブルを入れ替え
RENAME TABLE log_user_activity TO log_user_activity__old, log_user_activity__new TO log_user_activity;4. jryeDBで、log_user_activity__oldテーブルからlog_user_actibityテーブルへ48時間分のレコードを挿入
ENVIRONMENT=productionPF=yamada php lib/exec/tool_insert_recently_log_user_activity.php5. jrye_logDBで、元のlog_user_actibityテーブルを削除
DROP TABLE `jrye_log`.`log_user_activity`;6. jrye_logDBで、パーティション化されたlog_user_actibityテーブルを作成
CREATE TABLE `jrye_log`.`log_user_activity` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_no` int(11) NOT NULL,
`type` tinyint(4) NOT NULL,
`type2` tinyint(4) NOT NULL,
`user_no2` int(11) NOT NULL,
`info1` int(11) NOT NULL DEFAULT '0',
`info2` int(11) NOT NULL DEFAULT '0',
`info3` int(11) NOT NULL DEFAULT '0',
`check_flg` tinyint(4) NOT NULL DEFAULT '0',
`reg_date` int(11) NOT NULL,
PRIMARY KEY (`id`,`reg_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;ALTER TABLE `jrye_log`.`log_user_activity`
PARTITION BY RANGE ( reg_date ) (
PARTITION p202205 VALUES LESS THAN ( 1654009200 ),
PARTITION p202206 VALUES LESS THAN ( 1656601200 ),
PARTITION p202207 VALUES LESS THAN ( 1659279600 ),
PARTITION p202208 VALUES LESS THAN ( 1661958000 ),
PARTITION p202209 VALUES LESS THAN ( 1664550000 ),
PARTITION p202210 VALUES LESS THAN ( 1667228400 ),
PARTITION p202211 VALUES LESS THAN ( 1669820400 ),
PARTITION p202212 VALUES LESS THAN ( 1672498800 ),
PARTITION p202301 VALUES LESS THAN ( 1675177200 ),
PARTITION p202302 VALUES LESS THAN ( 1677596400 ),
PARTITION p202303 VALUES LESS THAN ( 1680274800 ),
PARTITION p202304 VALUES LESS THAN ( 1682866800 ),
PARTITION p202305 VALUES LESS THAN ( 1685545200 ),
PARTITION p202306 VALUES LESS THAN ( 1688137200 ),
PARTITION p202307 VALUES LESS THAN ( 1690815600 ),
PARTITION p202308 VALUES LESS THAN ( 1693494000 ),
PARTITION p202309 VALUES LESS THAN ( 1696086000 ),
PARTITION p202310 VALUES LESS THAN ( 1698764400 ),
PARTITION p202311 VALUES LESS THAN ( 1701356400 ),
PARTITION p202312 VALUES LESS THAN ( 1704034800 ),
PARTITION p202401 VALUES LESS THAN ( 1706713200 ),
PARTITION p202402 VALUES LESS THAN ( 1709218800 ),
PARTITION p202403 VALUES LESS THAN ( 1711897200 ),
PARTITION p202404 VALUES LESS THAN ( 1714489200 ),
PARTITION p202405 VALUES LESS THAN ( 1717167600 ),
PARTITION p202406 VALUES LESS THAN ( 1719759600 ),
PARTITION p202407 VALUES LESS THAN ( 1722438000 ),
PARTITION p202408 VALUES LESS THAN ( 1725116400 ),
PARTITION p202409 VALUES LESS THAN ( 1727708400 ),
PARTITION p202410 VALUES LESS THAN ( 1730386800 ),
PARTITION p202411 VALUES LESS THAN ( 1732978800 ),
PARTITION p202412 VALUES LESS THAN ( 1735657200 )
);7.cronにバッチを設定して、10分ごとにjrye.log_user_actibityテーブルからjrye_log.log_user_actibityテーブルに48時間以前のデータを移動
TODO
この手順だと一時的にlog_user_activityのデータが消えて航海日誌の表示が空になるので深夜アクセスが少ない時間に作業した方が良いかもしれない