2015년 10월 29일 목요일

[Linux] du 명령어 (리눅스 디렉토리 용량 확인)

매번 사용하지만 매번 기억을 못하기에 남겨둠 -_-;

du -hs 폴더

해당 폴더의 하위 폴더 및 파일의 용량을 확인 하려면

du -hs *

[Mysql] bin log(mysql-bin) 관리

서버를 운영하다 보면
/usr 파티션이 100%되어 DB Connect이 안되는 등의 문제로 서비스가 중지되는 경우가 발생하곤 함.

주기적으로 서버에 접속해서 파티션이나 용량등을 체크해주는 경우가 가장 좋으나, 이런 경우가 빈번하게 발생(DB의 사용빈도가 높다거나..)하면 여간 번거로운게 아님.

해서 Mysql의 bin log를 관리할 수 있는 설정을 찾아봄.

Mysql의 bin log는 Mysql 쿼리를 수행하면서 쌓이는 로그로, 트렉젝션등을 하여 시점 복구 등에 사용되는 중요한 로그 파일 임.

bin log 설정 변경을 위해서는 my.cnf 즉 Mysql의 설정파일에 내용을 추가 또는 변경해야 함.

일반적으로 Mysql의 환경설정 파일이 /etc/my.cnf 에 위치한다고 가정하고
bin log 파일을 /home/backup/db 으로 저장 위치를 변경하는 것으로 설정을 변경 할 것이다.
만약 bin log 파일의 위치를 변경하지 않는다면, 저장 위치 설정은 수정안해도 무방함.

[root@server]# vi /etc/my.cnf

Mysql 설정 파일을 vi로 연 후에 [mysqld] 아래에

log-bin=/home/backup/db/mysql-bin   // 빈로그 저장 설정 및 저장할 디렉토리 지정
binlog_cache_size = 5M   // binlog 캐쉬 사이즈
max_binlog_size = 100M  // binlog 파일 최대 사이즈
expire_logs_days = 10   // log 보관 기간(일)
위 내용을 추가!!

1Line의 "log-bin=/home/backup/db/mysql-bin" 은
저장 위치는 "/home/backup/db" 이고
해당 디렉토리 아래에 mysql-bin.00000xxx 형식으로 binlog가 생성된다는 의미이다.

저장 완료 후 Mysql 재시작!!

한가지 더 유의 할 점!!

기존 bin log 디렉토리에서 다른 디렉토리로 저장 위치를 변경 할 경우에는

1. 해당 디렉토리에(로그가 새롭게 저장될 디렉토리) mysql-bin.index 파일을 생성해주어야
하며 => [root@server]# touch mysql-bin.index

2. 새롭게 생성되는 디렉토리에 아래와 같이 mysql 권한을 설정해줘야 한다
[root@server]# chown -R mysql:mysql 생성디렉토리


위의 사항을 수행하지 않으면, 아마도 Mysql 서비스가 Errcode: 13을 토해내면서 시작되지 않음.

[Mysql] File './mysql-bin.index' not found (Errcode: 13) 에러

Mysql 최초 설치시나 혹은 bin log 저장 경로 변경시 나타나는 에러.

해결방법

1. 해당 위치에 mysql-bin.index 파일이 없는 경우

    - 해당 위치에 mysql-bin.index 파일을 생성

 > touch mysql-bin.index 


2. 1번으로 mysql-bin.index 파일을 생성 하였으나 같은 에러 발생시.

    - mysql 권한 문제로 해당 파일(mysql-bin.index)의 권한을 mysql로 변경


 > chown -R mysql:mysql ./mysql-bin.index

2015년 10월 23일 금요일

[Jquery] 테이블 행(tr) 이동

리스트형 페이지 특히 관리자 페이지의 경우 순서 변경 기능이 자주 요구되서,
이참에 한번...

특이 사항으로는 class 명을 "move up", "move dn" 이렇게 두개로 사용해서
"move" class 클릭 이벤트로 인식, 위(up) / 아래(dn)을 분기, 소스를 최대한 짧게 구현 해보았습니다.

<table>
 <tr>
  <td>첫번째 행</td>
  <td>
   <button type="button" value="위로" class="move up">
   <button type="button" value="아래로" class="move dn">
  </td>
 </tr>
 <tr>
  <td>두번째 행</td>
  <td>
   <button type="button" value="위로" class="move up">
   <button type="button" value="아래로" class="move dn">
  </td>
 </tr>
 <tr>
  <td>세번째 행</td>
  <td>
   <button type="button" value="위로" class="move up">
   <button type="button" value="아래로" class="move dn">
  </td>
 </tr>
</table>
<script>
$(document).on('click', '.move', function() {

 var mode = ($(this).attr('class') == "move up" ? "up" : "dn");
 var element = $(this).closest('tr');

 if (mode == "up" && element.prev().html() != null) {
  // 위로 이동
  element.insertBefore(element.prev());

 } else if (mode == "dn" && element.next().html() != null){
  // 아래로 이동
  element.insertAfter(element.next());

 }

});
<script>