TOP ▲
itcore TOP
> TIPS
> mysql_clean.php
タグ:mysql クリーニング MySQL 不要なDBのクリーニング | itcore 2019年
バックアップ
安全のためにDB毎のバックアップをとる。
DB一覧
mysql> show databases
DB内容確認
mysql> use sc80
Database changed
mysql> show tables;
Empty set (0.00 sec)
DB削除
※要注意 DB名間違えないように
mysql> drop database sc80;
Query OK, 0 rows affected (0.08 sec)
大きなデータの削減
全てのデータベースをデータベース毎のファイルにバックアップする。
DB毎のバックアップから容量の大きいDBを把握する。
-rw-r--r-- 1 root root 751338452 3月 23 06:47 ehr-20190323_064654.sql
-rw-r--r-- 1 root root 3051970 3月 23 06:48 koganepod-20190323_064828.sql
-rw-r--r-- 1 root root 520766 3月 23 06:48 mysql-20190323_064828.sql
-rw-r--r-- 1 root root 56560 3月 23 06:48 ob-20190323_064828.sql
-rw-r--r-- 1 root root 16752 3月 23 06:48 performance_schema-20190323_064828.sql
-rw-r--r-- 1 root root 2201167802 3月 23 06:49 uri-20190323_064828.sql
大きなDB(uri)のテーブル毎のバックアップをとる。
uriの大きなテーブルを調べる。
root@linux1:/var/bkup_mysql# ls -l /var/bkup_mysql/ |grep ' uri-' |awk '{print $5,$9}'|sort -rn|head
2201167802 uri-20190323_064828.sql
2200986606 uri-20190321_141517.sql
2014083606 uri-Seikyu_Image-20190323_073836.sql
58600893 uri-YayoiImport-20190323_073952.sql
41662365 uri-OrderImage-20190323_073833.sql
23818294 uri-OrderTable-20190323_073835.sql
11646908 uri-SaiyoImage-20190323_073836.sql
11483463 uri-ItemTable-20190323_073832.sql
8918157 uri-Shiharai-20190323_073951.sql
6418236 uri-Seikyu_delete-20190323_073951.sql
mysql> use uri
mysql> desc Seikyu_Image;
+----------------------+-------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+-------------+------+-----+-------------------+-----------------------------+
| si01_order_id | varchar(6) | NO | PRI | | |
| si02_seq | int(11) | NO | PRI | 0 | |
| si03_title | varchar(50) | YES | | NULL | |
| si04_last_update | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| si05_pdf_body | mediumblob | YES | | NULL | |
| si06_saihakkou_check | int(11) | YES | | NULL | |
+----------------------+-------------+------+-----+-------------------+-----------------------------+
mysql> select count(*) from Seikyu_Image;
mysql> select left(si04_last_update,4), count(*) from Seikyu_Image group by left(si04_last_update,4);
+--------------------------+----------+
| left(si04_last_update,4) | count(*) |
+--------------------------+----------+
| 2006 | 1922 |
| 2007 | 4413 |
| 2008 | 4401 |
| 2009 | 3583 |
| 2010 | 3475 |
| 2011 | 2944 |
| 2012 | 2217 |
| 2013 | 1327 |
| 2014 | 670 |
| 2015 | 601 |
| 2016 | 315 |
| 2017 | 278 |
| 2018 | 294 |
| 2019 | 91 |
+--------------------------+----------+
10年以上前のデータを削除する。
mysql> select count(*) from Seikyu_Image where left(si04_last_update,4) < 2009;
mysql> delete from Seikyu_Image where left(si04_last_update,4) < 2009;
mysql> select left(si04_last_update,4), count(*) from Seikyu_Image group by left(si04_last_update,4);
+--------------------------+----------+
| left(si04_last_update,4) | count(*) |
+--------------------------+----------+
| 2009 | 3583 |
| 2010 | 3475 |
| 2011 | 2944 |
| 2012 | 2217 |
| 2013 | 1327 |
| 2014 | 670 |
| 2015 | 601 |
| 2016 | 315 |
| 2017 | 278 |
| 2018 | 294 |
| 2019 | 91 |
+--------------------------+----------+