이전에 작성한 포스트에서도 언급했던 부분이지만 저는 네트워크 전문가가 아니며 관련 학과를 나온것도 아니라고 할수 있습니다.
하지만 워드프레스를 독립형 서버인 클라우드 서버에 설치하여 운영하면서 필요한 관련지식을 그때 그때 몸으로 체득하고 있는 상황이라고 하겠습니다.
클라우드서버 기반의 워드프레스를 운영하면서 자주 겪게 되는 에러 상황중 하나가 바로 데이터베이스 연결오류 문제입니다.
이전 포스트에서 소개해드린적이 있기는 하지만 오늘은 “데이터베이스에 연결중 에러” 라는 웹브라우저 창을 접하게 되는 문제에 대해서 모아서 소개드립니다.
워드프레스 데이터베이스에 연결중 에러, 문제 원인들과 해결책
워드프레스 기반의 내 사이트 또는 블로그에 접속했는데 ” 데이터베이스에 연결중 에러” 라는 에러메시지를 접하게 되면 아래의 내용을 점검해 보실수 있습니다.
1. 서버용량이상의 과도한 트래픽 발생 시
먼저 서버가 다운된 상황인지 확인해 봅니다. 네이버메인에 소개되어 서버의 용량을 초과하는 트래픽이 집중된 경우나 아니면 다른 대형커뮤니티등 특정 유입경로로 서버 처리용량을 넘어선 경우입니다.
이러한 경우는 간단하게 클라우드서버 서비스 홈페이지의 콘솔관리창으로 이동하여 서버를 정지 시킨후 서버사양을 높여 트래픽에 대응하시면 됩니다. 월 정액요금제에서 시간요금제로 변경하는 개념으로 보시면 되며 추후 합산된 요금으로 요금 결제가 진행됩니다.
이경우는 긍정적인 데이터 베이스 연결에러 상황이라고 할수 있을것 같습니다.
2. 이전작업등 서버 설정상 발생되는 문제
DB를 이전하거나 서버를 재설정하는등의 작업을 하면서 문제가 발생한 경우라고 하겠습니다.
예를 들면 이전한 클라우드서버에서 데이터베이스인 Mysql 접근이 다음과 같은 에러메시지와 함께 되지 않는 경우입니다.
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (111)
이러한 에러메시지를 만나게 되면 포트번호(Public Port)를 설정파일인 my.cnf 파일에 추가해 주시면 됩니다. 추가할 부분은 [Client] [mysqld] 항목입니다. 아래의 예제를 참조하시면 됩니다.
[client]
#password = your_password
port = 3306
#socket = /tmp/mysql.sock
socket = /var/lib/mysql/mysql.sock
[mysqld]
port = 3306
#socket = /tmp/mysql.sock
socket = /var/lib/mysql/mysql.sock
이러한 설정값을 변경하면 mysql을 service mysqld restart 명령어로 재시작해야 하는데 재시작에서 또 문제가 되는 경우가 있습니다.
Another MySQL daemon already running with the same unix socket.
등의 에러메시지와 함께 재시작이 안될때는 아래처럼 해결하시면 되겠습니다.
rm /var/lib/mysql/mysql.sock
rm : remove 소켓 ‘/var/lib/mysql/mysql.sock’? y
3.워드프레스의 데이터베이스 테이블이 손상된 경우
워드프레스의 데이터 베이스 테이블이 손상된 경우도 “데이터베이스에 연결중 에러” 메시지를 보여주게 됩니다. 당연히 관리자 모드로 접근이 안되기 때문에 먼저 테이블 자동 복구 솔루션을 적용해 봅니다.
파일질라등의 FTP 프로그램을 이용하여 서버에 접속후 워드프레스 설정파일인 wp-config.php을 다운로드 받습니다.
define(‘WP_ALLOW_REPAIR’, true);
상기 항목값을 입력한 후 기존 파일에 덮어 씌워줍니다. 상기 옵션은 워드프레스의 자동 데이터베이스 복구를 허용하겠다는 옵션값입니다.
이 옵션을 입력후 워드프레스 관리자모드 접근주소로 접근을 하게 되면 이전처럼 에러메시지가 아닌 아래와 같은 화면이 나타나게 됩니다.
여기서 데이터베이스 복구 또는 데이터베이스 복구와 최적화 옵션중 선택하여 적용하면됩니다. 효과는 있을까요?
오늘 오전중 발생한 “데이터베이스 연결중 에러” 상황에서는 아주 효과적이였습니다. 몇일사이 발생한 CPU 점유율 100%등으로 인한 접속에러 (아마도 외부공격으로 추정중)일때는 서버에 있는 다른 사이트들도 영향을 받았지만 오늘 오전 상황은 양상이 좀 달랐기 때문입니다.
다른 사이트는 정상적이였고 자이언트블로그만 문제가 있어 DB 자체의 문제로 추정한것입니다. 먼저 발생한 문제를 해결하기 위해서 서버 재부팅등을 반복해서 진행하다보니 데이터 베이스 테이블 일부가 손상된것으로 보입니다.
좀 더 정밀한 점검은 시일을 두고 진행해 볼 생각입니다.
이외에도 다양한 경우의 수가 있을텐데 관련된 추가 내용이 있다면 업데이트 하도록 하겠습니다.