본문 바로가기

Database

database mariadb replication 구축

database mariadb 단방향 replication구축을 해볼예정입니다.

docker container run -e MARIADB_ROOT_PASSWORD=1234 --name master -d -p 3308:3306 mariadb
docker container run -e MARIADB_ROOT_PASSWORD=1234 --name slave -d -p 3309:3306 mariadb

vi editor 설치

docker exec -it master /bin/bash
apt update
apt install -y vim

vi /etc/mysql/my.cnf 에 값 추가

[mysqld]
log-bin = mysql-bin
expire_logs_days = 2
server_id = 1

적용 확인 log_bin이 on으로 되어야 한다.

 

안에 들어 있는 값들을 기억 해야 한다.

 

master서버에 slave에서 사용할 계정 생성

grant replication slave on *.* to slave@'%' identified by '패스워드';
flush privileges;

slave 접속

docker exec -it slave /bin/bash

vi /etc/mysql/my.cnf 값 추가

[mysqld]
server_id = 2
relay_log = mysql-relay-bin
log_slave_updates = 1
read_only = 1

적용 확인

master ip주소 확인

  docker inspect -f "{{ .NetworkSettings.IPAddress }}" master
  172.17.0.3

Slave에 master 정보 추가

CHANGE MASTER TO MASTER_HOST='172.17.0.3',
MASTER_USER='slave', 
MASTER_PASSWORD='비밀번호', 
MASTER_PORT=3306, 
MASTER_LOG_FILE='mysql-bin.000001', 
MASTER_LOG_POS=328,
MASTER_CONNECT_RETRY=10;

slave 실행

MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.000 sec)

테스트

master에서 순서대로 sql문 실행

create database TEST;
use TEST;
create table test_table(
   idx int(11) primary key auto_increment not null,
   contents varchar(300) not null
);
insert into test_table(contents) values("마스터에서 넣은 데이터");
select * from test_table;

 

slave에서 테스트

use TEST;
select * from test_table;

 

'Database' 카테고리의 다른 글

MySQL 데이터 복구기  (0) 2024.06.01