[펌]MySQL Replication 설치

|

MySQL Replication 설치

저작권 : 문서는자유롭게수정배포가가능합니다. 상업적용도로사용할없습니다.
수정배포작성자의이름출처를명시하기바랍니다
.
작성자 : f405(ccotti22)

작성일 : 2005 12 28요일
이메일 : f405@naver.com


문서는공부하는입장에서작성되었으므로틀린부분을다소포함할있으며, 저는그에대한책임을지지않겠습니다. 부족하지만다른분들도공부하는데도움이되길바랍니다. 그리고문서를작성하기참고한리눅스문서들을작성하신많은선배님들에게감사의말씀을드립니다.
그리고후부터는경어는생략하였습니다. 양해의말씀을...

설치환경

Red Hat Linux (Kernel 2.6.9-22.ELsmp)

Intel(R) Xeon(TM) CPU 2.80GHz ( 4 CPU )

MemTotal : 1GB

설치패키지구성(필요한파일)

//다음파일들을다운받고설치시작 (2005-12-28 현재최신 stable 버전)

mysql-standard-5.0.17-linux-i686-glibc23.tar.gz

다음사이트에서필요한파일들을다운받을있다.

[MySQL]                   http://dev.mysql.com/downloads

- MySQL 설치

Replication구축하기위해우선 MySQL설치한다. 설치특이사항은없고일반적으로설치하면되므로기타자세한설명은하지않도록하겠다.

# groupadd mysql
# useradd -g mysql
# tar xvzf mysql-standard-5.0.17-linux-i686-glibc23.tar.gz
# mv ./mysql-standard-5.0.17-linux-i686-glibc23 /usr/local/
# ln -s /usr/local/ mysql-standard-5.0.17-linux-i686-glibc23 /usr/local/mysql
# cd /usr/local/mysql
# ./scripts/mysql_install_db
# chown -R root .
# chown -R mysql data
# chgrp -R mysql .
# cp ./support-files/my-medium.cnf /etc/my.cnf
# cp ./support-files/mysql.server /etc/init.d/mysqld
# vi /etc/init.d/mysqld

/////
다음부분을찾아서고칠

$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file --user=mysql >/dev/null 2>&1 &

# chmod 700 /etc/init.d/mysqld
# chkconfig --add mysqld
# chkconfig --level 345 mysqld on
# /etc/init.d/mysqld start

- MySQL Replication 설치

Replication 이란?

Replication 3.23.15부터지원되기시작한기능으로복제라는사전적의미에맞게마스터의 MySQL 서버의데이터를여러대의슬레이브 MySQL 서버의데이터와동기화시켜주는기능이다.

주로, MySQL데이터를실시간으로백업하거나, 데이터서버의부하분산을하고자많이사용된다.

, 이제 Master-Slave구성된 Replication 상태를만들어보도록하자.

How to Set Up Replication

1.       MySQL master slave 서버에설치한다.
안정성을위해서버의버전을맞춰주는것이좋다. Replication 기능은3.23.15부터지원되기시작하였으나 3.23.32부터안정화되었다고알려져있으므로, 이상혹은최신버전의 MySQL 설치하길권장한다
.

2.       slave 서버에서 master 서버에접속할있도록, master 서버에계정을만든다. 사용자를추가해주어야한다는말이다. 계정에 REPLICATION SLAVE 권한을주어야한다. replication에만사용할계정이라면추가적인권한은주지않아도된다.
slave 서버에서master 서버에접속할계정과패스워드에권한을부여하는명령은다음과같다.
master mysql > GRANT REPLICATION SLAVE ON *.*           -> TO 'user_name'@'user_host' IDENTIFIED BY 'user_password';
여기서 user_name중복되지않는이름이면되며, user_host slave만들서버의주소혹은도메인네임을적어준다. 주소의 slave 유저만 master 서버로접속할있다.

4.0.2 이전버전의 MySQL에서는, REPLICATION SLAVE 권한이없으므로, 다음과같이 FILE 권한으로대신한다.
master mysql > GRANT FILE ON *.*

          
-> TO 'user_name'@'user_host' IDENTIFIED BY 'user_password';

3.       master 서버의기본데이터를백업받아, slave 서버의데이터베이스에복사한, 데이터디렉토리에서압축을푼다.

 
HOT 백업

master mysql > FLUSH TABLES WITH READ LOCK;
master shell > tar -cvf /tmp/mysql-snapshot.tar .
slave   shell > tar -xvf /tmp/mysql-snapshot.tar
master mysql > UNLOCK TABLES;

  mysqldump
이용백업

master Shell > mysqldump –u root –p ‘password’ -B db_name > dump_file.sql

4.       Master Slave 데이터베이스환경을설정한다.
우선 master 서버를설정하도록한다
.
master shell>
vi /etc/my.cnf
master 서버는디폴트로구성이되어있을것이므로, [mysqld] 섹션에 log-bin있는확인한다
.
[mysqld]
log-bin
server-id  = 1

5.       다음은 slave 서버의환경설정이다.
slave shell>
vi /etc/my.cnf
[mysqld] 섹션으로가서 server-id master 서버의 server-id다르게설정한다
.
문서에서는 2설정하도록하겠다. slave 서버를여러대로구축하고자때에 slave 서버의 server-id각각달라야한다는것에주의하자. 2^32-1까지가능하다
.
[mysqld]
server-id             = 2
master-host          = xxx.xxx.xxx.xxx(user_host)
master-port           = 3306
master-user          = user_name
master-password  = user_password


6.       master 서버의데이터를백업받았다면, slave 서버를시작하기전에 slave 서버의데이터디렉토리에 master 서버의데이터를복사해둔다. mysqldump사용했다면, 다음으로가서먼저, slave 서버를스타트한다.

7.       slave 서버를스타트한다.
slave shell > /etc/init.d/mysqld start

8.       mysqldump사용해백업파일을만들었다면, slave 서버에덤프파일을로드시킨다.
slave shell > mysql –u root –p < dump_file.sql

9.       slave 서버에서 master-host, master-user, master-password 등의설정을다음과같이바꿀수도있다. 물론 /etc/my.cnf에서설정하지않았을경우에도있다.
slave mysql >  CHANGE MASTER TO
          ->        MASTER_HOST='master_host_name',
          ->        MASTER_USER='replication_user_name',
          ->       
MASTER_PASSWORD='replication_password',           ->        MASTER_LOG_FILE='recorded_log_file_name',           ->        MASTER_LOG_POS=recorded_log_position;

    

      각옵션의최대길이는다음과같다.

MASTER_HOST

60

MASTER_USER

16

MASTER_PASSWORD

32

MASTER_LOG_FILE

255



10.   slave 쓰레드를스타트한다.
slave mysql > START SLAVE;

11.   mysql/data/slave.err확인하여다음과같은메시지가있으면성공적으로설정된것이다.
Slave I/O thread: connected to master 'user_name@user_host:3306',  replication started in log 'FIRST' at position 4

'Computing > MySQL' 카테고리의 다른 글

mysql 복구  (0) 2011.11.04
[Mysql] 쿼리문 내에서 encoding 변경...  (0) 2010.11.17
[펌]MySql 복구 방법  (0) 2007.07.25
[펌]MySQL Cluster  (0) 2007.07.25
And