만약 전날 자이언트블로그를 방문하셨분이 혹시 계셨다면 블로그가 좀 이상하다고 느끼셨을지 모르겠습니다.
클라우드 서버 VM(Virtual Machine) 이전 작업을 하면서 문제가 발생하여 일정시간 동안 사이트가 접속이 안되거나 혹은 메인화면만 보인 상황이 발생했기 때문입니다.
클라우드 서버 VM 이전작업을 처음 한것은 아니지만 저녁약속이 있다보니 서두른 탓에 문제가 생겼던것 같습니다.
이러한 문제상황에 대한 경험은 다른 분들에게도 좋은 참조가 될 수 있을 것으로 생각됩니다.
따라서 클라우드 서버 VM 이전작업을 하는 방법과 MySQL 에러가 발생했을 때 해결책등을 간략하게 정리하여 소개드립니다.
클라우드서버는 전통적인 물리서버가 아닌 클라우드 기반의 플랫폼에서 가상의 서버(VM :Virtual Machine)을 사용하는 것을 의미합니다.
여기서 VM은 가상서버를 의미하며 사용자가 CPU , 메모리 , HDD등을 선택하여 쉽게 서버사양을 높이거나 낮출수 있습니다.
일반적으로는 물리서버의 약 80~90%정도 수준의 성능을 발휘한다고 보실수 있습니다.
클라우드서버 VM 이전작업중 MySQL 에러발생시 해결책
클라우드서버를 기반으로 운영중인 블로그나 사이트를 이전할 때 저는 스냅샷과 이미지 기능을 사용합니다. 스냅샷으로 서버에 있는 모든 데이터를 그대로 복사하고 이 스냅샷을 이미지로 생성합니다.
이렇게 생성된 이미지를 기반으로 하여 VM을 생성하면 그대로 동일내용의 서버와 DB등이 만들어지게 되므로 중단없이 새로운 사양의 VM을 기반으로 사이트를 바로 운영할수 있습니다.
이렇게 소요되는 시간은 대략 30분 정도로 보시면 됩니다.
1. 현재 운영중 사이트가 설치된 VM의 스냅샷과 이미지를 생성합니다.
2. 새로운 사양의 VM이 생성되면 초기생성 비밀번호를 클라우드서버 서비스회사가 메일등이나 관리콘솔등을 통해 제공해줍니다.
이후에는 포트 포워딩 작업을 해주게 됩니다.
운영중인 VM과 연결된 IP의 포트를 새로 생성된 VM으로 수정작업을 해주면 됩니다. 이것은 클라우드서버의 관리자 콘솔에서 지원되므로 사용하시는 클라우드서비스 메뉴를 참조하시면 됩니다.
3. 새로 생성된 VM으로 포트포워딩 설정을 진행합니다.
일반적으로 3306 , 22 , 80 포트 3개의 설정을 변경해주시면 됩니다.
4. 포트 포워딩 전환이후 MySQL 접근 문제 발생 시
(3)번의 포트 포워딩 전환이후 MySQL에 접근 문제가 발생할 수 있습니다. mysql -u root -p 등의 명령어로 MySQL에 접근하고자 했을때 에러가 나타나는 경우입니다.
에러메시지는 다음과 같은 형태입니다.
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (111)
MySQL에 접근이 안되면 컨텐츠를 볼수 없으므로 빠르게 문제를 해결해야 할 것입니다.
이러한 에러메시지가 나오면 당황하지 마시고 Putty 등의 서버원격접속 프로그램을 이용하여 접속 후 MySQL 설정파일인 my.cnf를 수정해주시면 됩니다.
센토스 6.3 기준으로 vi /etc/my.cnf 를 입력하여 편집화면에 들어가 하단 처럼 포트설정(굵은 글씨 부분)을 해주시면 됩니다.
[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을 재시작 해주셔야 합니다. MySQL 정지,시작,재시작 명령어는 순서대로 다음과 같습니다.
service mysqld start
service mysqld stop
service mysqld restart
그런데 MySQL을 재시작하려고 할 때 재시작이 안되고 다음과 같은 에러메시지를 보여줄수 있습니다.
Another MySQL daemon already running with the same unix socket
역시 당황하지 마시고 아래의 rm 명령어를 입력하시고 소켓을 제거 확인 메시지에 Y를 눌러 제거해주시면 됩니다.
rm /var/lib/mysql/mysql.sock
rm : remove 소켓 ‘/var/lib/mysql/mysql.sock’? y
이후 다시 재시작을 시도하시면 정상적으로 진행 될 것입니다.
5. 해결책이 없는 Permission(권한) 에러
사실 위에서 설명드린 에러등의 문제는 큰 문제가 아니였습니다. 정작 큰 문제는 Permission(권한) 에러 문제였습니다. 사이트가 접속오류가 발생하는등 문제가 있던 부분은 바로 이 Permission 에러 해결과정에서 나온 문제였습니다.
일반적으로 권한 문제가 있으면 사용자권한만 부여하면 보통 90%이상 해결되는 문제였지만 알고 있는 모든 방법을 총동원해도 문제가 해결되지 않았습니다.
그렇다면 어떻게 해결했을까요?
VM을 다시 생성했습니다. 그리고 번거로운(?) Permission 에러는 바로 해결되었습니다.
결론적으로 클라우드 서버 이미지 – VM 생성과정에서 무언가 문제가 발생했던것입니다.
만약 일반적인 Permission 에러 해결방법으로 해결이 안되는 상황이 발생한다면 VM 재생성도 하나의 해결책이 될수 있다는 경험을 얻었습니다.
비슷한 문제를 겪고 계시다면 참조하시면 되겠습니다.
- 워드프레스 테마 오픈마켓 테마포레스트- Theme forest
- 워드프레스 추천테마 관련 포스트 - AVADA / JARIDA / SAHIFA / GOODNEWS