MySQL Replication 설치
저작권 : 이문서는자유롭게수정및배포가가능합니다. 단상업적용도로사용할수없습니다.
수정및배포시작성자의이름및출처를꼭명시하기바랍니다.
작성자 : f405(ccotti22)
작성일 :
이메일 : f405@naver.com
이문서는공부하는입장에서작성되었으므로틀린부분을다소포함할수있으며, 저는그에대한책임을지지않겠습니다. 부족하지만다른분들도공부하는데도움이되길바랍니다. 그리고이문서를작성하기전참고한리눅스문서들을작성하신많은선배님들에게감사의말씀을드립니다.
그리고이후부터는경어는생략하였습니다. 양해의말씀을...
설치환경
Red Hat Linux (Kernel 2.6.9-22.ELsmp)
Intel(R) Xeon(TM) CPU 2.80GHz ( 4 CPU )
MemTotal : 1GB
설치패키지구성(필요한파일)
//다음파일들을다운받고설치시작 (
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
여기서 user_name은중복되지않는이름이면되며, user_host 는 slave로만들서버의주소혹은도메인네임을적어준다. 이주소의 slave 유저만 master 서버로접속할수있다.
4.0.2 이전버전의 MySQL에서는, REPLICATION SLAVE 권한이없으므로, 다음과같이 FILE 권한으로대신한다.
master mysql > GRANT
-> 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 |