오라클 클라우드 MySQL Database Service (5) – MDS HA 기능 – Oracle Cloud

Last Updated on 4월 28, 2021 by 태랑(정현호)


이번 포스팅은 MDS 에서 업데이트된 고가용성(HA) 기능에 대해서 확인 해보도록 하겠습니다.

이전 포스팅은 아래 링크를 확인 하시면 됩니다.

 




1.  Release to MDS HA

2021년 3월 31일 에 MySQL Database Service(MDS) 의 HA 의 기능이 추가 되었습니다.

단독(Standalone) 서버, 복제(Channel) , Heatwave 등은 지원 하고 있었고 이번에 고가용성(HA) 기능이 지원이 되었고 데이터가 그룹 복제로 수행되며, 3개의 Fault Domains 으로 이루어집니다.




2. MDS HA 생성


2-1 시스템 생성

MDS -> 생성한 구획을 지정 후 -> MySQL DB 시스템 생성 을 선택 합니다.





2-2 MDS 인스턴스의 이름 지정

사용할 MDS 인스턴스의 이름을 지정해야 합니다.





2-3 고가용성 선택 및 계정 정보

인스턴스 타입은 고가용성(HA)를 선택 하고 관리자 계정의 아이디와 패스워드를 지정 합니다.(master 라는 아이디는 포스팅에서의 예시 입니다)





2-4 네트워크 및 가용성 영역

네트워크 설정 및 가용성 도메인등을 선택 합니다. 참고로 MDS 는 외부에서 접속이 불가하고 내부에서만 접속이 가능합니다.





2-5 하드웨어 및 백업

하드웨어 구성 및 백업 구성을 선택 합니다. 




참고로 고가용성(HA) 타입의 MDS 에서 선택 할 수 있는 사양 입니다.





2-6 Endpoint 호스트명

가장 하단에 있는 고급 옵션 -> Networking  으로 이동 합니다. 옵션이지만 중요한 점은 호스트 이름 을 지정하지 않으면 Endpoint 이 설정되지 않습니다 그래서 아래와 같이 호스트 이름을 지정을 하는 것이 좋습니다.

호스트 이름까지 지정 하였다면 아래 "생성" 을 클릭하여 MDS 인스턴스를 생성 합니다.





생성이 진행되는 과정이며 CPU 와 메모리 , 저장영역 에 보면 고가용성은 3개의 인스턴스가 생성되기 때문에 DB시스템 구성 현황은 X3 이 되게 됩니다.

  • CPU1 x 3 = 합계 3
  • 메모리 인스턴스당 8G x 3 = 총 24GB
  • 저장영역 50GB x 3 = 150GB




인스턴스가 완료되면 하단의 Endpoint(끝점) 에서 Endpoint 도메인 정보와 IP 정보를 확인 할 수 있습니다.






3. 접속

MDS HA 도 일반 MDS 와 같이 Endpoint 나 IP 를 이용하여 접속을 하면 되며 MDS HA에서 사용되는 IP 는 Failover(Switchover) 가 되어도 계속 사용이 가능한 VIP 형태 입니다. 변경이 되지 않는 Endpoint 도메인 처럼 사용 가능한 VIP 입니다.

베스천호스트에서 MDS 에 접속하기 위해서 네트워크 보안그룹에서 수신 규칙을 만들어줘야 합니다. 관련 된 정보는 아래의 이전 포스팅에서 확인 하시면 됩니다.


수신규칙 이 완료 되었다면 아래와 같이 베스천 호스트에서 mysql 이나 mysqlsh 등을 이용하여 MDS로 접속 할 수 있습니다.

ubuntu@mds-bastion:~$ mysqlsh -u master -p -h MDS-HA-1.xxxx.vcn.oraclevcn.com
Cannot set LC_ALL to locale en_US.UTF-8: No such file or directory
Please provide the password for 'master@MDS-HA-1.xxxx.vcn.oraclevcn.com': ************
Save password for 'master@MDS-HA-1.xxxx.vcn.oraclevcn.com'? [Y]es/[N]o/Ne[v]er (default No): Y
MySQL Shell 8.0.23

Copyright (c) 2016, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.

Type '\help' or '\?' for help; '\quit' to exit.
Creating a session to 'master@MDS-HA-1.xxxx.vcn.oraclevcn.com'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 49 (X protocol)
Server version: 8.0.23-u2-cloud MySQL Enterprise - Cloud
No default schema selected; type \use <schema> to set one.
 MySQL  MDS-HA-1.xxxx.vcn.oraclevcn.com:33060+ ssl  JS > \sql
Switching to SQL mode... Commands end with ;
 MySQL  MDS-HA-1.xxxx.vcn.oraclevcn.com:33060+ ssl  SQL > 





4. Switch Over(전환)

MDS 인스턴스를 다른 Secondary(Standby) 인스턴스로 이동하는 방법은 Master 인스턴스의 장애에 의한 자동 Fail-over 나 직접적으로 전환(Switch-over) 기능을 이용하는 것 입니다.


4-1 전환 선택

전환은 MDS 인스턴스 의 리스트 항목에서 오른쪽 점3개 메뉴 -> 전환 을 선택 하여 진행 할 수 있습니다.





4-2 Fault Domain 선택

전환 시 남은 2개의 FD 중 1개를 선택 을 해야 하고 선택 후 하단의 전환을 클릭하면 다른 인스턴스로 Master Instance 가 전환되게 됩니다.





4-3 상태 업데이트

전환을 선택하면 인스턴스의 상태가 "업데이트 중" 으로 변경 됩니다. 테스트 하였을 때 콘솔 메뉴상에서는 오랫동안 업데이트 중 으로 표기되었지만 실제 MDS 인스턴스의 접속은 짧은 시간의 접속 끊김(순단) 정도 였고 바로 다른 인스턴스로 접속이 가능하였습니다.
(콘솔 에서의 상태 값의 반영이 실제 보다 느림)




• 전환 시 짧은 시간 순단은 발생함

 MySQL  MDS-HA-1.xxxx.vcn.oraclevcn.com:33060+ ssl  SQL > select user,host from mysql.user;
ERROR: 2006: MySQL server has gone away
The global session got disconnected..
Attempting to reconnect to 'mysqlx://master@MDS-HA-1.xxxx.vcn.oraclevcn.com:33060'..
The global session was successfully reconnected.
 MySQL  MDS-HA-1.xxxx.vcn.oraclevcn.com:33060+ ssl  SQL > select user,host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| administrator    | %         |
| master           | %         |
| ocirpl           | %         |
| ociadmin         | 127.0.0.1 |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
+------------------+-----------+




5. HA 제약사항

MDS HA 에는 아래와 같은 제약사항이 있습니다.

• Downtime during MySQL instance upgrades. Each MySQL instance is upgraded separately.
• It is not possible to enable HeatWave clusters on a DB System with High Availability.
• It is not possible to enable Inbound Replication on a DB System with High Availability.
• It is not possible to restore a backup from a standalone DB System to a DB System with High Availability.
• It is not possible to access the secondary instances directly, using MySQL Shell, or any other such client.
• It is not possible to enable High Availability on a running DB System.
• It is not possible to edit the configuration of a DB System with High Availability.

Ref. 아래 링크에서 Current Limitations 항목 참조


이 중에서 가장 큰 제약사항이라고 생각되는 부분은 secondary instance 에 대해서 직접 적으로 접속 할수 없다는 점 입니다. MDS HA 를 생성시 총 3개의 인스턴스가 생성되지만 2개에 대해서는 Reader Node 형태로 사용할 수 없다는 의미 입니다. 그래서 2개의 인스턴스(서버)는 장애 발생에 의한 Fail-over 나 전환시에만 사용이 가능하게 됩니다.

그외 제약사항도 사용에 대해서 고민이 되게 하는 부분이 몇가지가 있긴 합니다.


MDS 에서 가장 대표 기능인 HeatWave 를 사용할수 없습니다.





MDS HA 는 Inbound Replication 이 불가능 합니다(Slave 형태는 불가능) 이 부분은 온프레미스 의 MySQL을 클라우드 MDS 로 전환하기 위해서 Replication 을 설정하여 동기화를 진행 후 클라우드로 전환 하는 형태로 사용은 불가능 함을 의미 합니다. 다만 Master 는 가능 합니다(다음에서 내용이 있음)




테스트 이전에는 AWS 의 Aurora Cluster 와 같이 Write 인스턴스, Reader 인스턴스 가 각각 존재하고 각각 접속을 위한 Endpoint Domain 이 지정되어 있어서 고가용성(자동 Failover + Switchover) 사용 및 Replica 인스턴스에서는 읽기 전용으로 사용 가능할 것으로 예상하였습니다.


< AWS Aurora Cluster>


MDS HA 의 제약사항과 테스트 과정에서 AWS Aurora Cluster 와 같은 형태는 아닌 것으로 확인 하였습니다.




6. 복제 설정

MDS HA 를 Master 로 사용하여 Replication 을 구성할 수는 있습니다. MDS HA 를 Master 로 하여 Replication 을 설정하는 것은 MDS Replication 과 동일 하며 아래의 포스팅에서 내용을 확인하시면 됩니다.



고가용성(HA)가 아닌 일반 MDS 인스턴스를 하나 생성하여 진행하였으며 MDS HA 의 백업 본을 통해서 신규 인스턴스를 생성하여 진행해도 됩니다.

포스팅에서는 MDS-Single-1 이라는 MDS 를 별도로 생성하였습니다.





그리고 채널(복제)을 설정하였고 Master(Source) MDS HA 를 지정하여 설정을 하였습니다.





• Slave 에서 복제 상태 확인

*************************** 1. row ***************************
             Replica_IO_State: Waiting for master to send event
                  Source_Host: xxxxxxxxxxxx
                  Source_User: master
                  Source_Port: 3306
                Connect_Retry: 60
              Source_Log_File: binary-log.000021
          Read_Source_Log_Pos: 196
               Relay_Log_File: relay-log-replication_channel.000004
                Relay_Log_Pos: 413
        Relay_Source_Log_File: binary-log.000021
           Replica_IO_Running: Yes
          Replica_SQL_Running: Yes
<중략>
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Source_Log_Pos: 196
              Relay_Log_Space: 941
              Until_Condition: None
<중략>
  Replicate_Ignore_Server_Ids: 
             Source_Server_Id: 1425877596
                  Source_UUID: 04e3f7ff-99f8-11eb-aa60-0200170102a0
             Source_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
    Replica_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Source_Retry_Count: 0
<중략>
           Retrieved_Gtid_Set: 26706250-25c3-4c4d-80ef-0d9be203242a:1-3
            Executed_Gtid_Set: 26706250-25c3-4c4d-80ef-0d9be203242a:1-3
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: replication_channel
           Source_TLS_Version: TLSv1.2,TLSv1.3
       Source_public_key_path: 
        Get_Source_public_key: 1
            Network_Namespace: mysql




7. conclusion

MDS HA 는 일반적인 MDS Replication(채널 구성) 상황에서 Master 인스턴스의 장애 발생시  Fail-Over 등의 기능 지원으로 가용성을 높이기 위해 나온 서비스 입니다.

다만 많은 제약사항이 존재하고 무엇보다 Secondary 인스턴스를 사용할 수 없다는 부분이 가장 큰 제약사항으로 생각이 되고 조금 더 유용하게 사용 되기 위해서는 몇 가지 개선이 필요할 것 같다고 생각이 되며 더 좋은 방향으로 개선 되기를 기대하겠습니다.



관련된 다른 글

 

 

 

 

 


 

답글 남기기