'mariaDB'에 해당되는 글 2건

  1. 2018.10.08 DB 벤더 별 HA 구성을 비교해보자
  2. 2017.12.27 mariaDB bin log 위치 변경
생계/기타2018. 10. 8. 16:05

장애 시 다운타임을 줄이거나, 또는 zero down time 을 목적으로 각 벤더사들은 

저마다 다른 구성의 DB를 사용한다.


대표적으로 많이 쓰이는 구조들을 정리 및 비교 해보자. 


  • Oracle

     - rac


특징 : 다수의 인스턴스가 하나의 스토리지를 공유.

        다수의 인스턴스 중 한쪽 인스턴스가 장애가 나도 나머지 인스턴스에서 서비스가 지속된다.

        

제약 : 다수의 인스턴스가 하나의 스토리지를 사용하기에 중복작업이 발생하지 않기 위한 overhead 가 필요.



  • MariaDB

     - replication  




   특징 : 2대 이상의 서버로 구성. Master 에서만 R/W 가능 Slave 에서는 Read 만 가능.

   제약 : Slave 에서는 Read 만 가능하므로 Read 부하만 줄여줄수 있다. 

           두대의 장비로 두대 만큼의 성능개선 효과를 볼수가 없다. 

           장애시 아주 짧은 순간이라 할지라도 failover 되는 down time 이 발생한다. 

       

           

    - galera cluster 





  특징 : 최소 3대 이상의 서버로 구성. 서버별 별도의 스토리지. 

          하나의 서버에 이상이 생겨도 다른 서버에서 서비스 지속 가능. 

          무중단 운영 가능. 

  제약 :  각각 서버들이 중복된 DB 를 갖는 구조이기 때문에 스토리지 측면에서 비효율 적임.

           Replication 구조를 asynchronous 라고 하는데 갈레라 클러스터는 다수의 스토리지이기때문에 

           asynchronous 라고 할수 있을것 같지만 synchronous 라고 분류한다. 


  • MSSQL


    - MSCS (Microsoft Cluster Server)



    특징 : MS 서버의 기능인 클러스터링으로 두서버를 묶어서 이중화 하는 기술. 

            한쪽서버가 down 이되면 failover 되어 passive 가 active 가 됨.

            스토리지는 하나의 스토리지를 쓴다.

 

    제약 : 스토리지가 하나인 점에서는 Rac 와 유사하지만 passive 에서는 write 불가하다.

            Master-slave 구조라는 점에서는 Replication 과 유사.



벤더마다 고가용성을 위한 DB 구조의 구현방식이나 용어들이 조금씩 다르다.

그렇지만 공유 스토리지를 사용하는가? 아닌가? multi-master 인가? master-slave? 인가 에 따라 특징을 나눌수있다. 


대개 master-slave 구조에서는 failover 시 down time 이 발생할수 밖에 없고, 

Slave 에서 조회업무는 분산해줄수 있지만 실질적으로 AP 에서 조회만 따로 분리내기가 쉽지않다.

그래서 Slave 의 활용도가 떨어지기 때문에 메인 업무의 DB 구조를 master-slave 로 하는 곳은 많지않다.

mariadb 의 galera cluster 는 무중단 운영이 가능한 멀티마스터 구조를 무료로 사용할 수 있는 것이 강점이다. 

물론 상용에서는 무료로 운영하는데 어려움이 있겠지만..


## 몽고db 추가해보자


반응형
Posted by 돌고래트레이너
카테고리 없음2017. 12. 27. 14:06


MariaDB replication 구성을 하고 운영하던 중 binary log 파일이 계속 쌓여 

파일 시스템이 차게 되었다. 

binary log 를 지우는 방법과 위치를 변경하는 방법을 알아보자. 


●  bin log 삭제 


mysql c;lient 에서 명령어로 지울수 있다. 


mysql -u root -proot123


MariaDB [(none)]> show binary logs;

+--------------------+-----------+

| Log_name           | File_size |

+--------------------+-----------+

| mariadb-bin.000001 |       353 |

| mariadb-bin.000002 |       330 |

+--------------------+-----------+

2 rows in set (0.00 sec)


MariaDB [(none)]> purge master logs to 'mariadb-bin.000002';

Query OK, 0 rows affected (0.01 sec)


MariaDB [(none)]> show binary logs;

+--------------------+-----------+

| Log_name           | File_size |

+--------------------+-----------+

| mariadb-bin.000002 |       330 |

+--------------------+-----------+

1 row in set (0.00 sec)


mariadb-bin.000002 이전까지의 로그들을 삭제한다. 




● MariaDB bin log 위치 변경


1. 설정 변경 ( my.cnf)


-  service mysqld stop


- vi /etc/my.cnf  아래 내용 추가

---------------------------------------------

log_bin=/DATA/binlog/mariadb-bin     ## /DATA/binlog 까지가 경로

 ##  mariadb-bin  는 포맷

binlog_cache_size = 2M

max_binlog_size = 50M

expire_logs_days = 10

---------------------------------------------


2. 폴더 생성 


 cd /DATA

 mkdir binlog


 touch mariadb-bin.index


3. DB 재기동 


[mysql@oracdb binlog]$ service mysqld start

Starting mysqld (via systemctl):  ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===

Authentication is required to manage system services or units.

Authenticating as: root

Password: 

==== AUTHENTICATION COMPLETE ===

[  OK  ]

 

[mysql@oracdb binlog]$ cd /DATA/binlog

[mysql@oracdb binlog]$ ls -l

total 8

-rw-rw----. 1 mysql mysql 330 Dec 26 15:49 mariadb-bin.000001

-rw-rw-r--. 1 mysql mysql  34 Dec 26 15:49 mariadb-bin.index

 


4. Replication  재설정 


@master 


[mysql@oracdb binlog]$ ifconfig

ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 10.10.10.48  netmask 255.255.255.0  broadcast 10.10.10.255

        inet6 fe80::250:56ff:fe01:147  prefixlen 64  scopeid 0x20<link>

        ether 00:50:56:01:01:47  txqueuelen 1000  (Ethernet)

        RX packets 18041  bytes 1460721 (1.3 MiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 13598  bytes 1529832 (1.4 MiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

 

MariaDB [(none)]> show master status;

+--------------------+----------+--------------+------------------+

| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+--------------------+----------+--------------+------------------+

| mariadb-bin.000002 |      330 |              |                  |

+--------------------+----------+--------------+------------------+



@slave


stop slave;



CHANGE MASTER TO MASTER_HOST='10.10.10.48',

MASTER_USER = 'replicant',

MASTER_PASSWORD = 'replicant',

MASTER_PORT=3306,

MASTER_LOG_FILE = 'mariadb-bin.000002',

MASTER_LOG_POS = 330;

 

START SLAVE;

 


5. 서비스 확인 


MariaDB [(none)]> use mysql

Database changed

MariaDB [mysql]> SELECT variable_value

    -> FROM information_schema.global_status

    -> WHERE variable_name='SLAVE_RUNNING';

+----------------+

| variable_value |

+----------------+

| ON             |

+----------------+

1 row in set (0.01 sec)


MariaDB [mysql]> 




끗. 공감구걸



반응형
Posted by 돌고래트레이너