MySQL 테이블 스페이스가 정상적으로 디스크 영역을 잡아가고 있는지,
로그에 기록이 어떻게 싸여 가고 있는지... 등등을 보고 싶지만,
1초 주기로 화살표 위로 올리고 엔터치기 귀찮으신 분들(나 포함 --;;)......
이 명령어 하나만 써보시면, 체증이 확 풀릴 수 있다. (-0-)/
---------------------------------------------------------------------------------
[um@localhost /] watch --help
Usage: watch [-dhntv] [--differences[=cumulative]] [--help] [--interval=<n>] [--no-title] [--version] <command>
-d, --differences[=cumulative] highlight changes between updates
(cumulative means highlighting is cumulative)
-h, --help print a summary of the options
-n, --interval=<seconds> seconds to wait between updates
-v, --version print the version number
-t, --no-title turns off showing the header
---------------------------------------------------------------------------------
라고 나와 있다.
뭐.... 사용방법은 간단하게...... 아래와 같다..
*********************************************************************************************************
watch -n갱신주기(단위:초) "명령어"
*********************************************************************************************************
대충 내가 써먹는 것을 예로 들자면.... 이런거 -0-?
---------------------------------------------------------------------------------
[um@localhost /] watch -n1 "df -h"
Every 1.0s: df -h Thu Jul 2 11:27:55 2009
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 4.0G 2.5G 1.3G 67% /
none 2.0G 0 2.0G 0% /dev/shm
/dev/sda2 61G 25G 34G 43% /my1
---------------------------------------------------------------------------------
기껏해야 이정도지만,
머리가 좋으신 분들은 여러모로 다르게 사용하실 수 있으실 거라 믿는다.. ^^;;
mysql bin-log 가 많이 쌓여서, 디스크를 꾹꾹 채워가는 것이 마음에 걸린다.
로그를 자동으로 지우고 싶다...
그래서 고수님이 일전에 가르쳐 주신, 리눅스 명령어를 이용해 크론탭을 걸어주었다.
## CRONTAB ##########################################################################
0 0 * * * (find /db/mysql/mysqllog/mysql-bin.* -ctime +14 -exec rm -rf {} \;)
#######################################################################################
의미인 즉슨,
| 0 0 * * * | 매일 자정에 |
| find /db/mysql/mysqllog/mysql-bin.* | /db/mysql/mysqllog/ 에 있는 mysql-bin 이란 이름을 갖는 모든 파일 중 |
| -ctime +14 | 최종 수정시간이 14일이 넘는다면 |
| rm -rf {} \; | 지우시오~ |
흠... 이제 디스크 풀났다구 걱정할 필요는 없다.
***** 추가 ********************************************************
아.. MySQL 리퍼런스를 백날 읽고, 서버 스테이터스랑 베리어블을 백날 봐도 무슨 소용인가 ㅠ,.ㅠ
무식하면 3대가 내리 고생한다고...
MySQL 에서 글로벌 변수 logs를 찾아보자.
mysql> SHOW GLOBAL VARIABLES LIKE '%logs%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| expire_logs_days | 60 |
+------------------+-------+
1 row in set (0.03 sec)
MySQL에서는 로그가 오래되면 자동으로 삭제하게 해주는, expire_logs_days 가 있다.
동적으로 변경이 가능한 변수이므로,
1. SET GLOBAL expire_logs_days = 60;
라고 입력해도 바로 적용 되고,
2. my.cnf 의 [mysqld] 영역에
-----------------------------------------------
[mysqld]
# generic configuration options
port = 3306
socket = /tmp/mysql.sock
skip-character-set-client-handshake
character-set-filesystem = utf8
default-character-set = utf8
skip-locking
expire_logs_days = 60
federated
------------------------------------------------
라고 추가해 주고 mysql을 재시작해도 된다.
mysql의 로그는 예민한 영역이 될 수 있으므로,
시스템이 권장하는 방식으로 로그를 관리하도록 하자.
my.cnf 를 변경하고도 아래와 같은 에러 메세지가 발생하였다.
## 에러메세지 #################################################################################
ERROR 1201 (HY000) at line 22: Could not initialize master info structure; more error messages can be found in the MySQL error log
################################################################################################
흠....
"왜 그럴까? 그럼 리셋을 해보자." 라는 마음으로
mysql > master reset; 을 수행하였다. -> 땡!! 안 돼더라...
mysql > slave reset; 을 수행하였다. -> 딩동댕.... 됀다~~~!!!!
슬레이브 셋팅을 초기화 하니깐 해결.......
원인 분석은..... 지금 바쁘니깐, 패스~ 하고 나중에.... 할 수 있으려나 -0-?
참고 링크: http://forums.mysql.com/read.php?26,259192,260483#msg-260483
PREV