<환경구성>
OS : Amazon Linux 두대
1. MariaDB 설치
$ sudo yum update
$ sudo yum -y install mariadb-server
$ sudo systemctl start mariadb
$ systemctl status mariadb
2. my.cnf 파일 수정 및 서비스 재시작
$ sudo vim /etc/my.cnf
[mysqld]
# Master Settings
server_id = 1 # 추가
$ sudo systemctl restart mariadb
2-1) 적용확인
$ mysql -u root -p
> show variables like 'server_id';
3. replication 사용자 등록
# grant replication slave on *.* to 아이디@'%' identified by '비밀번호';
> create user testmoon@'%' identified by '123456';
> grant replication slave on *.* to testmoon@'%' identified by '123456';
> flush privileges;
- *.*은 DB.table, '%'은 ip 모두 허용
- flush privileges : MySQL의 환경 설정을 변경할경우, MySQL의 재시작 없이 변경한 설정부분을 적용시키고자 할 때 사용
※ 오류
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '> grant replication slave on *.* to testmoon@'%' identified by '123456'' at line 1
- 원인 : 사용자가 없음
- 사용자 생성부터 해줘야함
4. Master 정보 확인
> show master status;
※ 오류
Empty set (0.00 sec) 으로 뜨는 경우
> show variables like '%log_bin%'; 으로 확인하면 log_bin이 꺼져있기 때문임 my.cnf 파일을 수정해줘야함
4-1) my.cnf 수정 및 서비스 재시작
- log_bin 을 추가해줘야 한다
$ sudo vim /etc/my.cnf
[mysqld]
log_bin = mysql-bin # 추가
$ sudo systemctl restart mariadb
4-2) 다시 Master 정보 확인
- Slave와 Master 연결 시 필요한 정보이므로 기억해두기
- 서비스 재시작하면 File, Position이 변경되므로 확인 필요
5. Slave 설정
5-1) my.cnf 파일 수정 및 서비스 재시작
$ sudo vim /etc/my.conf
[mysqld]
# Slave Settings
#
server_id = 2
relay_log = mysql-relay-bin
log_slave_updates = 1
read_only = 1
$ sudo systemctl restart mariadb
5-2) server_id 확인
> show variables like 'server_id';
6. Master 접속 정보 설정
> CHANGE MASTER TO MASTER_HOST='Master서버 IP',
-> MASTER_USER='아이디',
-> MASTER_PASSWORD='패스워드',
-> MASTER_PORT=DB Port,
-> MASTER_LOG_FILE='위에서 확인한 File',
-> MASTER_LOG_POS=위에서 확인한 Position,
-> MASTER_CONNECT_RETRY=10;
6-1) slave 시작 및 동작 확인
- Slave_IO_Running , Slave_SQL_Running 둘 다 Yes 면 성공
> start slave;
> show slave status\G;
※오류
Slave_IO_Running 이 Connecting 인 경우 보안그룹(방화벽) 확인
- Master와 Slave 서로 접근 가능해야함
- Master 보안그룹 (3306을 Slave 열어줌)
- Slave 보안그룹 (3306을 Master 열어줌)
=> 보안그룹 열어 준 후 연결 성공 확인
6-2) slave 정보 초기화 하기
- Slave 연결 실패 또는 재연결 할 때 초기화 후 다시 6번(Master 접속 정보 설정) 진행
> stop slave;
> reset slave all;
7. Replication 확인 (Master에서 작업)
> show databases;
> use test;
> create table moon(
-> id int);
> show tables;
> insert into moon values (1);
> select * from moon;
7-1) Slave에서 확인
- Master에서 생성한 moon table과 내용확인
> show databases;
> use test;
> show tables;
> select * from moon;
'AWS' 카테고리의 다른 글
[EKS] kubectl 에러 (error: You must be logged in to the server (Unauthorized)) (0) | 2023.01.05 |
---|---|
[EKS] 클러스터 생성 및 configmap 수정 (0) | 2023.01.02 |
[AWS] 터널링 (0) | 2022.11.03 |
[AWS] svn 설치 (0) | 2022.11.03 |
[AWS] Jenkins 설치 & ALB (0) | 2022.11.03 |