출처 : http://blog.daum.net/gujjy/114


tomcat 으로 mysql 접속시 인코딩이 깨어질 때 체크해야 할 것들.


1. 데이타베이스 및 테이블 생성 시 인코딩 적용

  CREATE DATABASE 디비명 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

  CREATE TABLE 테이블명(
    컬럼들~~~~
)ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT='테이블 주석';


2. jdbc 데이터 소스 생성 시 인코딩 적용

  jdbc:mysql://서버주소:포트/디비명?useUnicod=true&characterEncoding=utf8


  &는 xml 에서는 &로 적어준다.


3. web.xml에 인코딩 필터 적용

<filter> 
<filter-name>encodingFilter</filter-name> 
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
<init-param> 
<param-name>encoding</param-name> 
<param-value>UTF-8</param-value> 
</init-param> 
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


4. Get 파라메터 한글 깨짐 적용

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="utf8" />


  URIEncoding을 적용하면 get으로 한글을 보낼때 깨지 않는다.




저작자 표시
신고

1. Apache 다운로드
  - http://apache.org/ 에 가서 아래의 왼쪽 위 HTTP Server를 찾아서 클릭.(헷갈리면 Ctrl+F로 검색해서 찾음)


  - Download를 클릭

 - 각자의 서버환경에 맞추어 다운로드. 필자는 윈도우2003 이므로 httpd-2.2.17-win32-x86-no_ssl.msi 파일을 다운받았다.
 - 클릭하여 계속 Next를 눌러주어 설치한다. 아파치를 시작하고 http://localhost 로 접속하여 화면이 뜬다면 제대로 설치된 것 이다.

2. PHP 설치
 - http://www.php.net/downloads.php 가서 ZIP형태로 된 PHP파일을 다운받는다. 따로 설치라 할건 없고 그냥 다운받아서 원하는곳에  압축을 풀어놓는 형태다. 현재날자 기준으로 5.3버전이 최신버전인데.. 필자는 아파치랑 연동이 안되서 구버전인 php-5.2.11-Win32.zip 파일을 찾아서 다운받았다.

3. MySQL 설치
  - http://www.mysql.com/downloads/mysql/ 에 가서 메뉴에서 Downloads를 클릭하고 왼쪽의 MySQL Community Server를 클릭한다.

  - 오른쪽 화면에 파일 목록이 보일것이다. 각자에 입맛에 맞게 다운하고 설치한다. root 비밀번호 셋팅하고 까먹지 마시길..

4. 연동 설정

  - 아파치폴더/conf/httpd.conf를 열어서 맨 밑줄에  아래코드를  삽입한다. 파일명을 제외한 앞쪽 경로는 각자의 환경에 맞게 셋팅하시길...
#-------------------------------------------------------------------------------------------------------------
LoadModule php5_module "C:/PHP/php5apache2_2.dll"             
AddType application/x-httpd-php .php .html
PHPIniDir "C:/PHP"

AddDefaultCharset UTF-8
#-------------------------------------------------------------------------------------------------------------
  
  - PHP폴더/php.ini-dist 파일을 복사하여 php.ini로 파일 이름을 수정하고 맽 밑줄에 다음을 추가하고 PHP폴더에서 libmysql.dll파일을 C:\windows\system32 폴더로 복사
#-------------------------------------------------------------------------------------------------------------
default_charset="utf-8"
#-------------------------------------------------------------------------------------------------------------

  - MySQL 설정.
    특별히 변경할 것은 없다. 다만 케릭터셋 변경이 필요하다면 MySQL폴더/my.ini 파일을 수정한다.
    default-character-set으로 되어 있는 부분을 찾아.. 변경/추가한다.
#-------------------------------------------------------------------------------------------------------------
  [mysql]
  default-character-set=utf8
  [mysqld]
  default-character-set=utf8
#-------------------------------------------------------------------------------------------------------------

5. 설정 확인
  - 파일을 하나 만들어서 열어본다. 아파치 홈폴더를 변경하지 않았을 경우 기본적으로 아파치폴더/htdocs가 잡히므로 거기에 만들면 된다.
#-------------------------------------------------------------------------------------------------------------
<?
phpinfo();
?>
#-------------------------------------------------------------------------------------------------------------
  위 파일을 웹브라우저에서 열어보면 php환경설정을 볼수 있다. 케릭터셋이나 디비연동등을 확인해본다.


설정 끝

저작자 표시
신고


두개의 서버가 있고 하나를 백업디비로 할때 사용했다.
미러링이라고 보면 된다. 양방향 동기화는 아니고 마스터서버에서 슬레이브서버로 복사한다는 개념(?)..
간단한 설정 방법을 남긴다.

♦ MySQL Replication 설정
Master Mysql 5.0.45 IP : xxx.xxx.xxx.xxx
Slave Mysql 5.0.45 IP : xxx.xxx.xxx.xxx
참고 : Mysql 버전이 서로 다를 경우, 높은 버전은 Slave만 가능하다.

♦ Master Server 설정
my.cnf 파일을 편집한다.
# vi /etc/my.cnf
-------------------------------
server-id = 1                          1로 셋팅한다.
log-bin=mysql-bin                      주석(#)처리가 되어 있다면 풀어준다
-------------------------------
위 속성은 중복 되면 안된다. 전체파일을 잘 살펴 보아야 한다.

mysql 접속후 슬레이브에서 접속할 계정을 만든다.
# mysql> GRANT REPLICATION SLAVE ON db명.* TO 계정아이디@'%' IDENTIFIED BY '비번';
(%대신 IP주소를 넣으면 그 IP로부터 접속하는 slave에 대해서만 접속을 허용하겠다는 의미)
# mysql>FLUSH TABLES WITH READ LOCK;
# mysql>show master status;
-----------------------------------------------------------------
   File                Postion          Binlog_Do_DB         Binlog_Ignore_DB
   mysql-bin.000003       98
-----------------------------------------------------------------
위 출력물은 컴퓨터마다 다를 것이다. 슬레이브 서버에 적용시킬때 쓰인다.

이제 마스터 서버의 db데이터를 덤프한다.
# mysqldump -u root -p db명 > 파일명.sql
# mysql>UNLOCK TABLES;

♦ Slave Server 설정
my.cnf 파일을 편집한다.
# vi /etc/my.cnf
---------------------------------
server-id = 2                            이줄이 없을 경우나 1로 셋팅 되어있을 경우나 모두 2로 셋팅
replicate-do-db='db명'            전체 디비를 설정할려면 이줄은 삭제, 한 개의 디비만 리플리케이션 시킬려면        디비명을 적는다. 2개 이상의 경우 다음줄부터 똑같이 적는다.
---------------------------------
마스터 서버에서 덤프한 파일을 이용하여 복구한다.
# mysql -u root -p db명 < 파일명.sql

# mysql>CHANGE MASTER TO
 ->MASTER_HOST='192.168.0.10',
 ->MASTER_USER='계정명',
 ->MASTER_PORT=3306,
 ->MASTER_PASSWORD='패스워드',
 ->MASTER_LOG_FILE='mysql-bin.000003', 마스터의 상태보기 명령에서 나온 파일명
 ->MASTER_LOG_POS=98;   마스터의 상태보기 명령에서 나온 포지션

# mysql> SHOW SLAVE STATUS\G;
♦ Master & Slave 설정확인
마스터 # mysql>SHOW PROCESSLIST\G;
슬레이브 # mysql>SHOW PROCESSLIST\G;

이후 직접 마스터서버에서 insert 또는 delete를 이용하여 테스트를 해본다.

♦ 필수 ♦
mysql-bin.00003 등 뒤부분의 숫자가 올라가면서 파일이 생성된다. 또한 마스터 서버에서 삽입, 삭제, 업데이트 되는 부분은 이 파일을 이용하여 슬레이브 서버에 동기화를 시킨다. 마스터 서버가 리스타트 될시 슬레이브 서버와 연결된 부분이 끊기게 된다.
이때는 마스터 서버에서 # mysql>show master status; 를 이용하여 파일명과 포지션을 획득하고
슬레이브 서버에서
# mysql> stop slave;          중지시키고
# mysql>CHANGE MASTER TO
 ->MASTER_HOST='192.168.0.10',
 ->MASTER_USER='계정명',
 ->MASTER_PORT=3306,
 ->MASTER_PASSWORD='패스워드',
 ->MASTER_LOG_FILE='mysql-bin.000003', 마스터의 상태보기 명령에서 나온 파일명
 ->MASTER_LOG_POS=98;   마스터의 상태보기 명령에서 나온 포지션
CHANGE 명령을 이용하여 파일과 포지션을 다시 셋팅한다.

# mysql> start slave;

 

저작자 표시
신고