Linux 29. Database 이중화

2024. 5. 10. 15:56Linux/CentOS7

 

DB이중화

 

이중화는 관리차원에서 항상 중요한 요소다.

그러니 중요 정보가 모여있는 DB의

이중화를 하지 않을 수 없다

 

먼저 MariaDB가 설치된 CentOS7 2개를 준비해주자

192.168.20.50 - CentOS7

192.168.20.100 - CentOS7

 

 

 

DB마스터 서버 설정

 

 

먼저 hostnamectl 명령어로 호스트 이름도 바꿔주자

hostnamectl set-hostname master1

 

이제 설정 파일에서 마스터 설정을 입력하자

[root@master1 ~]# cd /etc/my.cnf.d/
[root@master1 my.cnf.d]# ll
-rw-r--r--. 1 root root 295  5월  6  2020 client.cnf
-rw-r--r--. 1 root root 232  5월  6  2020 mysql-clients.cnf
-rw-r--r--. 1 root root 744  5월  6  2020 server.cnf

[root@master1 my.cnf.d]# vi server.cnf
----------------------------------vi 편집기--------------------------------
     13 server_id=1
     14 log-basename=master1
     15 log-bin
해당행에 내용 추가 후 저장



[root@master1 my.cnf.d]# systemctl restart mariadb

 

mariadb 재시작 후 접속해주자

 

MariaDB [mysql]> create user 'replication_user'@'%' identified by 'replication_user00##';

MariaDB [mysql]> grant replication slave on *.* to replication_user;


MariaDB [mysql]> show master status;
마스터 상태 확인 명령어
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb-bin.000001 |      510 |              |                  |
+--------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

file명과 Position을 기억해두자

.

.

마스터 서버의 설정은 끝났다.

 

 

 

 

DB 슬레이브 서버 설정

 

슬레이브 서버도 비슷하게 해주면 된다.

 

마스터 서버처럼 호스트네임을 바꿔주고

[root@localhost my.cnf.d]# hostnamectl set-hostname slave1

[root@localhost ~]# cd /etc/my.cnf.d/
[root@localhost my.cnf.d]# vi server.cnf 
--------------------------------vi 편집기-----------------------------
     13 server_id=2
     14 log-bin
     15 log-basename=master1
     16 report-host=slave1
해당행 추가 후 저장

[root@slave1 ~]# systemctl restart mariadb

재시작 후 실행

 

 

 

MariaDB [mysql]> show variables like 'server_id';
서버 ID 확인
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 2     |
+---------------+-------+
1 row in set (0.00 sec)

마스터 슬레이브 연결 명령어
MariaDB [mysql]> change master to master_host='192.168.20.50',master_user='replication_user',master_password='replication_user00##',master_port=3306,master_log_file='mariadb-bin.000001',master_log_pos=510,master_connect_retry=10;

서버 ID지정 및 마스터 서버 IP 계정.비밀번호,포트 등을 지정해주자

 

MariaDB [mysql]> start slave;

MariaDB [mysql]> show slave status \G;
슬레이브 서버 상태 확인

MariaDB [mysql]> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.20.50
                  Master_User: replication_user
                  Master_Port: 3306
                Connect_Retry: 10
              Master_Log_File: mariadb-bin.000001
          Read_Master_Log_Pos: 510
               Relay_Log_File: master1-relay-bin.000002
                Relay_Log_Pos: 531
        Relay_Master_Log_File: mariadb-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 510
              Relay_Log_Space: 827
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1

Running 상태가 두개 모두 yes로 뜬다면 성공이다.

 

 

이제 master DB서버에서 DB를 생성해보자

그럼 자동으로 slave 서버에도 DB가 생성된 것을 볼 수 있다!

이중화가 성공했다.

 

192.168.20.150 서버에도 DB슬레이브 서버를 만들어서

마스터 서버와 연결시켜보자

마스터 서버에서 japan 데이터 베이스를 만들고 슬레이브2 서버에서 확인해보니 잘 작동한다.

 

하지만 보시다시피 이전에 만든 korea 데이터 베이스는 없는걸 볼 수 있는데,

이중화는 이중화 시점부터 동기화하기 시작해

이전 데이터들이 복사되는 것은 아니라는 걸 알아두자

 

 

 

만약 이중화를 삭제하고 싶다면 

stop slave; 후

reset slave; 또는 reset slave all; 을 입력해주자!