두 개의 리눅스 서버의 sql을 같은 DB처럼 사용하는 것이 이중화입니다.
오늘 설명할 이중화 설정 방법은 mysql에서 사용합니다.
Master -> slave (1 -> 2) 단방향으로 동작하는 방식입니다.
1. 설치 된 두 개의 mysql을 준비합니다.
준비한 mysql 서버 버전은 5.5.57, 5.5.44로,
OS는 CentOS 6로 준비하였습니다.
웬만하면 같은 버전으로 준비하는 것이 좋으나, 세부 버전 정도는 달러도 무방합니다.
2. 양 쪽 서버에서 mysql 설정 파일을 열어줍니다.
bash |
# vi /etc/my.cnf |
3. 각 서버의 mysql에 서버 번호를 부여합니다.
[mysqld] 아래 server-id='번호' 외의 다른 옵션은 무시하셔도 됩니다.
/etc/my.cnf |
(1번 서버) [mysqld] server-id=1 slave-skip-errors=all -> slave 서버에서 오류가 발생 시 무시하고 넘기는 옵션 무결성이 최 우선일 경우 생략 가능이나, 이중화가 해제 될 가능성 존재함 (2번 서버) [mysqld] server-id=2 slave-skip-errors=all |
4. mysql 서비스를 재 시작합니다.
bash |
# service mysql restart |
5. 이중화를 할 수 있는 계정 생성과 권한을 부여합니다.
권한 부여를 위해 mysql 서버로 접속합니다.
bash |
# mysql -u root -p |
mysql |
mysql > GRANT REPLICATION SLAVE ON *.* TO 'replicationuser'@'%' IDENTIFIED BY 'krujy1234!'; mysql > FLUSH PRIVILEGES; mysql > show grants for 'replicationuser'@'%'; |
grant replication slave on [데이터베이스 명].[테이블 명] to '[이중화 계정]'@'[접속 IP 정보]' identified by '[비밀번호]';
※ 이중화 계정은 없을 시 생성됩니다.
※ 반드시 두 서버 모두에 적용해야 합니다.
6. Slave(2번) 서버에서 이중화 명령어를 입력합니다.
Master (1번) 서버에서 정보를 확인합니다.
로그 파일 명과, 현재 입력하고 있는 위치를 알아야 합니다.
mysql (master) |
mysql > show master status; |
mysql (slave) |
mysql > stop slave; mysql > reset slave; mysql > change master to master_host='192.168.99.252', master_user='replicationuser', master_port=3306, master_password='krujy1234!', master_log_file='mysql-bin.000078', master_log_pos=9720519; mysql > start slave; |
master_log_file, master_log_pos의 경우에는 위에서 확인했던
Master 서버의 File (mysql-bin.000078)과 Position (9720519)를 입력해주면 됩니다.
문구 | 의미 |
master_host | Master 서버의 IP |
master_user | Master 서버의 이중화 계정 |
master_port | Master 서버의 mysql port 번호 |
master_password | Master 서버의 이중화 계정 비밀번호 |
master_log_file | Master 서버의 mysql 로그 파일 명 |
master_log_pos | Master 서버의 mysql 로그 파일 내 작성 위치 |
7. 정상적으로 이중화가 설정되었는지 확인합니다.
6번을 마지막으로 이중화 설정이 정상적으로 완료되었습니다.
이중화가 정상적으로 작동 중인지 확인합니다.
mysql (slave) |
mysql > show slave status\G; |
※ 마지막에 붙은 \G라는 옵션은 내용을 더 깔끔하게 볼 수 있게 해주는 옵션입니다.
Master_Host : 192.168.99.252
위와 같이 Master의 IP가 맞는지 다시 한번 확인합니다.
Slave_IO_State : Waiting for master to send event
Slave_IO_Running : Yes
Slave_SQL_Running : Yes
세 개의 상태가 위와 같이 표기가 되어 있다면 정상적으로 이중화가 완료된 것입니다.
'Database > mysql' 카테고리의 다른 글
[mysql] Database 백업, 복원하는 방법 (0) | 2021.08.23 |
---|---|
[mysql] 계정, 접속 권한 설정하기 (grant, revoke) (0) | 2021.07.27 |
[mysql] CONCAT 사용하여 데이터 합치기 (0) | 2021.07.23 |