PR

【6/9 17:30】リリース・航海日誌48時間過ぎたデータの削除 #1906

kouho opened this at 2022-06-02T16:19:20; closed

Description

opened by kouho at 2022-06-02T16:19:20; updated 2022-06-09T17:30:41

概要

【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.php

5. 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のデータが消えて航海日誌の表示が空になるので深夜アクセスが少ない時間に作業した方が良いかもしれない

kouho change_title at 2022-06-02T16:21:45: 【6/2】リリース・航海日誌48時間過ぎたデータの削除 【確認でき次第】リリース・航海日誌48時間過ぎたデータの削除

Comment

#19577 by kouho at 2022-06-02T16:25:29; updated 2022-06-02T16:25:29

@wada
確認をお願いいたします。

Comment

#19580 by wada at 2022-06-02T17:00:34; updated 2022-06-02T17:13:21

@kouho
~~ローカルで試して気付いたんですが、
新しいテーブルのidは1から採番されるので、どこかのタイミングで__oldから移動したレコードのidに追いつき重複エラーになります。~~

Comment

#19581 by wada at 2022-06-02T17:11:39; updated 2022-06-02T17:11:39

@kouho
違うところ見てました。問題ないです。

wada add_label at 2022-06-02T17:11:48: 和田 LGTM

Comment

#19583 by kouho at 2022-06-02T17:15:56; updated 2022-06-02T17:15:56

@wada
了解です。確認ありがとうございます。

Comment

#19584 by kouho at 2022-06-02T18:31:46; updated 2022-06-02T18:31:46

@wada
野田くんに相談したところスタンプラリー中はやめておいた方がいいとの判断になりました。

Comment

#19585 by wada at 2022-06-02T18:37:19; updated 2022-06-02T18:37:19

@kouho
了解しました。

kouho change_title at 2022-06-03T11:49:41: 【確認でき次第】リリース・航海日誌48時間過ぎたデータの削除 【スタンプラリー終了後】リリース・航海日誌48時間過ぎたデータの削除
kouho change_title at 2022-06-08T18:20:37: 【スタンプラリー終了後】リリース・航海日誌48時間過ぎたデータの削除 【6/9 17:00過ぎ】リリース・航海日誌48時間過ぎたデータの削除
kouho change_title at 2022-06-09T10:16:21: 【6/9 17:00過ぎ】リリース・航海日誌48時間過ぎたデータの削除 【6/9 17:30】リリース・航海日誌48時間過ぎたデータの削除
kouho merge at 2022-06-09T17:30:41: 【6/9 17:30】リリース・航海日誌48時間過ぎたデータの削除
kouho close at 2022-06-09T17:30:41: Close

Commit range

baseb34a47dc73e7829588da53b0d150505a73bfb6b8
head9e2de4f814ac67f15006b09b59f93502445285c5
base branchjolly/jr-web:master
head branchjolly/jr-web:del_log_user_activity

View commits

Commit details are loaded from Git when a dynamic archive server is running, or can be embedded with --include-commits.
Files changed2 filesView patch
statusfile
modifiedlib/exec/del_log_data.sh
addedlib/exec/tool_insert_recently_log_user_activity.php
Patch body is stored as a separate file to keep this page lightweight.