MySQL은 전 세계에서 가장 인기 있는 오픈소스 관계형 데이터베이스 중 하나입니다. Drupal, Joomla, Magento, WordPress를 포함하여 전자상거래 웹사이트, 소셜 미디어 및 애플리케이션에서 널리 사용되고 있습니다. 또한 널리 사용되는 Linux-Apache-MySQL-PHP/Perl/Python(LAMP) 웹 애플리케이션 스택의 핵심 부분이며 많은 인기 애플리케이션, 웹사이트, 서비스를 지원합니다. DB-Engines에서 전 세계에서 두 번째로 인기 있는 데이터베이스로 선정했습니다.
Google Cloud의 관리형 관계형 데이터베이스인 MySQL용 Cloud SQL이 운영 비용을 절감하고 효율성을 향상하는 데 어떤 도움이 되는지 알아보세요.
MySQL은 오픈소스 관계형 데이터베이스 관리 시스템입니다. 다른 관계형 데이터베이스와 마찬가지로 MySQL은 행과 열로 구성된 테이블에 데이터를 저장합니다. 사용자는 더 일반적으로 SQL이라고 하는 구조화된 쿼리 언어를 사용하여 데이터를 정의, 조작, 제어, 쿼리할 수 있습니다. MySQL은 오픈소스이므로 25년 넘게 사용자와 긴밀히 협력하여 개발한 다양한 기능이 포함되어 있습니다.
MySQL은 오픈소스이므로 GNU 일반 공중 라이선스 약관에 따라 무료로 제공됩니다. 따라서 누구나 자체적으로 소프트웨어의 소스 코드를 수정할 수 있습니다. 이로 인해 MariaDB 및 Percona Server for MySQL와 같은 데이터베이스의 다른 변형으로 MySQL이 포크되었습니다. 또한 MySQL은 다른 라이선스에 따라 상업적 용도로 사용 가능합니다.
MySQL은 관계형 데이터베이스 관리 시스템(RDBMS)이라는 데이터베이스 카테고리에 속합니다. 관계형 데이터베이스는 데이터가 열과 행의 테이블(또는 '관계') 하나 이상에 저장되는 사전 정의된 관계로 데이터를 구성하는 정보 모음으로, 이를 사용하면 서로 다른 데이터 구조가 어떻게 서로 연관되어 있는지 쉽게 확인하고 이해할 수 있습니다. 관계는 이러한 테이블 간의 상호작용을 기반으로 설정되는 여러 테이블 간의 논리적 연결입니다.
MySQL은 애드거 F. 커드의 논문에 설명된 관계형 모델을 기반으로 하는 상업용 프로그래밍 언어인 SQL의 확장 프로그램으로 개발되었습니다. 다비드 악스마르크, 알란 라르손, 미카엘 비데니우스가 설립한 스웨덴 회사인 MySQL AB는 1995년에 MySQL을 개발하여 출시했습니다. 'MySQL'은 미카엘 비데니우스 딸의 이름인 'My'와 구조적 쿼리 언어(SQL)를 의미하는 'SQL'을 조합한 것입니다. 2008년에 Sun Microsystems에서 MySQL AB를 인수했습니다. 현재 2010년에 Sun Microsystems를 인수한 Oracle Corporation에서 MySQL을 소유하고 있습니다.
MySQL은 원래 C 및 C++ 프로그래밍 언어로 개발되었으며 많은 오픈소스와 독점 운영체제에서 사용할 수 있으므로 수년 간 많은 버전에서 인기를 누려 왔습니다. 데이터베이스의 최신 버전인 MySQL 버전 8.0은 2018년에 출시되었습니다.
MySQL 프로젝트는 더 이상 존재하지 않는 몇 가지 포크와 같은 다양한 이유로 인해 몇 년 동안 여러 차례 포크되었습니다. 나머지 포크된 프로젝트 중에서 가장 많이 사용되는 프로젝트는 MariaDB와 Percona Server for MySQL입니다. MariaDB는 Oracle 인수로 인해 상용화 문제가 발생한 후에도 MySQL이 오픈소스로 유지되도록 MySQL 창립자에 의해 포크되었습니다. Percona Server for MySQL은 MySQL과의 긴밀한 호환성을 유지하려는 또 다른 MySQL 오픈소스 배포판입니다. MySQL 버전과 MySQL 관련 전체 생태계를 자세히 알아보세요.
그래픽 사용자 인터페이스(GUI) 또는 명령줄 인터페이스 도구를 통해 MySQL에 액세스할 수 있습니다.
그래픽 사용자 인터페이스(GUI)
GUI는 명령줄 인터페이스에서 텍스트 기반 명령어를 사용하는 대신 애플리케이션의 쿼리와 개발을 시각적 환경으로 만드는 버튼과 상호작용 위젯으로 구성된 통합 환경을 제공합니다. MySQL 오픈소스 프로젝트와 서드 파티 통합업체에서 다양한 MySQL GUI를 개발했습니다. 그중 가장 널리 사용되는 GUI는 MySQL AB에서 개발한 오픈소스 MySQL Workbench입니다. 잘 알려진 다른 GUI로는 웹 애플리케이션 개발에 널리 사용되는 관리 도구인 phpMyAdmin과 MySQL 외 다른 데이터베이스 관리에 사용할 수 있는 오픈소스 관리 도구인 HeidiSQL이 있습니다.
명령줄
명령줄 도구를 통해서도 MySQL에 액세스할 수 있습니다. MySQL 유틸리티라고도 하는 이러한 도구는 MySQL 배포와 함께 제공되며 MySQL 셸 또는 Percona Toolkit과 같은 기타 명령줄 인터페이스 도구에서 텍스트 명령으로 호출됩니다.
사용자는 오픈소스 코드를 사용하여 MySQL을 수동으로 고유한 물리적 머신에 배포하거나 패키징된 배포 중 하나를 다운로드하여 배포할 수 있습니다. MySQL은 성능을 향상하는 주된 방법으로 수직 확장을 사용하여 단일 인스턴스나 머신에 설치하는 것이 가장 일반적입니다. 그러나 기본 노드 하나와 보조 노드 여러 개가 있는 복제된 구성에 MySQL을 설정할 수 있으며 보조 노드는 인스턴스가 실패하면 기본 노드로 승격될 수 있습니다.
MySQL을 호스팅하는 데 널리 사용되는 또 다른 방법으로는 클라우드 서비스 제공업체(CSP)를 통한 호스팅이 있습니다. 클라우드 서비스 제공업체 환경에 MySQL을 배포하는 방법에는 몇 가지가 있습니다. 첫 번째는 MySQL을 가상 머신에 직접 설치하고 직접 관리하는 것입니다. 다른 하나는 MySQL 관리의 많은 운영적 측면을 처리하여 MySQL을 훨씬 더 쉽게 관리하는 클라우드 서비스 제공업체의 관리형 제품을 사용하는 것입니다. Google Cloud는 Cloud SQL 형식의 관리형 서비스를 제공합니다. MySQL용 Cloud SQL은 Google Cloud에서 MySQL 관계형 데이터베이스를 설정, 유지보수, 관리하는 데 도움이 되는 완전 관리형 데이터베이스 서비스로, 보안, 고가용성, 관측 가능성에 대한 부가 가치 서비스를 제공하여 데이터베이스 관리자의 수고를 줄여주고 조직의 혁신을 지원합니다. MySQL용 Cloud SQL 인스턴스 설정 권장사항에 대한 문서에서 MySQL의 Cloud SQL 인스턴스를 설정하는 방법을 알아보세요. 사용자가 사용할 수 있는 다양한 도구와 옵션을 통해 매우 쉽고 간단하게 온프레미스 MySQL 또는 클라우드 서비스 제공업체의 다른 데이터베이스에서 MySQL용 Cloud SQL로 마이그레이션할 수 있습니다.
MySQL용 Cloud SQL의 완전 관리형 서비스와 자체 관리형 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 스택을 통해 빌드된 다수의 웹 애플리케이션에서 필수적인 요소입니다. 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 애플리케이션은 일반적으로 연중무휴 운영되므로 최소한의 다운타임, 보안, 변하는 니즈에 따른 확장 기능이 필요합니다. MySQL은 배포, 관리, 확장이 쉬우므로 SaaS 애플리케이션 빌드에 널리 사용되는 데이터베이스 옵션으로 부상했습니다. 오픈소스이므로 개발자는 독점 소프트웨어에 대한 라이선스 요금을 지불할 필요 없이 빠르게 시작할 수 있습니다. MySQL 글로벌 커뮤니티는 활동 중이며 추가 기능을 제공하는 플러그인에 기여하고 있습니다.
MySQL은 WordPress 및 Drupal과 같은 콘텐츠 관리 시스템(CMS)에 널리 사용되는 데이터베이스입니다. CMS는 게시물, 페이지, 이미지, 댓글, 카테고리, 태그, 커스텀 필드, 사용자, 기타 설정을 MySQL 데이터베이스에 저장합니다. CMS에는 계정이 매일 수천 개 또는 심지어 수백만 개 있는 경우가 많으므로 MySQL에서 대규모 테이블과 쿼리 여러 개를 한 번에 처리할 수 있습니다. MySQL은 잠재고객 수가 증가할수록 비즈니스 니즈가 충족되도록 수직이나 수평으로 확장할 수 있습니다.
소셜 미디어 애플리케이션의 중요한 측면에서 사용자, 그룹, 댓글과 같은 다양한 데이터 저장소 간의 연결이 필요합니다. 이러한 사용 사례에서는 소셜 미디어 애플리케이션에 관계형 데이터베이스를 우선시하고 MySQL을 가장 선호합니다. 주목할 만한 예시로는 Twitter, Pinterest, LinkedIn이 있습니다.
MySQL용 Cloud SQL이 혁신에 어떤 도움이 되는지 알아보세요. 문서 보기