27
November
2009
ColdFusion으로 MySQL 테이블을 최적화 하기
Category :
ColdFusion
,
MySQL/PostgreSQL
Posted by
장창학 at 5:32 PM
웹프로그래밍에서 주로 많이 쓰이는 DB Server는 MySQL을 많이 쓰고 있습니다. 어떤 DB서버나 마찬가지로 데이터의 입출력(입력 및 삭제)이 많아지다 보면 테이블에 부담이 가기 시작하는데요. 우리가 흔히 쓰는 PHPMyAdmin으로 관리를 하다보면 심심치 않게 외쪽과 같은 메시지를 볼 수 있습니다.
물론, PHPMyAdmin으로 최적화를 할 수 있지만, 그냥 ColdFusion을 이용하여 만든 웹사이트라고 가정하고, 간단하게 관리자모드 등에서 전체 테이블을 최적화하려면 다음과 같이 할 수 있습니다.
<cfdbinfo type="tables" datasource="DSN이름" name="mysqlSet">
<cfset tableslist = valuelist(mysqlSet.table_name)>
<cfquery datasource="DSN이름" name="mysqloptimise">
OPTIMIZE TABLE #tableslist#
</cfquery>
cfdbinfo태그로는 해당 DSN(Data Source Name)의 모든 MySQL Table의 목록을 가져옵니다. 그런다음 valuelist함수로 목록화(List)한 다음, cfquery태그로 최적화하는 OPTIMIZE TABLE 구절의 SQL구문을 실행하게 됩니다. 어때요? 간단하죠?
6
October
2009
Ubuntu에서 PostgreSQL설치 후 기본 postgres계정 Password설정하기
Category :
MySQL/PostgreSQL
Posted by
장창학 at 3:00 PM
Ubuntu에서 PostgreSQL를 설치하고, 기본 계정인 postgres의 패스워드를 지정해야만 PGAdmin으로 접속이 가능하다. 어렵다.. PostgreSQL.. Oracle에 맞설 유일한 Enterprise급 Open Source SQL서버인데..
10
September
2009
ColdFusion에서 MySQL DB한방에 백업받기
Category :
MySQL/PostgreSQL
,
ColdFusion
Posted by
장창학 at 12:47 PM
ColdFusion에서 MySQL을 백업받기 위해서는 실제 MySQL의 유틸리티중 mysqldump를 이용하면 됩니다. 일반적으로 mysql db를 콘솔상에서 백업받으려면, 다음과 같이 명령어를 입력합니다.
| $ mysqldump -uusername -puserpassword --database sampledb -> /home/username/sampledb_backup.sql |
username과 userpassword는 당연히 mysql서버의 사용자ID와 패스워드입니다. 물론, sampledb는 사용자의 db명이고요. 위 명령어는 sampledb를 백업하여, /home/username디렉토리에 sampledb_backup.sql로 저장하라는 명령입니다.
자, 이제 ColdFusion에서 실행하려면 다음과 같이 하면 됩니다. mysqldump와 같은 shell명령어를 실행하려면, <CFEXCUTE>태그를 이용합니다. Unix, Linux는 물론, Windows의 명령어(*.exe나 *.bat등)도 실행가능합니다. 따라서 보안에 매우 위험한 태그여서 일반적인 ColdFusion웹호스팅환경에서는 사용이 금지되는 태그이기도 합니다.(웹호스팅환경에서는 거의 금지태그입니다. 물론 허용이 되었다고 하더라도, 사용자등급에 따라 시스템의 사용자그룹별로 명령어를 실행하는 권한을 제한해 놓았다면 결과는 실행되지 않겠죠?)
cfexecute name="mysqldump" arguments="--user=사용자명 --password=패스워드 사용자DB명" outputfile="/home/사용자명/mysqldump_#DateFormat(Now(), "YYYYMMDD")#_sql.sql" timeout="30"
위 CFML코드는 Linux상에서 mysqldump명령어를 실행하여, argument로 명령줄을 전송하고, 결과를 *.sql파일로 지정된 경로에 저장하라는 태그입니다. 이 코드가 입력된 cfm파일을 브라우저에서 호출하면 지정된 경로에 백업된 sql파일이 덤프되어 있습니다. 실제로는 백업되는 현재날짜별로 파일명에 규칙이 정해져 백업됩니다.(위 예제에서 명령줄의 앞뒤로 <와 >를 추가하세요. Railo등의 CF엔진은 이런 위험한(?)명령어 내용을 페이지에 디스플레이할때 Script Protect기능이 적용되어 <와 >를 각각 반대로 치환해 버립니다.ㅠㅠ)
24
May
2009
Eclipse에서 이용하는 무료 DB관리 - Eclipse SQL Explorer
Category :
MySQL/PostgreSQL
Posted by
장창학 at 9:17 PM
Eclipse SQL Explorer는 DbVisualizer와 같은 JDBC로 각 DB서버에 연결하여 DB를 관리하는 Eclipse용 플러그인 입니다. DbVisualizer가 유료인 반면, 가볍게 Eclipse에서 각 DB를 관리할 수 있는데, 대부분의 DB서버에서 JDBC연결을 지원하므로 각 DB서버의 제작사에서 제공하는 JDBC 드라이버만 설치하면 쉽게 연결이 가능합니다. 이러한 JDBC를 이용한 연결의 특장점으로는 사용중인 OS와는 관계없이 이용할 수 있다는 것인데요. 예를 들어 Ubuntu에서 개발하는 경우 Microsoft Sql Server에 연결을 지원하는 Client가 없으므로 매우 유용합니다.
또한 Flex Bulider에서도 이용가능합니다. 여기서는 Flex builder에서의 SQLServer 2005의 JDBC 설치방법에 대하여 간략히 언급하겠씁니다.
12
May
2009
Ubuntu MySQL 문자셋 지정
Category :
MySQL/PostgreSQL
Posted by
장창학 at 1:04 AM
Ubuntu는 시슽템의 대부분의 언어셋이 UTF-8임에도 불구하고 APT로 APM를 설치시 Mysql의 기본 인코딩셋은 Latin1입니다. 이를 모든 언어를 지원하는 UTF-8로 변경하려면 my.cnf파일을 다음과 같이 수정합니다. (참고로 기본적으로 Ubuntu Server 설치시 APM을 설치했다면 my.cnf파일의 위치는 /etc/mysql/my.cnf 입니다.)
[client]
default-character-set = utf8
[mysqld]
character-set-client-handshake=FALSE
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
default-character-set = utf8
character-set-server = utf8
collation-server = utf8_general_ci
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
정상적으로 변경되었는지 확인해 보기 위해서는 mysql로 접속하여 다음과 같은 명령어로 확인해 볼 수 있습니다.
\s