MySQL이란 무엇인가요?

MySQL은 전 세계에서 가장 인기 있는 오픈소스 관계형 데이터베이스 중 하나입니다. Drupal, Joomla, Magento, WordPress 등 전자상거래 웹사이트, 소셜 미디어 및 애플리케이션에서 널리 사용되어 이러한 인기를 얻었습니다. 또한 널리 사용되는 Linux-Apache-MySQL-PHP/Perl/Python(LAMP) 웹 애플리케이션 스택의 핵심 부분이며 많은 인기 애플리케이션, 웹사이트, 서비스를 지원합니다. DB-Engines에서 전 세계에서 두 번째로 인기 있는 데이터베이스로 선정되었습니다.

Google Cloud의 관리형 관계형 데이터베이스인 MySQL용 Cloud SQL이 어떻게 운영 비용을 절감하고 효율성을 개선하는지 알아보세요.

MySQL 정의

MySQL은 오픈소스 관계형 데이터베이스 관리 시스템입니다. 다른 관계형 데이터베이스와 마찬가지로 MySQL은 행과 열로 구성된 테이블에 데이터를 저장합니다. 사용자는 더 일반적으로 SQL이라고 하는 구조화된 쿼리 언어를 사용하여 데이터를 정의, 조작, 제어, 쿼리할 수 있습니다. MySQL은 오픈소스이므로 25년 이상 사용자와 긴밀히 협력하여 개발한 여러 기능이 포함되어 있습니다.

오픈소스 MySQL 소프트웨어

MySQL은 오픈소스이므로 GNU 일반 공중 라이선스 약관에 따라 무료로 사용할 수 있습니다. 따라서 누구나 자체적으로 소프트웨어의 소스 코드를 수정할 수 있습니다. 이로 인해 MariaDBMySQL용 Percona Server와 같은 데이터베이스의 다른 변형으로 MySQL이 포크되었습니다. MySQL은 다른 라이선스에 따라 상업적 용도로도 사용할 수 있습니다.

관계형 데이터베이스

MySQL은 관계형 데이터베이스 관리 시스템(RDBMS)이라는 데이터베이스 카테고리에 속합니다. 관계형 데이터베이스는 데이터가 하나 이상의 열과 행의 테이블(또는 '관계')에 저장되어 서로 다른 데이터 구조가 어떻게 관련되어 있는지 쉽게 파악하고 이해할 수 있도록 사전 정의된 관계로 데이터를 구성하는 정보 모음입니다. 관계는 이러한 테이블 간의 상호작용을 기반으로 설정되는 여러 테이블 간의 논리적 연결입니다.

연혁

MySQL은 Edgar F.Codd의 논문에 설명된 관계형 모델을 기반으로 하는 상업용 프로그래밍 언어인 SQL의 확장 프로그램으로 개발되었습니다. David Axmark, Allan Larsson, Michael Widenius가 설립한 스웨덴 회사인 MySQL AB는 1995년에 MySQL을 개발하여 출시했습니다. 'MySQL'은 Michael Wildenius의 딸 이름인 'My'와 'SQL'(구조적 쿼리 언어)을 조합한 것입니다. Sun Microsystems는 2008년에 MySQL AB를 인수했습니다. MySQL은 2010년에 Sun Microsystems를 인수한 후 현재 Oracle Corporation이 소유하고 있습니다.

MySQL은 원래 C 및 C++ 프로그래밍 언어로 개발되었으며 많은 오픈소스 및 독점 운영체제에서 사용할 수 있기 때문에 수년 동안 많은 버전에서 인기를 누려 왔습니다. 데이터베이스의 최신 버전인 MySQL 버전 8.0은 2018년에 출시되었습니다.

포크

MySQL 프로젝트는 더 이상 존재하지 않는 몇 가지 포크와 같은 다양한 이유로 인해 몇 년 동안 여러 차례 포크되었습니다. 나머지 포크된 프로젝트 중에서 가장 많이 사용되는 프로젝트는 MariaDB와 MySQL용 Percona Server입니다. MariaDB는 Oracle 인수로 인해 상용화 문제가 발생한 후에도 MySQL이 오픈소스로 유지되도록 MySQL의 창립자에 의해 포크되었습니다. MySQL용 Percona Server는 MySQL과의 긴밀한 호환성을 유지하려는 또 다른 MySQL 오픈소스 배포판입니다. MySQL 버전과 MySQL 관련 전체 생태계에 대해 자세히 알아보세요.

사용자 인터페이스

MySQL은 그래픽 사용자 인터페이스(GUI) 또는 명령줄 인터페이스 도구를 통해 액세스할 수 있습니다.

그래픽 사용자 인터페이스(GUI)

GUI는 명령줄 인터페이스에서 텍스트 기반 명령어를 사용하는 대신 애플리케이션의 쿼리 및 개발을 시각적 환경으로 만드는 버튼과 상호작용 위젯으로 구성된 통합 환경을 제공합니다. MySQL 오픈소스 프로젝트와 타사 통합업체에서 개발한 다양한 MySQL GUI가 있습니다. 그중 가장 인기 있는 것 중 하나로 MySQL AB가 개발한 오픈소스 MySQL Workbench도 있습니다. 잘 알려진 다른 GUI로는 웹 애플리케이션 개발에 많이 사용되는 관리 도구인 phpMyAdmin과 MySQL 외 다른 데이터베이스 관리에 사용할 수 있는 오픈소스 관리 도구인 HeidiSQL이 있습니다.

명령줄

명령줄 도구를 통해서도 MySQL에 액세스할 수 있습니다. MySQL 유틸리티라고도 하는 이러한 도구들은 MySQL 배포와 함께 제공되며 MySQL 셸 또는 Percona Toolkit과 같은 기타 명령줄 인터페이스 도구에서 텍스트 명령으로 호출됩니다.

MySQL 배포

사용자는 오픈소스 코드를 사용하여 MySQL을 자체 물리적 머신에 수동으로 배포하거나 패키징된 배포 중 하나를 다운로드하여 배포할 수 있습니다. MySQL은 성능을 향상하는 주된 방법으로 수직 확장을 사용하여 단일 인스턴스 또는 머신에 설치하는 것이 가장 일반적입니다. 그러나 기본 노드 1개와 보조 노드 여러 개가 있는 복제된 구성에서 MySQL을 설정할 수 있으며, 이 경우 인스턴스 장애가 발생할 경우 기본 노드로 승격될 수 있습니다.

MySQL을 호스팅하는 또 다른 인기 있는 방법으로는 클라우드 서비스 제공업체(CSP)를 통한 호스팅이 있습니다. 클라우드 서비스 제공업체의 환경에 MySQL을 배포하는 방법에는 몇 가지가 있습니다. 첫 번째는 가상 머신에 MySQL을 직접 설치하고 자체 관리하는 것입니다. 다른 하나는 MySQL 관리의 많은 운영적 측면을 처리하여 MySQL을 훨씬 더 쉽게 관리하는 클라우드 서비스 제공업체의 관리형 제품을 사용하는 것입니다. Google Cloud는 Cloud SQL 형식의 관리형 서비스를 제공합니다. MySQL용 Cloud SQLGoogle Cloud에서 MySQL 관계형 데이터베이스를 설정, 유지, 관리하는 데 도움이 되는 완전 관리형 데이터베이스 서비스로 보안, 고가용성, 관측 가능성에 대한 부가 가치 서비스를 제공하여 데이터베이스 관리자의 수고를 덜고 조직의 혁신을 지원합니다. 이 문서에서 MySQL용 Cloud SQL 인스턴스 설정 권장사항에 따라 MySQL의 Cloud SQL 인스턴스를 설정하는 방법을 알아보세요. 온프레미스 MySQL 또는 클라우드 서비스 제공업체의 다른 데이터베이스에서 MySQL용 Cloud SQL로 마이그레이션하는 방법은 매우 쉽고 간단하며 사용자를 위한 다양한 도구 및 옵션이 있습니다.

MySQL용 Cloud SQL의 완전 관리형 서비스와 자체 관리형 MySQL의 장점과 차이점을 알아보려면 MySQL 호스팅 옵션을 참조하세요.

MySQL의 이점

MySQL은 빠르고 안정적이며 확장 가능하며 사용하기 쉽습니다. MySQL은 데스크톱 또는 노트북에서 다른 애플리케이션, 웹 서버 등과 함께 원활하게 실행할 수 있으므로 신경을 많이 쓰지 않아도 됩니다. 전체 머신을 MySQL 전용으로 사용하는 경우, 사용 가능한 모든 메모리, CPU 전원, I/O 용량을 활용하도록 설정을 조정할 수 있습니다. 또한 MySQL은 서로 연결된 머신 클러스터로 수직 확장할 수 있습니다.

MySQL을 사용하여 데이터를 관리하고 저장할 때 다음과 같은 여러 가지 이점이 있습니다.

고가용성

MySQL의 고가용성(HA)은 실패 없이 오랜 시간 동안 작동할 수 있는 데이터베이스 엔진의 기능을 의미합니다. MySQL의 HA는 설정이 매우 복잡할 수 있으며 각 사용자의 특정 가용성 요구사항과 MySQL 배포 방식에 따라 달라집니다. MySQL에서 HA를 설정하려면 사용자는 데이터 복제, 장애 감지, 장애 조치, 장애 복구 메커니즘, 장애 조치 후 데이터베이스 트래픽을 보조 인스턴스로 리디렉션해야 합니다. MySQL용 Cloud SQL을 사용하면 고가용성을 쉽고 간편하게 처리할 수 있습니다. Google Compute Engine의 MySQL 고가용성 또는 MySQL용 Cloud SQL의 완전 관리형 고가용성 환경에 대해 자세히 알아보세요.

보안

MySQL 보안의 고려사항은 매우 다양한 요소에 걸쳐 있을 수 있습니다. 그중 몇 가지는 데이터 중복 메커니즘과 일반적인 보안 프로세스(예: 비밀번호 및 권한, 액세스 제어, 네트워크 보안)를 통해 데이터를 손상으로부터 보호하는 등 데이터 보호와 관련이 있습니다. Google Cloud의 완전 관리형 MySQL 서비스인 MySQL용 Cloud SQL의 보안에 대해 자세히 알아보세요.

백업 및 복원

MySQL은 타사 도구를 비롯한 여러 메커니즘을 통해 데이터의 백업 및 복구를 지원합니다. MySQL을 백업하고 복원하는 몇 가지 방법은 mysqldump 유틸리티, 바이너리 로그를 사용한 증분 백업 및 복제를 사용하는 것입니다. MySQL용 Cloud SQL은 자동 또는 주문형 백업을 허용하는 자체 백업 및 복원 기능을 제공합니다. 이 내용에 관해 자세히 알아볼 수 있습니다.

유연성

전체 데이터베이스 구조를 변경하거나 기존 애플리케이션에 영향을 주지 않고 필요할 때마다 간편하게 테이블, 관계를 추가, 업데이트 또는 삭제하고 데이터를 변경할 수 있습니다.

사용 편의성

SQL을 사용하여 복잡한 쿼리를 쉽게 실행할 수 있으므로 초보 사용자가 데이터베이스와 직관적으로 상호작용할 수 있습니다.

성능

성능 최적화는 모든 데이터베이스 관리에서 중요한 측면입니다. MySQL을 사용하면 다양한 기능과 조정 옵션을 제공하여 고성능 애플리케이션을 쉽게 개발할 수 있습니다. 이러한 기능에 대한 자세한 내용은 MySQL의 성능 최적화 팁을 참조하세요. 쿼리 조정에 대한 다른 문서에서는 성능에 대한 구체적인 권장사항도 제공합니다.

MySQL은 오류, 실패 또는 기타 잠재적인 문제에 관계없이 데이터 유효성을 보장하는 ACID(원자성, 일관성, 격리, 내구성) 속성을 지원합니다.

사용 사례

MySQL은 다양한 용도로 사용할 수 있으므로 다양한 사용 사례에 활용할 수 있습니다. 자세한 내용은 다음과 같습니다.

웹 애플리케이션

MySQL은 현재 오픈소스 LAMP Stack을 사용하여 빌드된 많은 웹 애플리케이션에서 필수적인 요소입니다. LAMP에는 Linux가 운영체제로, Apache가 웹 서버로, MySQL이 데이터베이스로, PHP, Python 또는 Perl이 프로그래밍 언어로 포함되어 있습니다. LAMP는 개발자가 MySQL과 같은 데이터베이스에서 최신 정보를 가져와야 하는 동적 웹 애플리케이션을 빌드하는 데 도움이 됩니다. 이 정보에는 사용자 계정, 사용자 세부정보, 제품 이름, 고객 기록, 판매 등이 포함될 수 있습니다. 사용자는 SQL을 사용하여 데이터베이스에 저장된 정보에 쉽게 액세스하고 조작할 수 있습니다. 자세한 내용은 LAMP웹 애플리케이션을 빌드하는 데 LAMP를 사용하는 방법을 참고하세요.

온라인 트랜잭션 처리

오늘날 많은 애플리케이션에는 많은 사람들의 많은 데이터베이스 트랜잭션을 신속하게 처리할 수 있는 MySQL과 같은 데이터베이스가 필요합니다. MySQL과 같은 OLTP 데이터베이스는 금융 거래, 여행 예약, 기록 보관 등 많은 일상적인 웹 트랜잭션의 기반입니다. 온라인 트랜잭션 처리 사용 사례를 지원하기 위해 MySQL은 ACID 원칙, XML 및 JSON 지원, 저장 절차, 클러스터링, 파티션 나누기를 준수합니다. 또한 다양한 스토리지 엔진 중에서 선택할 수 있는 옵션을 제공하므로 다양한 테이블 유형의 데이터를 유연하게 통합할 수 있습니다.

전자상거래

MySQL은 사기 활동을 방지하기 위해 사용자, 소비자 정보, 재무 데이터를 관리하고 추세를 분석해야 하는 전자상거래 애플리케이션에 널리 사용되는 데이터베이스입니다. MySQL과 같은 관계형 데이터베이스를 사용하여 정보를 테이블(제품, 고객, 주문)으로 구성하고 필요에 따라 테이블을 추가할 수 있습니다. Airbnb, Uber, Netflix, Booking.com, Spotify, eBay 등 세계 최대 규모의 여러 조직은 MySQL을 사용하여 전자상거래 애플리케이션을 제공하고 있습니다. MySQL을 하이브리드 배포에 배포하여 전자상거래 사용 사례를 완전히 지원할 수도 있습니다. MySQL은 구조화된 데이터의 경우 관계형 데이터베이스로, 제품 세부정보나 마케팅 정보와 같은 구조화되지 않은 데이터의 경우 비관계형 데이터베이스로 사용할 수 있습니다.

SaaS 애플리케이션

SaaS 애플리케이션은 일반적으로 연중무휴 24시간 운영되므로 최소한의 다운타임, 보안, 변하는 요구사항에 따른 확장 기능이 필요합니다. MySQL은 배포, 관리, 확장이 용이한 SaaS 애플리케이션 빌드에 널리 사용되는 데이터베이스 옵션으로 부상했습니다. 오픈소스이기 때문에 독점 소프트웨어에 대한 라이선스 요금을 지불할 필요 없이 개발자가 빠르게 시작할 수 있습니다. MySQL 글로벌 커뮤니티는 활발히 활동하며 추가 기능을 제공하는 플러그인에 기여해 왔습니다.

콘텐츠 관리

MySQL은 WordPress, Drupal과 같은 콘텐츠 관리 시스템(CMS)에 널리 사용되는 데이터베이스입니다. CMS는 게시물, 페이지, 이미지, 댓글, 카테고리, 태그, 커스텀 필드, 사용자, 기타 설정을 MySQL 데이터베이스에 저장합니다. CMS에는 매일 수천 개 또는 수백만 개의 계정이 있는 경우가 많으므로 MySQL은 대규모 테이블과 여러 쿼리를 한 번에 처리할 수 있습니다. MySQL은 잠재고객의 규모가 커질수록 비즈니스 요구에 맞게 수직 또는 수평으로 확장할 수 있습니다.

소셜 미디어

소셜 미디어 애플리케이션의 중요한 측면에서 사용자, 그룹, 댓글과 같은 다양한 데이터 스토어 간의 연결이 필요합니다. 이러한 사용 사례에서는 소셜 미디어 애플리케이션에 관계형 데이터베이스를 우선시하고, MySQL을 가장 선호합니다. 주목할 만한 예로는 Twitter, Pinterest, LinkedIn이 있습니다.

MySQL을 사용할 준비가 되셨나요?

Google Cloud는 MySQL의 완전 관리형 서비스인 MySQL용 Cloud SQL을 제공합니다.
Cloud SQL 알아보기

MySQL용 Cloud SQL이 혁신에 어떤 도움이 되는지 알아보세요. 문서 보기

Google Cloud는 온프레미스 데이터 센터 사용 중지부터 SaaS 애플리케이션 실행, 핵심 비즈니스 시스템 마이그레이션에 이르기까지 비즈니스 니즈에 맞게 설계된 관리형 MySQL 데이터베이스를 제공합니다.