본문 바로가기
DATABASE/DB HA

mysql replication

by 개폰지밥 2019. 3. 25.
반응형

    master ip 주소 : 192.168.56.50

    slave ip 주소: 192.168.56.51


   1) Mysql 설치

-       Mysql 설치되어있는지 확인

rpm -qa | grep ^mysql-server

-       Mysql 설치

yum -y install mysql-server

- Mysql 시작

service mysqld start

- 부팅 시 자동시작 설정

chkconfig mysqld on


   2) /etc/my.cnf 수정

먼저 master 서버의 /etc/my.cnf

[mysqld]

bind-address=192.168.56.70

server-id=1

binlog-do-db=databasename

relay-log=/var/lib/mysql/mysql-relay-bin

relay-log-index=/var/lib/mysql/mysql-relay-bin.index

log-error=/var/lib/mysql/mysql.err

master-info-file=/var/lib/mysql/mysql-master.info

relay-log-info-file=/var/lib/mysql/mysql-relay-log.info

log-bin=/var/lib/mysql/mysql-bin

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0


[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid



slave 서버의 /etc/my.cnf

 [mysqld]

server-id=2

master-host=192.168.56.70

master-connect-retry=60

master-user=replicauser

master-password=replicapass

replicate-do-db=databasename

relay-log = /var/lib/mysql/mysql-relay-bin

relay-log-index = /var/lib/mysql/mysql-relay-bin.index

log-error = /var/lib/mysql/mysql.err

master-info-file = /var/lib/mysql/mysql-master.info

relay-log-info-file = /var/lib/mysql/mysql-relay-log.info

log-bin = /var/lib/mysql/mysql-bin

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0


[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid


3) Mysql 재시작: service mysqld restart


4) Mysql 접속: mysql -uroot


5) 사용자 생성 & 권한 부여 & 권한 플러시 & 복제할 DB 만들기 & 데이터 베이스 잠그기


GRANT REPLICATION SLAVE ON *.* TO 'replicauser'@'192.168.56.71' IDENTIFIED BY 'replicapass';


FLUSH PRIVILEGES;


FLUSH TABLES WITH READ LOCK;


* 복제 테스트할 database와 table 만들기

CREATE DATABASE databasename;    =>database 하나 만듬

connect databasename   => 만든 database로 연결함.

create table aaa (aaa int);    => 테이블 하나 만듬

* 만들어진 database와 table 확인하는 방법

show databases;

connect databasename;

show tables;


6) 슬레이브로 보낼 databasename 덤프뜨기

mysqldump -u root -p databasename > databasename.sql


7) 슬레이브로 데이터베이스 전송



8) master와 slave 연결

먼저 master에 가서 master 상태를 확인합니다.

show master status\G

File과 Position을 기억합니다.


slave 서버로 옵니다.

Stop slave;

CHANGE MASTER TO MASTER_HOST='192.168.56.50', 

MASTER_USER='replicauser', 

MASTER_PASSWORD='replicapass', 

MASTER_LOG_FILE='mysql-bin.000003', 

MASTER_LOG_POS=203;

 start slave;

 show slave status\G;

 

l  복제 실패 체크리스트

운영체제가 linux 인가?

O 리눅스임

마스터에는 mysql 전역 변수 “read-only=1”을 설정했는가? (slave가 하나뿐이라면 신경 안써도 된다.)

슬레이브가 하나뿐임.

다중 마스터 복제가 지원되는 0.52 버전 이상인가?

O 0.53

Mysql 버전 5.0 이상인가?

O 5.1.73

mysql --version

Mysqlbinlog가 있는가?

(Mysql 5.1 이상에서는 mysqlbinlog를 사용한다.)

O 사용하고있음

mysqlbinlog --version

slave에서 log-bin이 활성화 되어있는가?

(현재의 슬레이브가 log-bin 설정하지 않는다면, 새로운 마스터가 없습니다)

O

바이너리로그 및 릴레이 로그 필터링 규칙이 모두 (slave, master)동일한가?

O


반응형

댓글