제가 맡고 있는 웹서버의 DB가 꼬여서 한글을 제대로 보여주지 못한 것을 해결하였습니다.
이 짓 한다고 거의 이틀을 잡아먹은 듯 하군요. 이제야 해결방법을 찾았으니, 다음 서버운영자에게 운영을 매끄럽게 하기 위해서 문서화 작업을 해야할듯 하군요.
Linux 서버를 다시 셋팅할때에는 MySQL자료를 백업을 받고 셋팅을 하여야 합니다.
서버에 있는 MySQL자료를 전부 백업 받는 방법은 이렇게 합니다.
# mysqldump -u root -p --all-databases > backup.sql
(backup.sql은 백업할 파일의 예를 듦)
백업 받은 자료에 내용을 확인합니다. 그런데 한글이 깨진다면 대책이 없을 것이죠?
mysql의 인코딩 설정이 서버마다 다르기 때문에 dump 할때 한글이 깨지는 문제가 생긴다고 하더군요. 그리고 dump가 안된다고 에러가 난다면 --force를 때려 넣으시야 함.
dump 했을때 한글이 깨지는 경우
# mysqldump -u root -p --all-databases --force --default-character-set=latin1 > backup.sql
이렇게 해서야 겨우 dump 백업을 가까스로 마쳤습니다. 이거때문에 하루는 버렸습니다.ㅠㅠ
참고자료 :
dump할때 한글 깨짐 방지(원문을 트래백할려고 해도 트래백이 안되군요, 그래서 링크 걸었습니다.
백업받은 파일을 vi로 엽니다. 여기서는 다 latin1로 설정되어 있어서 다른 DB에 올릴경우 당근 한글 깨지고 홈페이지 복구를 못시킵니다.
이거 문자 인코딩이 latin1이라 되어있어서 vi로 latin1을 euckr로 치환을 하고 나서 저장합니다.
그러면 복구 할때 문자코드가 euckr로 되어서 백업을 쉽게 할수 있죠.
dump로 백업받은 파일들은 이렇게 복구를 합니다.
mysql -u root -p --force --default-character-set=euckr < backup.sql
이렇게 하면 DB복구 완료 :D 이렇게 간단한것 알아내려고 밤을 샜습니다. 이건 애니를 볼수 있는, 게임을 할수 있는 시간을 빼았겨서 까악 ㅠㅠ
(※ 다음에는 서버 운영할시 일주일에 한번은 복구 스크립트넣고 재부팅 시켜서 하드디스크 상태를 봐야할듯 합니다. 서버가 하드디스크 고장에 맛가도 DB자료는 다행이도 항상 잘 남겨져 있어서 다행 ㅠㅠ)
다시 MySQL를 5로 깔았다. dump한 DB자료를 다시 넣으니까 한글이 제대로 들어간다. 휴
이번에 설정을 다시 제대로 해서 다행. 이번에 학과 서버관리자님께서 학과 홈페이지 서버를 업그레이드 하면서 LAMP를 Wow Linux & Apache 1.3 & Mysql3 & PHP 4에서 Fedora Core 7 & Apache 2.2 & MySQL5 & PHP 5로 버전 업을 시키는 것을 보면서 나도 따라갈려고 하다가 MySQL때문에 머리 아파 미치는 줄 알았다. (DB가 꼬여서 복구시키는데 3일 걸렸다.)
(나는 명색이 컴퓨터공학과 홈페이지 관리자-_-;; 컴퓨터공학과 서버관리자는 아님)
현재는 UTF-8와 EUC-KR이라는 문자코드때문에 골머리를 앓고 있는 과도기 상태입니다.
P.C.R.C.서버도 대세를 따라 UTF-8로 변경을 할까 골머리를 앓고 있군요.