이전 포스팅에서는 리눅스 MariaDB 이중화를 위한 Master 서버의 구성 예제를 소개했습니다. Master 서버는 virt-manager를 활용하여 구성되었으며, 이를 통해 이중화 설정에 필요한 기본적인 단계들을 상세히 설명했습니다. 이전 포스팅의 예제를 참고하여 Master 서버를 구성하는 방법을 자세히 알아보세요. 특히 virt-manager를 통한 가상의 리눅스 환경을 구성하여 master db 서버를 구성합니다. 이 내용을 먼저 진행해야 이후 예제들을 따라하실 수 있습니다.
2024.02.22 - [Linux] - [Linux/Ubuntu] 리눅스 MariaDB MaxScale 이중화 설정 예제 - 1(DB Master 가상 서버 및 패키지 설치)
다음으로 이전 포스팅에서는 리눅스 MariaDB MaxScale 이중화에 사용되는 virt-manager를 활용한 Slave 서버의 구성 예제를 알아보았습니다. Slave 서버는 이중화 설정에서 중요한 역할을 담당하며, 이를 위해 virt-manager를 사용하여 구성합니다. 이전 포스팅의 예제를 참고하여 Slave 서버를 구성하는 방법을 자세히 알아보세요. Master DB, Slave DB 총 2개의 서버를 사용하여 서로 디비 상태를 동기화합니다. 이를 통해 MaxSacale로 이중화가 가능합니다.
2024.02.23 - [Linux] - [Linux/Ubuntu] 리눅스 MariaDB MaxScale 이중화 설정 예제 - 2(DB Slave 가상 서버 및 패키지 설치)
마지막으로 이전 포스팅에서는 리눅스 MariaDB MaxScale 이중화 설정에 필요한 세부 단계들을 다루었습니다. Master 서버의 외부접속 허용, Replication 사용자의 생성, 그리고 DB 백업에 대한 예제와 설명이 제공되었습니다. 외부 접속이란 Master DB 서버와 동일한 근거리 통신망(LAN) 호스트들 이외 인터넷망 밖에서도 DB 서버에 접속할 수 있도록 하는 것을 의미합니다. 그래야 MaxScale로 DB 이중화를 했을 때 안전하게 데이터베이스 형상을 유지시킬 수 있습니다.
이번 포스팅에서는 리눅스 MaxScale DB 이중화 설정에서 Slave 서버의 외부접속 허용에 대한 설정 예제를 알아보겠습니다. Slave 서버는 이중화 설정에서 중요한 역할을 담당하며, 외부접속 허용 설정은 데이터베이스에 외부에서 접속할 수 있는 환경을 구성하는 중요한 단계입니다. 아래 과정을 통해 Master 서버에 이어 Slave 서버도 외부 접속을 허용해주세요. Slave 서버는 server_id를 2로 설정합니다.
$ sudo vim /etc/mysql/mariadb.conf.d/50-custom-my.cnf
[mariadb]
# Server Configuration
log_error = mariadbd.err
innodb_buffer_pool_size = 1G
# Replication Configuration (Replica Server)
log_bin = mariadb-bin
server_id = 2
binlog_format = ROW
$ cat /etc/mysql/mariadb.conf.d/50-custom-my.cnf
그리고 아래와 같이 zero 바인딩 설정을 통해 외부 접속을 허용합니다.
$ sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
...
#bind-address = 127.0.0.1
bind-address = 0.0.0.0
...
이후 서버를 재시작합니다.
$ sudo service mysql restart
마지막으로, 리눅스 MaxScale DB 이중화 설정에서 DB 복제본의 복원 예제를 알아보겠습니다. 이중화 설정에서는 데이터베이스의 신뢰성과 안정성을 위해 복제본을 유지하는 것이 중요합니다. 최초 이중화 구성시 마지막 Master 서버의 데이터베이스 형상을 그대로 복제하여 Slave 서버에도 동일하게 구성해야합니다. 따라서 이전 포스팅에서 다룬 DB 백업 후 나온 결과물을 통해 Slave 서버에 복원합니다.
$ sudo mkdir -p /db/backup/
$ sudo chown -R $LOGNAME.$LOGNAME /db
$ sudo rsync -av master@172.16.3.36:/db/backup/replica_backup /db/backup/
$ sudo rm -rf /var/lib/mysql/*
$ sudo mariabackup --copy-back --target-dir=/db/backup/replica_backup
$ sudo chown -R mysql:mysql /var/lib/mysql
$ cat /db/backup/replica_backup/xtrabackup_binlog_info
...
mariadb-bin.000001 0-1-5
...
$ sudo mariadb
> SET GLOBAL gtid_slave_pos='0-1-5';
> CHANGE MASTER TO MASTER_USER = "repl", MASTER_HOST = "172.16.3.36", MASTER_PASSWORD = "test1234", MASTER_USE_GTID=slave_pos;
> START SLAVE;
> SHOW SLAVE STATUS\G
# 아래 항목이 Yes 인지 확인
Slave_IO_Running: Yes
Slave_SQL_Running: Yes