웹모아
웹모아[손님] 검색 로그인   
웹모아
 
애러처리
 


mysql 의 데이터를 NFS 로 연결해서 쓸때의 crash 에러 해결.(InnoDB)
  2008-10-10 01:55:45 댓글:(0)   조회:8254


/usr/local/mysql/data/localhost.err

InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.

081009 11:55:57 [Note] /usr/local/mysql/libexec/mysqld: ready for connections.
Version: '5.0.37-log' socket: '/tmp/mysql.sock' port: 3306 Source distribution
081009 11:55:57 InnoDB: Starting shutdown...
081009 11:55:59 InnoDB: Shutdown completed; log sequence number 0 43655
081009 11:55:59 [Note] /usr/local/mysql/libexec/mysqld: Shutdown complete

mysql 의 데이터를 NFS 로 연결해서 쓸때의 crash 에러 해결.(InnoDB)
구성은 이렇게
mysql 서버 --> NFS 서버(mysql 데이터)이렇게 쓰는 경우는 별로 없으려나? 아무튼 나의 개발환경은 저렇게 구성되어 있다.
테이블 형식은 InnoDB 를 쓰고 있다.(MyISAM 형식도 같은 문제가 발생하는지는 확인하지 않았다.)

개발서버가 실수로 인해 꺼져버렸다.(Ctrl-Alt-BS ㅜㅜ , DontZap 옵션을 잊었다)

혹시나 해서 DontZap 옵션은 이렇게

Section "ServerFlags"
Option "DontZap"
EndSection

을 /etc/X11/xorg.conf 에 적어준다.


그냥 대수롭지 않게 다시 켰다.
그런데, mysql 서버가 정상실행이 되지 않았다.
로그메시지를 보니(/var/log/syslog) 잔뜩 에러메시지가 기록되어 있었다.

NFS 서버가 연결된 방식이 아니라도 마찬가지인지 확인을 해보지는 않았다.

syslog 에 기록된 메세지는 이렇다.
mysqld[6607]: InnoDB: Check that you do not already have another mysqld process
mysqld[6607]: InnoDB: using the same InnoDB data or log files.
mysqld[6607]: InnoDB: Unable to lock ./ibdata1, error: 11
mysqld[6607]: InnoDB: Check that you do not already have another mysqld process
mysqld[6607]: InnoDB: using the same InnoDB data or log files.
mysqld[6607]: InnoDB: Unable to lock ./ibdata1, error: 11
mysqld[6607]: InnoDB: Check that you do not already have another mysqld process
mysqld[6607]: InnoDB: using the same InnoDB data or log files.
mysqld[6607]: 071121 17:12:51 InnoDB: Unable to open the first data file
mysqld[6607]: InnoDB: Error in opening ./ibdata1
mysqld[6607]: 071121 17:12:51 InnoDB: Operating system error number 11 in a file operation.
mysqld[6607]: InnoDB: Error number 11 means 'Resource temporarily unavailable'.
mysqld[6607]: InnoDB: Some operating system error numbers are described at
mysqld[6607]: InnoDB: http://dev.mysql.com/doc/mysql/en/Operating_System_error_codes.html
mysqld[6607]: InnoDB: Could not open or create data files.
mysqld[6607]: InnoDB: If you tried to add new data files, and it failed here,
mysqld[6607]: InnoDB: you should now edit innodb_data_file_path in my.cnf back
mysqld[6607]: InnoDB: to what it was, and remove the new ibdata files InnoDB created
mysqld[6607]: InnoDB: in this failed attempt. InnoDB only wrote those files full of
mysqld[6607]: InnoDB: zeros, but did not yet use them in any way. But be careful: do not
mysqld[6607]: InnoDB: remove old data files which contain your precious data!
mysqld[6607]: 071121 17:12:51 [ERROR] Can't init databases
mysqld[6607]: 071121 17:12:51 [ERROR] Aborting핵심은 바로 이 메시지
mysqld[6607]: InnoDB: Unable to lock ./ibdata1, error: 11
mysqld[6607]: InnoDB: Check that you do not already have another mysqld process
mysqld[6607]: InnoDB: using the same InnoDB data or log files.이상하다. mysqld 가 떠 있지는 않는데.
NFS 의 버그인지, 그냥 정상적인 것인지는 모르겠다.
그렇게 mysql 서버가 crash 된 후에 다시 켜면, NFS 서버쪽의 파일이 lock 된 상태로 있는 것이었다.

NFS 서버를 다시 재 실행 해주니 정상적으로 mysqld 가 실행되었다.

syslog 를 보면 다음처럼 복구한다는 메시지도 볼 수 있다.
mysqld[7030]: 071121 17:42:10 InnoDB: Database was not shut down normally!
mysqld[7030]: InnoDB: Starting crash recovery.
mysqld[7030]: InnoDB: Reading tablespace information from the .ibd files...
mysqld[7030]: InnoDB: Restoring possible half-written data pages from the doublewrite
mysqld[7030]: InnoDB: buffer...
mysqld[7030]: 071121 17:42:15 InnoDB: Starting log scan based on checkpoint at
mysqld[7030]: InnoDB: log sequence number 0 123193550.
mysqld[7030]: InnoDB: Doing recovery: scanned up to log sequence number 0 123193550
mysqld[7030]: InnoDB: Last MySQL binlog file position 0 79, file name /var/log/mysql/mysql-bin.001118
mysqld[7030]: 071121 17:42:15 InnoDB: Flushing modified pages from the buffer pool...
mysqld[7030]: 071121 17:42:16 InnoDB: Started; log sequence number 0 123193550
mysqld[7030]: /usr/sbin/mysqld: ........ Source distribution
/etc/mysql/debian-start[7063]: Checking for crashed MySQL tables.
실제 데이터도 이상이 없는지도 확인해봐야 겠다.(mysql 쪽에서 복구를 잘 해주려나?)


ps. 처음에는 안되서, 처음부터 초기세팅하고 받아놓은 dump 로 복구할까도 생각했다.
비교적 간단하게 해결했다(데이터에 이상이 있는지는 확인이 필요하다)

================================
innodb에서 데이타파일을 NFS에 둘때는 my.cnf에서 아래와 같이 설정하면, 아무 문제없습니다.
--------------------------------------
innodb_data_home_dir = /해당로컬디렉토리
innodb_log_group_home_dir=/해당로컬디렉토리
--------------------------------------
위와 같이 기본적으로 innodb관련 기본 데이타파일과 로그는 반드시로컬디스크에 저장하도록 합니다.
그리고 아래의옵션을 사용해 줍니다.
--------------------------------------
innodb_file_per_table
--------------------------------------
이 옵션을 주게 되면, 위의 innodb_data_home_dir의ibdata1파일에는 테이블의 데이타는 저장이 되지 않고 단순이 DB정보만 저장이 되게 됩니다. 실제 테이블의 데이타는 각 DB디렉토리 밑에 테이블명.lbd의 형태로 innodb의 실제 데이타가 저장되게 됩니다.

위와 같이 설정한후, 아래와 같이 새로 mysql 초기 DB를 생성해줍니다.
--------------------------------------
mysql_install_db --data_dir=해당NFS디렉토리
--------------------------------------

위와 같이 해주면 NFS에 데이타 파일을 위치시켜도 mysql이 기동되지 않는문제는 거의 일어나지 않습니다.
서버다운이나 mysql이 다운됐을 경우에 필요한 복구 정보는 위에서 설정한 /해당로컬디렉토리 에 위치해 있기 때문입니다.

===============================================

mysql 데이터를 NFS 로 연결해서 사용시 주의점

이번에는 정전으로 인해서 NFS 연결이 비정상적으로 끊겨 mysqld 서버를 시작하지 못했다.
개발서버 용으로 사용하고 있는데,
실서버 --> rsync 로 데이터 백업(백업서버,NFS서버) --> NFS 로 mysql 데이터 연결(개발서버)개발서버로 직접 mysql 데이터를 백업받아서 하면 별 문제 없겠지만,
백업서버에 일괄적으로 백업받기 위해 NFS 로 연결해서 사용하고 있다.

이번의 에러메세지는 지난번과 비슷한데
InnoDB: Unable to lock ./ibdata1, error: 11대신에
InnoDB: Unable to lock ./ibdata1, error: 13으로 차이가 있었다.

관련 검색을 해보니,
- http://bugs.mysql.com/bug.php?id=14281
- http://bugs.mysql.com/bug.php?id=22667
의 글을 찾을 수 있었다.

위 글의 요지는 mysql 데이터를 NFS 로 연결해서 사용하는 것은 '좋은 생각이 아니다' 라는 것.

이번에 원인을 해결하기 위해 이리저리 설정을 바꿔보고 하던중.
InnoDB 에 대해서 그런 문제가 발생하는 듯 싶다.(MyISAM 은 괜찮은 듯)

그리고, NFS 서버가 nfs-kernel-server 와 nfs-user-server 가 있다.
여기에서 nfs-user-server 로 하면 실행이 되지 않았다.
그런데, nfs-kernel-server 로는 실행의 문제점은 없었다.(우분투 기준)

원래 nfs-kernel-server 였는데 바꿔본다고 nfs-user-server 로 바꾼후 위와 같은 에러가 발생한듯 하다.
바꾼이유가 NFS 서버가 마운트는 되는데, 데이터를 열지 못하는 문제가 있었다.
그 문제는 어이없게도 정전이 되면서 허브에 문제가 발생했던것(허브 restart 로 해결. 허브를 좋은 것으로 바꿔야 겠다.)

즉, mysql 데이터를 NFS 로 연결시 InnoDB 를 쓴다면, nfs-kernel-server 로 NFS 서버를 구동한다.
(nfs-user-server 로 안되는 것을 확인했지만, 좀더 살펴볼 예정)


===============================================



 댓글 (0)


애러처리
페이지: 1 / 2   

 

  #1194 - Table is marked as
select * from baptinfo; 했을 때 아래와 같은 테이블 손상메세지가 나타난다면 #1194 - Table 'baptinfo' is marked as crashed and should be repaired # mysql -u root -p Enter password: Welcome to the MySQL monitor. 조회(2293)          




  ERROR 1040 (08004): Too many
[root@localhost sokj00]# /usr/local/mysql/bin/mysqladmin -u root -p processlist Enter password: +-----+------+-----------+----+---------+------+-------+------------------+ | Id | User | Host 조회(3440)          




  ERROR 2002 (HY000)
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) mysql 데몬이 실행되지 않아 발생되는 경우임 # /usr/local/mysql/bin/mysqld_safe & 위처럼 데몬실행시 아래 애러가 발생하는 경우조회(2108)          




  #1030 - Got error 134 from s
#1030 - Got error 134 from storage engine mysql>repair table [문제가 되는 table name]; 인덱스가 깨진 경우에 발샹하는 것 같음조회(2082)          




  REPAIR TABLE - 테이블 복구.
Repair Table은 적은 수의 레코드를 가진 Table의 복구에 유용하다.Repair Table은 Table에 문제가 발생 했을때 이를 복구하는 명령어다.기본적으로 shell에서의 myisamchk --recover 와 같은 효과를 가진다. 그리고 이는 MyISAM과 ARCHIVE table에서만 작동하며, select와 insert의 권한이 있어야 조회(2779)          




    [RE] REPAIR TABLE - 테이블 복구.
# mysql -u root -p Enter password: mysql> use realDB; Database changed mysql> check table pcount_refer; +---------------------+-------+----------+-----------------------------------------------조회(1268)          






  Mysql 문자셋이 안맞는 경우 - mysql_er
애러메세지:mysql_err : 1267 : Illegal mix of collations (utf8_general_ci,IMPLICIT)          and (euckr_korean_ci,COERCIBLE) for operation 'like' #] mysql -조회(9949)          




  mysql 한글문자중 &#로 변환되는 문자 처리 (
참고 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=44659 몇달전에 위의 글을 남긴적이 있는데. 최근 회사에서 mysql4.1.10a에서 mysql 5.0.24a 로 업그레이드를 해야하는 문제에 직면하였습니다. 저희회사는 컨텐츠 업체이다 보니, 데이타가 좀조회(2028)          




  도스용 dbf파일 vfp에서 띄울때 한글이 깨지는
도스용 dbf파일 vfp에서 띄울때 한글이 깨지는 문제 엑셀과 98도스창에서는 깨지지 않음 ================================ 엑셀에서 불러들인 후 dbase3 에서 저장하면 됩니다.조회(1834)          




  mysql의 테이블이 깨진경우 검사 및 복구 하는
1. mysql 데몬을 중지 시킨다. [root@localhost root]#pkill mysqld 또는 kill -9 mysqld 2. myisamchk 명령으로 문제가 발생한 테이블을 검사한다. 검사 방법 : myisamchk /db경로/테이블명.MYD [root@localhost bin]# pwd /usr/local/조회(2068)          




≪ [1]  [2]   ≫

복수단어 검색은 공백(space)로 구분해 주세요.




최근 글
[손님]


인기 글
[손님]