Server/리눅스 MYSQL

리눅스 서버 이전 방법

2018. 1. 26. 13:18

서버 이전이 굉장히 어렵고 전문가한테나 맡겨야 하는 일로 생각을 하지만 다음 몇가지만 익히면 아주 간단하다.

시간도 익숙하게 쭉~ 하면 30분도 않걸리는 작업들이다.

 

일단 텔넷(서버 보안에 따라 ssh 접속이 필요할수 있음)으로 서버 접속.

 

1. 용량체크

   du -s (diskuse 명령어에 -s 스위치 사용)

   현재 위치에서 모든 하위폴더 포함해서 용량을 kbyte 로 보여줌

   (예 : 호스팅 공간이 서버내 www 폴더에 있다면 cd www (엔터) .. 해서 www 폴더에 들어가서  du -s (엔터))

   체크된 용량이 새로 옮길 호스팅 공간에 적합한지 검토한다.

   체크된 용량이 tar 명령으로 전체 폴더와 파일을 묶어 생성할 묶음파일 backup.tar 이 들어갈만큼 여유가 있는지 확인한다.

 

2. 옮길 데이타 모두 백업

    www 폴더안에 데이터가 모두 있다면 cd www (엔터) 해서 www 폴더에 들어간후,

   tar -cpvf backup.tar ./ (tar 파일묶음 명령에 -cpvf 스위치 사용)

   파일 권한(퍼미션)을 그대로 유지한채 압축시켜서 아주 유용함.

   이 명령어를 사용해서 압축해야 나중에 이전할 호스팅 공간에 풀어줄때 각 파일 및 폴더의 퍼미션이 유지됨

   이 명령어를 사용해서 바이너리,아스키 형식 상관없이 파일이 그대로 옮겨짐.

   퍼미션이 유지되어야 게시판을 비롯한 각종 퍼미션 설정에 영향을 받는 기능이 제대로 작동함.

   (중요!! tar로 서버내용을 묶기전에 서버 호스팅공간의 여유공간을 확인해야 함. du -s 명령어로 나온 용량만큼

    여유공간이 남아 있어야 가능함)

   만약 여유공간이 없다면 서버관리자에게 잠시 공간을 할당해달라고 부탁하고 나서 작업하기~

 

3. Mysql DB(데이타베이스) 백업

   mysqldump -u아이디 -p비밀번호 DB이름 > backup.sql

   아이디와 비밀번호는 mysql 접속 아이디 비밀번호이고, DB이름은 사용중인 데이터베이스명임.

   (mysql 혹은 mysqldump 명령어로 DB 에 접속하는 경로 및 스위치가 업체마다 조금씩 틀릴수 있음-미리확인)

 

4. FTP  접속후 백업한 backup.tar 을 바이너리 모드로 컴퓨터에 내려받는다.

5. FTP  접속후 백업한 backup.sql 을 아스키 모드로 컴퓨터에 내려받는다.

6. 이전 서버 텔넷(혹은 ssh) 에서 백업한 파일들을 지워낸다.

    rm -rf backup.tar

    rm -rf backup.sql

 

    rm -rf 명령은 뒤에 오는 파일이나 폴더를 아무런 질문없이 바로 쿨~하게 삭제한다.(조심해서 사용해야함!!)

 

    만약 이전 서버의 모든 데이타를 다 삭제하고 남기지 않고 싶다면 해당 폴더를 삭제한다.

    이전 서버의 데이타가 www 폴더안에 들어 있다면

    rm -rf ./www 혹은 rm -rf www

 

    (주의!! 이전 서버의 데이타를 바로 삭제하는건 위험하다. 네임서버 변경해서 새로운 서버로

     접속자가 연결이 되려면 최소 12시간에서 24시간 시간이 소요되니까 그 시간동안 이전 서버로

     접속되기 때문에 그 사이동안 잠시 데이타를 남겨둔다.)

 

7. 새로 옮길 호스팅공간(서버)에  FTP 접속후 backup.tar 을 바이너리 모드로 업로드한다.

8. 새로 옮길 호스팅공간(서버)에  FTP 접속후 backup.sql 을 아스키 모드로 업로드한다.

 

이제부터 올려둔 파일을 풀어서 새 서버에(호스팅공간) 데이타들을 그대로 옮긴다.

이때도 역시 서버(호스팅공간)의 전체 용량이 backup.tar 의 2.5배가 되는지 검토한다.

 

9. 데이타 풀기

   호스팅서비스를 받고 호스팅공간을 받았다면 업체마다 데이타 폴더명이 틀림

   만약 이전의 호스팅공간이 www 안에 데이타가 있었는데 새로 바뀐 호스팅 공간엔 html 폴더에 있어야 한다면

   cd html (해당폴더에 들어가 그안에 데이타를 풀어주어야 함)

   tar -xpvf backup.tar

 

   tar로 풀어낼때 데이타의 user 명이 예전 서버의 user명(보통 호스팅받는 아이디가 user명이 됨)으로 되어

   이동하는 호스팅공간의 다른 user 로 로그인해서 권한이 없어 파일및폴더를 지우거나 접근을 못할까봐 걱정할

   필요는 없음. user명은 현재 로그인한 user명으로 생성되고 파일 퍼미션만 유지됨.

 

10. Mysql DB 데이타베이스 풀기

    mysql -u아이디 -p비밀번호 DB이름 < backup.sql

   

데이타는 다 이전시켰으니 이제 호스팅업체에서 제공하는 임시로 접속할수있는(네임서버 변경 적용되기전 호스팅공간을 접속할수 있는 경로)

주소를 인터넷으로 접속해서 홈페이지가 잘 뜨는지 확인한다. 특히 게시판이나 데이타베이스 같은 연동부분을 꼼꼼이 확인.

각 게시판의 설정파일(ini 혹은 php 혹은 lib 혹은 set 등의 확장자로 끝나는 파일들)의 설정내용을 수정할 필요가 있으면 수정

 

(팁!! 보통 여러가지 설정내용을 변경하지 않고 그대로 편하게 서버를 이전하려면 새로 이전할 곳의 서버업체-호스팅업체-에

등록하는 아이디와 비밀번호 그리고 mysql DB명(이건 보통 아이디로 만들어지지만 꼭 확인) 및 비번 등이 이전에 사용하던

것과 동일하게 등록하고 가입해야 한다. 그렇지 않으면-예를 들어 새로 옮길 호스팅업체에 가입하려 하는데 내 아이디가 이미

다른 사용자가 등록했다면- 어쩔수 없이 새로운 아이디로 등록하게 되고 그렇게 되면 각 게시판이나 DB 접속 cgi 등의 설정

파일에 내용을 다 변경해주어야 함)

 

게시판 같은것에 글을 등록해보고 파일도 올려보고 수정도 해보고 삭제도 해본다. 꼭~~ 해본다!!

이상이 있으면 이상있는(에러나는 메세지를 잘보고) 부분을 하나하나 해결한다.

 

11. 점검후 다 마무리 되면 백업파일을 삭제한다.

    rm -rf backup.tar

    rm -rf backup.sql

 

12. 이메일을 사용한다면 이메일 보내기/받기 설정을 호스팅업체에 확인후 수정한다.

    아웃룩을 비롯한 메일클라이언트유틸이나 혹은 웹메일(예:네이버메일)등에서 메일을 가져오는 서비스 이용시..

    pop(받기), smtp(보내기) 아이디,암호,접속호스트,보안접속시 필요한 옵션 등을 확인후 변경한다.




출처 : https://blog.naver.com/iam5004/90110000830





서버 이전시 고려할 사항 


tar압축패키지로 전체 시스템 백업하기.. 

백업에 제외할 디렉토리를 정한다. 쓸모없는 디렉토리와, 백업파일 자신을 꼭 제외시켜주어야 한다. 또한 다른 파티션의 하드를 마운트한 /mnt 등의 디렉토리도 제외시켜야 불필요한 용량증가와 시간을 줄일 수 있다. . /media   /dev 등의 디렉토리도 빼주자. /sys, /dev 는 가상적인 디렉토리이다. 백업이 완료된 후 에러매세지를 볼수가 있는데 대부분의 경우 무시해도 된다.

 

백업 

1. 루트로 이동

#cd /

 

2.전체 시스템을 백업

#tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys /

 

복구

1. 루트로 이동

#cd /

 

2. 압축을 풀어 복구

#tar xvpfz backup.tgz -C /

마지막의 -C / 옵션때문에 백업파일이 루트가 아닌 다른 곳에 저장되어있는 상태라도 상관없다.

 

 백업에서 제외했던 디렉토리는 직접 만들어 주어라
#mkdir proc
#mkdir lost+found
#mkdir mnt
#mkdir sys

재부팅을 하면 백업전과 똑같은 상태로 돌아 갈 것이다.



* 서버이전시 고려할 사항들
- 서버 네트워크환경문제
- 일반사용잘의 ID와 패스워드문제
- 사용자들의 도메인문제
- 서버내의 홈페이지 데이터들의 문제
- 아파치웹서버 이전문제
- MySQL 데이터베이스 이전문제

* 서버이전 계획표 작성
구분   이전하기전 서버(A)  이전후 서버(B)
작업자   김길동
작업일시  2006년 4월 5일 새벽 04시부터 06시까지
지역   용산구    구로구
IDC(업체)명  A-IDC    B-IDC
IDC(업체)담당자명 박길동    이길동
IDC(업체)연락번호 111-1111   222-2222
서버모델명(서버명) SU-S2001(A서버)   SU-2002(B서버)
서버IP주소  192.168.0.101   192.168.1.211
네트워크주소  192.168.0.0   192.168.1.0
브로드캐스트주소 192.168.0.255   192.168.1.255
넷마스크주소  255.255.255.0   255.255.255.0
웹서버(위치)  APACHE(/usr/local/apace2) APACHE(/usr/local/apace2)
DB서버(위치)  MySQL(/usr/local/mysql)  MySQL(/usr/local/mysql)
FTP서버   Proftpd(/usr/local/proftpd) Proftpd(/usr/local/proftpd)
DNS서버   BIND9    BIND9
메일서버  SENDMAIL, Qpopper  SENDMAIL, Qpopper
사용자수  10명    10명
기타   gd,libpng,freetype,zlib 등 gd,libpng,freetype,zlib 등
주의사항  이전하기전 사용 도메인 TTL값 최소화
  cron설정주의
  로그파일들 이전주의(/var/log)
  이전후 홈페이지로딩테스트 및 게시판업로드테스트
  작업 7일전 작업관련 홈페이지 공지사항 등록
  각 사용자에게 작업관련 메일발송

* 서버에서 서비스하던 도메인들의 TTL값 변경하기
서버이전 작업을 시작하기 쵯 몇일전에 각 도메인들의 DNS정보가 세팅된 네임서버에서 각 도메인들의 zone파일들에 설정된 TTL값을 0또는 1로 설정한다.
즉, 도메인의 IP주소를 변경하기 전에 DNS의 TTL값을 0 또는 1로 설정해 둔다.

* 서버의 서비스데몬들 중지하기
- 웹서비스 중지
- 메일서비스 중지
- 데이터베이스 서버 중지
서비스를 중지하는 이유는 서버이전을 하는 도중에 계속 서비스를 하게 되면 작업하는 동안에 업데이트된 데이터들은 유실되기 때문이다.

* 이전대상서버에서 네트워크 설정작업
다음과 같이 네트워크 설정명령어들과 파일들을 통하여 새로운 네트워크 환경을 설정한다.
- route      서버라우팅 설정 명령어
- ifconfig     네트워크 인터페이스 설정 명령어
- netconfig     네트워크 설정 명령어
- /etc/resolv.conf    DNS설정 파일
- /etc/sysconfig/network   기본게이트웨이 설정파일
- /etc/sysconfig/network-scripts/ifcfg-eth0 첫번째 NIC 네트워크 설정파일
- /etc/sysconfig/network-scripts/ifcfg-eth1 두번째 NIC 네트워크 설정파일
- /etc/init.d/network    설정된 네트워크 start|stop|restart

* 사용자 계정정보 이전하기
- /etc/passwd파일내의 사용자계정부분 이전하기
  A서버의 /etc/passwd 파일에서 일반사용자들의 계정정보만을 복사해서 B서버의 /etc/passwd에 복사한다.
- /etc/group파일내의 사용자 그룹설정 부분 이전하기
  A서버의 /etc/group파일에서 시스템사용 그룹설정 부분을 제외한 나머지 그룹부분들을 그대로 복사하여 B서버의 /etc/group파일에 그대로 추가한다.
- /etc/shadow 파일내의 사용자 설정부분 이전하기
  /etc/shadow파일에서 사용자들의 정보만을 복사해서 B서버의 /etc/shadow에 복사한다.

* 일반사용자 홈디렉토리 파일들 이전하기
- A서버에서 home을 모두 압축한다.
# cd /
# tar cvfpz home.tar.gz home
- B서버에서 home.tar.gz 파일을 가져온다.
# cd /
# ncftp -u bible 192.168.0.101
ncftp / > get /home.tar.gz
- B서버에서 가져온 home.tar.gz 압축을 해제한다.
# tar xvfpz home.tar.gz -C /

* APACHE 웹서버 이전하기
아파치를 이전할 때에는 다음과 같은 주의사항이 있다.
1. httpd.conf파일 내에 설정되어 있는 가상호스트정보 수정
2. httpd.conf파일 내의 DocumentRoot정보의 확인 및 수정
3. httpd.conf파일 내의 ServerName정보의 확인 및 수정
4. httpd.conf파일 내의 UserDir정보의 확인 및 수정
- A서버에서 APACHE 디렉토리를 압축한다.
# cd /usr/local
# tar cvfp apache2.tar.gz apache2
- B서버에서 A서버에 있는 apache2.tar.gz 파일을 가져오고 압축을 해제한다.
# cd /usr/local
# ncftp -u bible 192.168.0.101
ncftp /usr/local > get /usr/local/apache2.tar.gz
# tar xvfpz apche2.tar.gz
- httpd.conf 파일 수정
  NameVirtualHost 값 수정
  VirutalHost 부분 수정
  DocumentRoot 저옵 수정
  ServerName 정보 수정
- php와 Zend 이전

* MySQL 데이터베이스 이전하기
- A서버에서 MySQL을 압축한다.
# cd /usr/local
# tar xvfpz mysql.tar.gz mysql
- A서버에서 압축한 파일을 B서버로 가져오고 압축을 해제한다.
# cd /usr/local
# ncftp -u bible 192.168.0.101
ncftp /usr/local > get /usr/local/mysql.tar.gz
# tar xvfpz mysql.tar.gz
- MySQL 실행에러문제 해결하기
  호스트명 인식불능문제
  /usr/local/mysql/var/호스트명.pid
  /usr/local/mysql/var/호스트명.err
  /usr/local/mysql/var 소유자 계정확인

* 메일서버 이전하기
- A서버에서 /etc/mail 디렉토리를 압축하여 B서버로 가져온 후에 원래위치에 압축해제한다.
- A서버의 /usr/local/lib/popper파일을 B서버로 가져와서 원래위치에 넣어둔다.
- A서버의 /var/spool/mail 디렉토리내용과 /var/spool/mqueue 디렉토리의 내요을 그대로 가져와서 B서버에 넣어둔다.
- A서버의 /etc/xinetd.d 디렉토리내에 있는 pop3파일을 B서버로 가져와서 넣어둔다.
- A서버의 /usr/sbin/sendmail 파일과 /etc/aliases 파일을 B서버로 가져와서 각자 위치에 넣어둔다.
- 이와 같이 작업한 후에 B서버에서 /etc/init.d/sendmail 스크립트를 이용하여 sendmail을 재시작하고 /etc/init.d/xinetd 스크립트를 재시작하여 /etc/xinetd.d/pop3 파일이 적용되도록 한다.

* 기타 서버이전시 작업해야할 사항들
- A서버의 /etc/hosts파일의 정보를 확인하고 필요한 정보는 B서버의 /etc/hosts파일에 등록한다.
- A서버의 /etc/hosts.allow파일과 /etc/hosts.deny파일의 내용을 B서버에 그대로 설정한다.
- A서버의 /var/spool/cron 디렉토리내의 파일들을 B서버로 그대로 가져와서 설정한다.
- A서버의 /var/log 디렉토리내에 존재하는 필요한 로그파일들(특히 wtmp, secure 파일)을 B서버로 가져와서 /var/log에 저장한다.
- A서버의 /etc/sysctl.conf 파일의 내용을 B서버의 서버사양에 맞도록 수정하여 적용한다.
- A서버의 /etc/motd, /etc/issue, /etc/issue.net 파일들의 니용을 B서버로 가져와서 해당 파일들에 저장한다.
- A서버의 /etc/rc.d/rc.local 파일을 그대로 가져와서 B서버에 복사한다.

* DNS 서버에서 해당 도메인들의 IP주소 변경작업
도메인들의 DNS서버에서 각 도메인들의 IP주소를 B서버의 IP주소(192.168.1.211)ㄹ 변경한다.
TTL값을 원래의 값으로 복원한다.

* 서버이전후 확인할 사항들
1. 홈페이지가 정상로딩 테스트
2. 홈페이지의 게시판 및 업로드 테스트하기
3. 사용자계정 정보확인 및 로그인 테스트
4. 메일수발신 테스트와 MySQL접속 테스트
5. B서버에서 응용프로그램들의 경로 확인하기


출처 : http://webs.co.kr/?document_srl=19639&mid=linux_1&sort_index=readed_count&order_type=desc



'Server > 리눅스 MYSQL' 카테고리의 다른 글

Zend Optimizer 설치  (0) 2018.01.26
mysql 사용자 비밀번호 변경하는 방법  (0) 2016.12.23
MYSQL 권한 추가 방법  (0) 2016.12.23