일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 여름
- 米沢、팽이
- 라면
- fish
- 사이타마
- 토익
- 돈까스
- 영단어
- 리눅스
- youtuber
- 원탭바이
- 점심
- one tab buy
- 코라쿠엔
- TOY
- 명령어
- 시마지로
- 시스템관리
- 일본
- paypay
- 동경 모터쇼
- 돼지갈비
- 스테이크
- Sekai Entertainment
- 칸칸
- Shimajirou
- 신쥬쿠
- 자동차
- 전철
- しまじろう
- Today
- Total
IT Japan
[mySQL5.5] 19장. Replication 본문
n Replication
n Master 설정
1. Replication Master Configuration을 설정한다.
- enable binary logging
- 서버에 a unique server-id (positive integer between 1 and (2**32)–1)부여
- my.cnf 수정
[mysqld1]
log-bin=mysql-bin
server-id=1
2. slave와 communication할 유저를 생성합니다.
- REPLICATION SLAVE 권한을 가져야 한다.
mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'repl';
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'repl';
3. Obtaining the Master Replication Information
마스터의 현재 시점 정보를 바이너리 로그에 반영하고,
이정보는 슬레이브가 replication을 시작하는 시점이 되기도 한다.
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS -- 현재 로그
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
4. Creating a Data Snapshot Using mysqldump
현재 시점의 master 데이터베이스를 스냅샵한 후, slave 데이터베이스를 생성합니다.(복제 DB생성)
1) 현재 데이터베이스를 lock
mysql> FLUSH TABLES WITH READ LOCK;
2) 다른 session
shell> mysqldump --all-databases --lock-all-tables >dbdump.db
<< 참고 >> 데이터베이스가 너무 크다면, mysqldump보다 raw datafile을 직접 copy하는 것이 빠르다.
InnoDB tables을 사용하지 않는다면, shutdown 하지 않아도 된다.
1) In a separate session, shut down the MySQL server:
shell> mysqladmin shutdown
2) Make a copy of the MySQL data files
zip -r /tmp/dbdump.tar ./data
3) Start up the MySQL instance on the master.
n Slave 설정
1. Slave Configuration을 설정한다.
-set the unique server ID
-0이 아닌 값으로 설정
[mysqld2]
server-id=2
log-bin
2. master에서 생성한 snaptshot을 import합니다.
1) Start the slave, skipping replication by using the --skip-slave-start option.
net start mysqld2
2) Import the dump file:
shell> mysql < dbdump.db
<< 참고 >>
If you created a snapshot using the raw data files:
shell> tar xvf dbdump.tar
3. slave 가 master 정보를 가져올수 있게 설정한다.
master의 host명, port,유저등 Replication을 위해 communication할 master를 설정합니다.
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name',
-> MASTER_USER='repl',
-> MASTER_PASSWORD='repl'
-> MASTER_LOG_FILE='mysql-bin.003'
-> MASTER_LOG_POS=73;
4. slave thread를 시작한다.
mysql> START SLAVE;
이제 slave 는 replicating 중이며 , data directory 에는 master.info 와 relay-log.info가 생성되어 있습니다.
이제 replication 기능을 테스트합니다.
Master에 새로운 테이블을 생성한 후 slave에 잘 반영되는지(replication)를 확인합니다.
n Master
master>use world;
Database changed
master>show tables;
+-----------------+
| Tables_in_world |
+-----------------+
| city |
| city_packed |
| country |
| countrylanguage |
| europe_view |
+-----------------+
5 rows in set (0.02 sec)
1. 새로운 테이블 aa를 생성한다.
master>create table aa (id decimal(10));
Query OK, 0 rows affected (0.02 sec)
master>insert into aa values(1000);
Query OK, 1 row affected (0.03 sec)
master>commit;
Query OK, 0 rows affected (0.00 sec)
·Slave
slave >use world;
Database changed
slave >desc aa : 테이블이 잘 복제됨
-> ;
+-------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id | decimal(10,0) | YES | | NULL | |
+-------+---------------+------+-----+---------+-------+
1 row in set (0.01 sec)
slave >
slave >
slave >select * from aa; :데이터도 잘 복제됨
+------+
| id |
+------+
| 1000 |
+------+
1 row in set (0.00 sec)
: 복제 될때 network상황에 따라 gap이 발생 할수 있다. gap을 확인해 봅니다.
slave >show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: localhost
Master_User: repl
Master_Port: 3307
Connect_Retry: 60
Master_Log_File: suyoung-bin.000031
Read_Master_Log_Pos: 1781490
Relay_Log_File: suyoung-relay-bin.000002
Relay_Log_Pos: 607
Relay_Master_Log_File: suyoung-bin.000031
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
....
....
Seconds_Behind_Master: 0 <--- 현재 설정에서는 replication의 gap이 전혀 없다는 의미
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
'MySQL' 카테고리의 다른 글
MySQL-MHA를 이용한 Multi-Master HA 구축 (0) | 2016.05.25 |
---|---|
Cacti의 MySQL감시방법 (0) | 2016.04.20 |
[mySQL5.5] 18장. Backup & Recvoery (0) | 2016.03.23 |
[mySQL5.5] 17장. Views (0) | 2016.03.23 |
[mySQL5.5] 14장. 자동 통계 수집 (0) | 2016.03.23 |