MYSQL2012. 10. 12. 11:58

작성일 : 2012년 02월 16일 

작성자 : 김창현

제   목 : mysqldump을 이용하여 전체 데이터베이스시 일부 데이터베이스 제외시키기 

 

MYSQL 데이터 이전 시 많은 수의 DB 데이터를 이전하다 보면 --all-database를 통해 전체 DB데이터를 백업 받을 수가 있다. 그러나 신규 시스템 이전시에 전체 DB중 일부 DB는 제외하고 싶을 때가 있을 것이다. 그렇다고 일일이 DB를 DUMP하여 IMPORT 시키기에는 업무 효율성이 떨어질 것이다.

--all-database의 경우에는 시스템 데이터베이스인 mysql도 같이 DUMP가 되며, 일일이 에디터를 통해 제거하는 방법도 불편 하다.

시스템 데이터베이스외에 좀더 많은 DB에 대해 제외를 시키고자 한다면 정말 난감하다.

 

이를 해결하기 위해 리눅스의 파이프를 통해 해결해보자!!

 

표에 나와 있는 예제는 egrep을 이용하여 mysql|mysql.old라는 데이터베이스를 제외시키고 나머지 DB에 대해서 전체 DUMP를 한다.

mysql -uroot --password='' --batch --skip-column-names --execute='show databases' | egrep -v "mysql|mysql.old" | xargs mysqldump --password='' --databases -Q

 

mysql 유틸을 이용하여 SQL의 전체 데이터베이스를 확인 할 수 있는 show database를 활용하여 데이터베이스 모든 목록을 추출하고, 추출된 데이터베이스 내용을 파이프를 통해 egrep으로 전달하여 -v 옵션을 통해 제외하고 싶은 문자패턴들을 나열하고 제외된 데이터베이스 목록을 mysqldump로 넘겨 추려진 데이터베이스 목록에 대해서만 덤프를 받을 수가 있다. 추출된 목록을 넘기는 경우 한번에 받은 목록을 한번에 인자 처리 할 수 없는 관계로 xargs 명령어를 통해 라인단위로 인자를 넘겨 주었다.

'MYSQL' 카테고리의 다른 글

[MySQL] DB Schema 비교  (0) 2014.08.19
mysql 디비테이블 오래된자료 자동삭제  (0) 2012.07.31
mysql 백업하ㅂ  (0) 2012.06.22
Posted by 다오나무
우분투 서버2012. 10. 12. 10:53

dovecot 이 자꾸 죽는 이슈가 생겨서 인터넷에서 해결책을 찾았다.

http://wiki.dovecot.org/TimeMovedBackwards

하지만 우분투에 적용하기에는 약간의 문제가 있었다.

dovecot 을 재시작하는 명령어인 service dovecot start 가 먹지 않는다는 점이다.

몇번의 삽질끝에 해결책을 찾았다.

해결책은 아래와 같다.

 

우선 우분투에서 root 권한으로 cron 을 실행가기 위해서는

 

1. /etc/cron.d 아래에 cron 파일을 생성해야 한다.

생성한 파일내에는 기존 cron 설정과 다르게 root 를 명시해 주어야 한다.

* * * * * root /home/user/dovecot_restart.sh

 

2. root 권한으로 cron 이 실행된다고 해서 기존에 sudo 를 붙여주던 명령어에서 sudo 를 제거 하면 안되다.

예를 들어 service dovecot start 가 아니라 sudo service dovecot start 로 적어주어야

위 명령이 정상적으로 실행된다.

Posted by 다오나무
php2012. 10. 11. 17:44

우분투로 APM을 설치하면...php 설정중 오류가 발생하면 에러 내용이 출력되지 않는다.

php.ini 설정 중에 출력할 지 여부를 설정 할 수 있다.(우부투 보통 /etc/php5/apache2/php.ini)

display_errors = On

으로 해주면 에러가 출력된다.

혹시나 Notice가 같이 출력된다면,

error_reporting = E_ALL & ~E_NOTIC 

으로 설정해주면...에러 리포팅이 모든 오류(E_ALL) 와(&) NOTIC을 제외한(~E_NOTIC)으로 정해주면 된다.

php.ini 의 자세한 설정은 아래 사이트에서 ^^ 

http://www.php.net/manual/kr/errorfunc.configuration.php  


설정후!

아파치를 재시작 해주면 된다!

Posted by 다오나무
우분투 서버2012. 10. 11. 17:33

Apache 웹서버를 이용하여 홈페이지를 만들었는데...

index페이지가 없던가..뭐. 다른 여러가지 원인에 의해서 자신의 홈디렉토리의 모든 내용을 볼 수 있고, 내용도 다 다운로드 받을 수 있다면??? ㅡ.ㅡa

 

난감하겠죠.

 

이럴 경우.

Apache의 환경설정 디렉토리인 conf에서 httpd.conf 파일을 수정해주시면 됩니다.

 

자신의 홈페이지 소스들이 위치한 디렉토리에 대한 권한을 설정한 <Directory "자신의 홈페이지 소스 주소">의 설정값중 Indexes 란 것을 없애주세요.

<Directory "/usr/local/apache/htdocs">  
Options Indexes FollowSymLinks MultiViews  
AllowOverride None  
Order allow,deny  
Allow from all  
</Directory>

 

 

 Indexes 란 설정이 바로. 해당 디렉토리의 내용과 리스트들을 보여주도록 허용하겠다는 옵션이거든요.

저것만 삭제하시면 됩니다. ^^*

 

참고 사항 : 제 블로그에서 참고하세요.  http://blog.naver.com/iamfreeman/50006833785

또는 아파치 웹사이트. http://httpd.apache.org/docs/2.0/mod/core.html#options

Posted by 다오나무
shell script2012. 10. 11. 16:38

http://wiki.kldp.org/Translations//html/Shell_Programming-KLDP/x20.html

Posted by 다오나무
우분투 서버2012. 10. 11. 13:23

가상 호스트 추가하기(예를 들어서 just4fun.co.kr 이라고 하겠습니다.)
/etc/apache2/sites-available 디렉토리에 just4fun.co.kr 파일 생성


# vi just4fun.co.kr

아래와 같이 설정을 입력 후 저장합니다. 물론 자신에게 맞도록 바꿔야 겠죠.

<VirtualHost *>
DocumentRoot /home/j4f/just4fun.co.kr
ServerName just4fun.co.kr
ServerAlias www.just4fun.co.kr
<Directory "/home/j4f/just4fun.co.kr">
Options Indexes MultiViews
Options ExecCGI Includes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>


아파치의 apache2.conf 에서 sites-available 에 있는 파일들을 include 하므로
심볼릭 링크를 걸어주면 자동으로 설정에 반영이 됩니다.

# cd /etc/apache2/sites-enabled
# ln -s ../sites-available/just4fun.co.kr just4fun.co.kr

그 외의 자세한 설정방법은 아차피 메뉴얼을 참고하시면 됩니다. 물론 저희가 지원가능한
질문은 언제든지 환영입니다.

Posted by 다오나무
우분투 서버2012. 10. 10. 09:34

평소 ssh로 이용하여 서버로 접속하였다.

그리고 어느날 서버를 밀고 다시 ssh로 접속하려고 하자


warning:remote host identification has changed


해당 오류와 함께 뭐라뭐라한다..

기존 연결 했을때에 RSA값과 현재 연결했을때에 값이 달라서 경고가 뜬것이다!

그럼 기존 정보를 지워야 한다


ssh-keygen -R <접속IP>


위 명령어로 지울수 있다.

Posted by 다오나무
php2012. 10. 9. 18:48

일정 규모 이상의 웹 사이트라면 여러 대의 웹서버로 Web farm을 구성하는 경우가 
많습니다. 
Windows 제품에 내장된 Windows Load Balancing Service(WLBS)를 사용하거나 
Layer 4 이상의 스위치 장비를 Web farm 앞단에 붙여서 여기저기로 분산 
시키거나 
DNS 서버로 하여금 한 도메인에 대해 여러 아이피를 돌아가며 응답하게 하는 등 
여러가기 방법을 사용할 수 있습니다. 

가능하면 비슷한 H/W 환경에 
똑 같은 S/W 환경 (특히 컴포넌트)을 구성해주고 
DB Connection String을 한 지점의 DB로 물려주기만 하면 크게 문제 없이 Web 
farm이 구성됩니다. 
하지만, 몇가지 정도 단일 서버 환경과는 달리 고려해야 할 점이 있는데요. 

1. 세션 유지의 문제 
Web farm으로 사용자가 접속한다는 것은 사용자가 A 서버 붙었다가 B 서버 
붙었다가 이리저리 서버마다 돌아 다니며 접속할 가능성이 있다는 얘기입니다. 
웹 서버단에서 단순히 In-proecss 세션 관리를 한다면 A 서버에 로그인 했는데, B 
서버 단으로 붙었을 때는 로그인 한 상태가 아닌 것이 되는 등 혼란이 야기될 수 
있습니다. 

이런 문제를 해결하기 위해 쿠키나 URL에 사용자의 Identity 정보를 유지를 
하거나 
State Server를 중립 지점에 두고 웹 서버 간에 세션 정보를 공유 하거나 
아예 DB 서버에 세션 정보를 유지하는 방법을 사용합니다. 

2. 파일 업로드의 문제 
사용자가 A 서버의 게시판에 붙어 파일을 업로드를 했다면, B 서버의 게시판에 
붙어서 파일을 다운로드 하려는 사용자는 어떻게 될까. 
저는 항상 중간 지점에 파일 서버 두는 방법을 사용했습니다. 그리고, 모든 웹 
서버에 UNC 경로로 가상 디렉토리를 잡아 동일한 지점의 저장소를 공유하도록 
했습니다.(마치 DB 처럼) 
이 과정에서 서버 간에 웹 사용자에 대한 인증을 통과시켜주는 것이 이슈가 
되므로 주의해야 합니다. 

3. View State의 문제 
이건 ASP.NET 응용프로그램에 해당하는 얘기인데, 
클라이언트가 이 서버 저 서버 돌아가며 붙을 수 있다는 얘기는 
서버에서 GET 으로 Web form을 받은 후 B 서버로 POST 때릴 수 있다는 
얘기입니다. 
이 때, A 서버에서 View State를 Encoding 할 때 사용했던 Key와 B 서버에서 
Decoding 할 때 사용하는 Key가 다른 문제 때문에 View State를 해독해 내지 
못하는 문제가 발생합니다. 
이럴 때는 모든 웹 서버가 같은 Key를 사용하도록 강제 설정해 주는 조치가 
필요합니다. 

4. 캐싱의 문제 
종종 웹 서버의 메모리에 DB의 Data를 Caching 해서 DB 서버와의 Round-trip 수를 
줄이고 속도 향상을 효과는 보는 경우가 많은데요. 
만약 웹 서버가 여러 대가 된다면? 
서버에 캐싱을 해 놓고, 캐싱된 데이터가 없는 B 서버에 다음 Request가 도착할 
수 있으므로 이런 상황을 항상 염두에 두고 개발하는 것이 필요합니다. 
아울러 웹 서버가 일정 대수 이상 많아지는 경우 웹 서버단에 동일한 내용을 
중복해서 캐싱하는 것이 오히려 효율이 떨어지게 되는 임계점이 있습니다. 이럴 
때는 미들 웨어를 중간 지점에 배치하는 등 multi-tier로 Farm을 구성하는 
전략적인 접근이 필요합니다. 

ASP 뉴스그룹에 좋은글이 있길래 가져왔습니다.

Posted by 다오나무
영삼이의 IT정보2012. 10. 9. 14:26

pc-3000 udma




Posted by 다오나무
Mac2012. 10. 9. 10:46

802.11n을 지원하는 공유기로 업그레이드 후, 서버로 사용중인 피씨의 무선 랜카드가 공유기에서 IP를 받지를 못한다. 무선 랜카드가 atheros ar928x 칩셋을 사용하는데, 이게 지원이 제대로 안되는것 같다. 데이터를 옮기기 위해 할수 없이 외장 디스크를 떼어서 맥북에 연결해서 데이터를 백업하려는데 맥북이 ext4 파티션을 인식하지 못하네.


macports에서 ext로 찾아보니 ext2fuse가 있길래 설치해 봤는데, 세그먼트폴트를 내고 죽어버린다.

좀 더 찾아 보니, ext2fuse 와 비슷한 fuse-ext2 라는 프로젝트가 있다. macfuse를 설치하고 나서, fuse-ext2를 설치하니 외장디스크의 ext4 파티션을 자동으로 마운트 해서 파인더에서 읽을 수 있게 해준다. 이런 고마운 사람들 같으니라고.

두 프로그램은 아래에서 다운받을 수 있다.

ext2fuse는 오래전에 업데이트가 중단된 죽은 프로젝트인 것 같다. 제대로 동작하지 않는다.

참고.
macfuse 홈페이지 : http://code.google.com/p/macfuse/

Posted by 다오나무