728x90
반응형
해당 포스트에서는 분리한 Zabbix DB 서버를 가지고 Replication 구성을 진행해보도록 하겠습니다.
** OS 버전: ubuntu 18.04
** DB 버전: mysql Ver 8.0.22
1. Slave 서버 준비
- Slave DB 서버는 되도록이면 데이터 호환성을 위해 Master DB와 같은 버전의 DB를 사용해줍니다.
- Slave DB 서버의 버전을 다르게 가져가 경우 Master DB보다는 버전이 높아야합니다.
- 저는 Hyper-V의 VM을 통해서 테스트를 진행하였습니다.
- 기존 zabbix DB로 사용하던 VM을 복사를 진행하였으며, 그러므로 별도의 DB 설치는 진행하지 않았습니다.
- 다른 방식을 통해서 진행하시는 경우
# mysql -V
: 아래 명령을 통해 본인의 DB 버전을 확인하신 후 동일 버전으로 설치를 진행해줍니다.
# dpkg -l
: 아래 명령어로 설치된 패키지들이 확인이 가능합니다.
2. Zabbix-Server 중지
- Replcation 설정을 위해 잠시 Zabbix-Server를 중지합니다.
- 초기 설정 단계에 진행하실 경우 Skip 해주세요.
# service zabbix-server stop
3. Master DB 설정
- 복제를 하기 위해 Master DB에서 필요한 설정을 해주겠습니다.
- 저는 기존의 Zabbix 계정을 이용하여 진행하였으며, 보안상 root 계정을 통한 Replication 구성은 자제를 권고드립니다.
- my.cnf 설정
: 저는 아래의 Include된 conf 디렉토리 밑에 설정하였습니다.
: 설정 내용
# vim /etc/mysql/mysql.conf.d/mysqld.cnf
- mysqld 설정의 맨 밑줄에 아래와 같이 두 줄을 추가해주었습니다.
.
.
[mysqld]
server-id = 1
log-bin = mysql-bin
.
.
.
:wq
- DB 재 시작
# service mysql restart
- DB 설정
# mysql -u root -p
: 암호 입력
> use mysql;
> select Host,User from user;
- Slave DB에서 접근 예정으로, 외부 접속용 계정인 zabbix@'%' 계정에 replication slave 권한을 할당합니다.
> grant replication slave on *.* to zabbix@'%';
> show grants for zabbix@'%';
- Master 상태 확인
> show master status;
: Replication 설정에 사용할 내용으로 다른 곳에 적어두세요.
> Ctrl + D
- DB 백업 및 이동
# mysqldump -u [계정 명] -p zabbix > zabbix.sql
# scp zabbix.sql [접속 계정 명]@[Slave DB IP]:~
4. Slave DB 설정
- my.cnf 수정
: 위와 동일한 경로에 설정해주었습니다.
: 설정 내용
# vim /etc/mysql/mysql.conf.d/mysqld.cnf
- mysqld 설정의 맨 밑줄에 아래와 같이 두 줄을 추가해주었습니다.
.
.
[mysqld]
server-id = 2
replicate-do-db = 'zabbix'
.
.
.
:wq
- DB 재시작
# service mysql restart
- DB 설정
# mysql -u root -p
: 암호 입력
> create database zabbix character set utf8 collate utf8_bin;
> Ctrl + D
- DB 복원
# mysql -u root -p zabbix < zabbix.sql
: 암호 입력
- Replication 설정
# mysql -u root -p
: 암호 입력
> change master to
-> master_host="[Master DB IP]',
-> master_user="zabbix",
-> master_password="[zabbix 계정 암호]", // 기억이 안나시면 zabbix_server.conf, zabbix.conf.php 보면 있음
-> master_log_file='mysql-bin.000003', // 저랑 똑같이 쓰시면 안되요, show master status 참고
-> master_log_pos=1258677; // 저랑 똑같이 쓰시면 안되요, show master status 참고, ' ' 없으니 주의!!
> start slave;
- Slave 상태 확인
> show slave status;
: 아래와 같이 Slave_IO_Running, Slave_SQL_Running이 Yes로 표기되면 정상 대기 상태 입니다.
: Slave_IO_State를 보시면 Master 서버에서 업데이트를 기다리고 있습니다.
** 오류 발생 **
> show slave status;
: 아래와 같은 오류가 발생
Last_IO_Error: Fatal error: The SLAVE I/O thread stops because MASTER AND SLAVE have equal MySQL SERVER UUIDs; these UUIDs must be different FOR REPLICATION TO work.
** 해결 방안 **
- VM 복제로 인해서 auto.conf 파일의 server-uuid가 동일하여 발생되는 문제
: Slave DB 서버의 auto.cnf 를 삭제 처리하였습니다.
# rm -f /var/lib/mysql/auto.cnf
: 아래와 같이 재 실행 후 확인해보면 auto.cnf 파일은 재 생성되어집니다.
4. 동작 테스트
- Zabbix Host를 하나 추가 해주겠습니다.
- Master DB 접속
# mysql -u root -p
> use zabbix;
> select * from hosts where host='replication-test';
- Slave DB 접속
# mysql -u root -p
> use zabbix;
> select * from hosts where host='replication-test';
> show slave status\G;
: 아래와 같이 relay log를 모두 읽어들여 복제한 것을 확인 할 수 있습니다.
728x90
반응형
'Zabbix' 카테고리의 다른 글
Zabbix Server 버전 업그레이드 - 01 (0) | 2021.04.19 |
---|---|
Zabbix API를 이용한 Trigger 관리 (2) | 2021.04.04 |
Zabbix 5.0 - Slack 연동 (1) | 2021.01.23 |
Zabbix Linux Process 모니터링 하기 (8) | 2021.01.14 |
Zabbix MYSQL Template 적용 (0) | 2021.01.14 |