사내 JIRA, WIKI 관리하는 서버의 디스크가 꽉차 간다.
$ df -h | Filesystem Size Used Avail Use% Mounted on | /dev/xvda1 296G 263G 33G 89% / | devtmpfs 3.7G 56K 3.7G 1% /dev | tmpfs 3.7G 0 3.7G 0% /dev/shm
|
|
뒤져보니 작년부터 binary log가 쌓여왔다.
$ ls -al /var/lib/mysql/ | ... 중략 ... | -rw-rw---- 1 mysql mysql 1073772329 Jan 8 2017 mysql-bin.000179 | -rw-rw---- 1 mysql mysql 1073766072 Jan 12 2017 mysql-bin.000180 | -rw-rw---- 1 mysql mysql 1073750174 Jan 16 2017 mysql-bin.000181 | -rw-rw---- 1 mysql mysql 1073750131 Jan 19 2017 mysql-bin.000182 | -rw-rw---- 1 mysql mysql 1073778740 Jan 23 2017 mysql-bin.000183 | -rw-rw---- 1 mysql mysql 1073785719 Jan 26 2017 mysql-bin.000184 | -rw-rw---- 1 mysql mysql 1073742779 Jan 30 2017 mysql-bin.000185 | -rw-rw---- 1 mysql mysql 1073754445 Feb 2 2017 mysql-bin.000186 | -rw-rw---- 1 mysql mysql 1073779324 Feb 8 2017 mysql-bin.000187 | -rw-rw---- 1 mysql mysql 1073757781 Feb 11 2017 mysql-bin.000188 | -rw-rw---- 1 mysql mysql 1073764278 Feb 15 2017 mysql-bin.000189 | -rw-rw---- 1 mysql mysql 1073742518 Feb 18 2017 mysql-bin.000190 | ... 중략 ... |
|
삭제해야지라고 생각했지만 이런 파일은 생각없이 rm으로 지우면 안되지
뒤져보니 설정 1줄 추가하면 된다.
저렇게 하면 3일치만 남겨놓고 나머지는 다 지운다.
/etc/my.cnf
[mysqld] ... 중략 ... expire_logs_days=3 |
이게 서비스 중인데
2017년부터 안 건드렸다면 함부로 mysql 데몬을 restart할 수가 없다.
이 회사에 온지 몇달 안되서 그간 바뀐 설정이 뭐인지도 모르고,
stop은 되겠지만 start 가 안되면... 괜히 여러사람 피곤해진다.
쫄아서 찾아보니 reload가 있다.
nginx reload하듯이 설정을 다 읽어와주는 것인가!! (결론은 아니었다. 😭)
% cat /etc/init.d/mysqld | | ... 중략 ... | reload) | exit 3 | ;; |
|
exit 3이니까 SIGQUIT일테고 mysqld에서 지정한 시그널 핸들러에 의해 동작.
찾아보니 table의 grant를 reload 한다. 😭
https://dev.mysql.com/doc/refman/5.5/en/mysqladmin.html | | reload | Reload the grant tables. |
|
결국 SET GLOBAL을 이용해서 세팅을 바꿔주었다.
mysql> SET GLOBAL expire_logs_days = 3; | Query OK, 0 rows affected (0.00 sec) | | mysql> show global variables like 'expire_logs_days'; | +------------------+-------+ | | Variable_name | Value | | +------------------+-------+ | | expire_logs_days | 3 | | +------------------+-------+ | 1 row in set (0.00 sec) |
|
세팅 바꿔주고 1시간 정도 있다가
df로 줄어들었나 확인해보았다.
안 줄었다. 😭
언제 줄어드는지 검색해도 안나온다.
(프로세스 내부에서 뭔가 특정 시간에 주기적으로 돌면서 처리할듯한데.. )
아직 디스크 full 되려면 2~3주 남았으니 일단 퇴근하자.
다음날 출근해서 df로 확인해보니 지워졌다.
$ df | Filesystem 1K-blocks Used Available Use% Mounted on | /dev/xvda1 309503980 94337032 215066700 31% / | devtmpfs 3822500 56 3822444 1% /dev | tmpfs 3831692 0 3831692 0% /dev/shm
|
|
물론 정말 급한 경우였다면 PURGE를 이용해서 바로 지워버릴 수도 있다.
https://dev.mysql.com/doc/refman/8.0/en/purge-binary-logs.html
PURGE BINARY LOGS TO 'mysql-bin.010'; PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26'; |