3장. MySQL 5.x 설치와 정보 MySQL의 특징 MySQL 설치 MySQL의 데이터베이스 관리 툴 2018-11-16 쉽게 배우는 MySQL 5.x
3.1 MySQL의 특징 누구나 쉽게 설치하고 사용할 수 있다. 작고 빠르다 MySQL 서버는 다른 DBMS에 비해서 상당히 작고 빠르다. 오라클이나 MS-SQL보다 기능이 적은 것이 단점이지만, 단순한 쿼리를 사용하는 경우에는 상당히 빠르다. 누구나 쉽게 설치하고 사용할 수 있다. MySQL 서버는 다양한 OS를 지원하기 때문에, 누구나 쉽게 설치하고 따라 할 수 있다. 윈도우, 리눅스, 솔라리스, MacOS, HP-UX, AIX등 거의 모든 OS에 설치할 수 있고 95% 이상 호환되기 때문에, OS 전환이 어렵지 않다. 개발 속도가 빠르다. MySQL은 GPL(General Public License) 라이센스로 Open Source이기 때문에, 전 세계 개발자 누구나 참여할 수 있다. C 언어와 C++ 로 구성되어 있고, C 언어와 C++를 사용하여, 새로운 버전의 DBMS를 만들어 낼 수 있는 것이다. 물론 소스는 개발 후에도 재 배포해야 한다. 2018-11-16 쉽게 배우는 MySQL 5.x
3.2 MySQL 설치 MySQL 설치 전 점검사항 ① MySQL 얻어오기 - www.mysql.com에서는 각각의 OS에 맞는 다양한 설치버전을 제공 - http://dev.mysql.com/downloads/mysql/5.0.html 이 페이지를 통해 미러 사이트에서 다운로드 - Windows x86 플랫폼에서는 mysql-5.0.45-win32 버전이 릴리즈 버전 개체 집합 : 개체 어커런스(인스턴스)의 모임 우측의 MySQL 5.0 Database Server-Community Edition을 선택하여 다운로드를 시작한다. 2018-11-16 쉽게 배우는 MySQL 5.x
-MySQL 5.x는 현재 가장 안정화된 릴리즈 시리즈이다. -새로운 버전은 오류 해결(bug fix)문제에 관련해서만 출시되고 있다. ③ MySQL의 명명 계획(naming scheme) -MySQL의 이름은 세 개의 숫자와 하나의 접미사로 이루어진다. -mysql-5.0.12-beta. 릴리즈 내부에 포함된 숫자는 다음과 같이 해석된다. ∙ 처음 숫자(5)는 주요 버전을 의미하며 파일의 포맷을 나타낸다. ∙ 두 번째 숫자(0)는 릴리즈 레벨이다. 기능이 추가될 때 사용 된다. ∙ 세 번째 숫자(12)는 릴리즈 시리즈에 있는 버전 번호이다. 2018-11-16 쉽게 배우는 MySQL 5.x
버전의 안정성을 나타내는 접미사를 포함 ⋅알파(alpha) -전체적으로 테스트를 진행하지 않은 새로운 기능이 포함된 것 -알려진 오류는 뉴스 섹션에 서류로 정리된다. -Appendix D, MySQL Change History를 참조할 것. -대부분의 알파 릴리즈는 새로운 명령어와 확장 기능을 구현 -MySQL AB에서는 이 릴리즈를 발표하기 전에 테스트를 진행 ⋅베타(beta) -기능과 완성(feature-complete)이 이루어진 릴리즈를 의미 -모든 새로운 코드는 테스트를 마쳤음을 의미 -주요 기능들은 새롭게 추가되지는 않는다. -새로운 기능을 추가할 계획이 없는 경우에 알파에서 베타로 버전을 변경 ⋅알씨(rc) : 릴리즈 후보 -일정 기간 동안 아무런 문제없이 잘 구동되는 베타 버전을 의미 -단지 작은 부분을 해결한 것만 추가(이전에는 감마(gamma)릴리즈로 사용) ⋅접미사가 없다면 : “General Availability” (GA)릴리즈 판 -일정 기간 동안, 치명적인 반복 오류가 보고되지 않은 버전 -단지 치명적 오류 해결(bugfixes)만 적용된다. -제품이 안정함 2018-11-16 쉽게 배우는 MySQL 5.x
윈도우 x86 플랫폼 3가지 배포판 형식 ⋅Windows Essentials (x86) : The Essentials Package -윈도우에 MySQL을 설치하는데 필요한 최소의 파일들로 구성 마법사를 가짐 -임베디드 서버 또는 벤치마크 슈트와 같은 선택적인 요소들은 없다. -확장자가 msi인 형식의 파일이 다운로드 -마이크로소프트사의 표준 설치파일이며, Windows installer로 설치 ⋅Windows (x86) : The Complete Package -구성 마법사를 포함해서 MySQL을 설치하는데 필요한 모든 파일들을 가짐 -임베디드 서버 및 벤치마크 슈트 등이 포함 -확장자가 zip인 압축파일 형태로 제공 ⋅Without installer (unzip in C:\) : The No install Archive -구성 마법사를 제외한 모든 설치 파일들이 포함 -자동 설치기가 포함되지 않으며, 따라서 설치 및 시스템 구성을 수동으로 -확장자가 zip인 압축파일 형태로 제공되며, 압축을 풀고 복사해서 사용 2018-11-16 쉽게 배우는 MySQL 5.x
Windows XP에 MySQL 설치하기 -The Complete Package를 가지고 설치 과정을 단계별로 설명 -mysql-5.0.20-win32.zip 파일을 압축을 해제하면, setup.exe 파일이 생성 -setup.exe파일을 실행, 환영메시지와 Setup Wizard가 시작되어 설치를 진행 -[ NEXT > ]를 클릭하고 설치를 진행 2018-11-16 쉽게 배우는 MySQL 5.x
∙Custom 설치 타입 : 설치하고자 하는 패키지와 사용하고자 하는 설치 경로에 대해 전적으로 제어를 할 수 있게 한다. 설치타입을 선택하는 화면 ∙Typical 설치 타입 : MySQL 서버, mysql 명령어-라인 클라이언트, 그리고 명령어-라인 유틸리티를 설치한다. 명령어-라인 클라이언트 및 유틸리티는 mysqldump, myisamchk, 및 기타 다른 툴을 가지고 있으며 여러분이 MySQL서버를 관리하는데 도움을 준다. ∙Complete 설치 타입 : 설치 패키지에 포함되어 있는 모든 요소들을 설치한다. 전체 설치 패키지는 임베디드 서버 라이브러리, 벤치마크 슈트, 지원 스크립트, 및 서류와 같은 것들은 모두 갖고 있다. ∙Custom 설치 타입 : 설치하고자 하는 패키지와 사용하고자 하는 설치 경로에 대해 전적으로 제어를 할 수 있게 한다. 2018-11-16 쉽게 배우는 MySQL 5.x
-Typical 타입 : 설치 경로(C:\ProgramFiles\MySQL\ MySQL Server 5.0\) 특별히 변경할 사항이 없으므로, [ Install ] 버튼을 눌러 설치를 진행 -Custom 타입 : 설치경로를 간소화 (C:\MySQL 폴더를 설치경로로 지정) 가능 [ Change... ] 버튼을 클릭하여 설치경로를 변경 Typical 타입 설치 Install 클릭 Custom 타입 설치 Change 클릭 2018-11-16 쉽게 배우는 MySQL 5.x
MySQL 설치타입 및 설치경로 확인 (Custom) MySQL Custom 설치타입에서 설치경로 변경, [ OK ]를 클릭하여 Typical에서와 같이 설치 타입 및 경로를 확인하고, 설치를 진행 MySQL 설치타입 및 설치경로 확인 (Custom) 2018-11-16 쉽게 배우는 MySQL 5.x
-MySQL.com 사이트 계정 확인을 위한 화면으로 전환된다. -mysql.com에 계정이 있으면 계정과 비밀번호를 입력 -계정없는 사용자는 Skip Sign-Up 라디오 버튼을 선택하고 Next 버튼 클릭 2018-11-16 쉽게 배우는 MySQL 5.x
MySQL이 설치 완료 되면 Finish 버튼 클릭 Next 버튼 클릭하여 구동 시작 2018-11-16 쉽게 배우는 MySQL 5.x
MySQL 마법사가 서비스 옵션 및 보안 옵션을 제외한 모든 구성을 자동 설정 -표준 구성(Standard Configuration) 옵션은 서버 구성에 대해 많은 선택을 하지 않고 빠른 시간에 MySQL을 설치하고자 하는 사용자를 위한 것 MySQL 마법사가 서비스 옵션 및 보안 옵션을 제외한 모든 구성을 자동 설정 -상세 구성(Detailed Configuration) 옵션은 서버 구성에 대해 보다 많은 제어를 하고자 하는 고급 사용자를 위한 것 Detailed Configuration 라디오 버튼을 선택하고 다음과정으로 진행하면, 서버 타입을 선택하는 화면으로 전환된다. 2018-11-16 쉽게 배우는 MySQL 5.x
서버 타입은 MySQL구성 마법사가 메모리, 디스크, 및 프로세서 사용량을 구성할 때 영향을 미친다. • Developer Machine : 개인적으로만 사용 하고자 하는 전형적인 데스크 탑 웍크스테이션에 MySQL을 설치할 때 이 옵션을 선택한다. MySQL서버는 최소 시스템 자원을 사용하도록 구성된다. • Server Machine : MySQL이 FTP, email, 그리고 웹 서버와 같은 다른 서버 어플리케이션과 함께 운영되는 서버를 위한 선택 옵션이다. • Dedicated MySQL Server Machine : 서버 장비가 MySQL만 전용으로 실행하는 용도의 옵션이다. 다른 어떠한 어플리케이션도 같이 운영되지 않는다. MySQL서버는 모든 사용 가능한 메모리 자원을 활용하도록 구성된다. 개발자 머신을 선택하고, 다음으로 진행하면 데이터베이스 사용량 선택 화면으로 이동 2018-11-16 쉽게 배우는 MySQL 5.x
데이터베이스 사용량 다이얼로그는 MySQL테이블을 생성할 때 사용할 스토리지 엔진을 표시한다 데이터베이스 사용량 다이얼로그는 MySQL테이블을 생성할 때 사용할 스토리지 엔진을 표시한다. 사용자가 선택한 옵션은 InnoDB스토리지 엔진을 사용할 수 있는지 그리고 서버 자원의 몇 퍼센트를 InnoDB에서 사용할 수 있는지를 결정한다. • Multifunctional Database : 이 옵션은 InnoDB 및 MyISAM 스토리지 엔진 모두를 활성화 시키며 두 엔진에 서버 자원을 동등하게 분할한다. 이 옵션은 두 엔진 모두를 규칙적으로 사용하는 사용자에게 권장되는 사항이다. • Transactional Database Only : 이 옵션은 InnoDB 및 MyISAM 스토리지 엔진을 모두 활성화 시키지만, InnoDB엔진을 대부분 사용하고 MyISAM엔진은 최소로 사용하는 사용자에게 권장한다. • Non-Transactional Database Only : 이 옵션은 InnoDB 스토리지 엔진을 완벽하게 비활성화 시키고 모든 서버의 자원을 MyISAM 스토리지 엔진에 할당한다. 2018-11-16 쉽게 배우는 MySQL 5.x
-커스텀 경로를 선택하기 위해서는, …버튼을 누른다. -InnoDB 테이블 스페이스 파일의 디폴트 위치를 변경하기 위해서는, 드라이브를 표시하는 문자에서 새로운 드라이브를 선택하고 경로 리스트에서 새로운 경로를 선택하면 된다. -커스텀 경로를 선택하기 위해서는, …버튼을 누른다. -현재의 서버 구성을 수정하고자 한다면, 경로를 변경하기 전에 수정(Modify)버튼을 먼저 누른다. -서버를 구동하기 전에 반드시 먼저 현재의 테이블 스페이스 파일을 새로운 위치로 수동으로 옮겨 놓아야 한다. 2018-11-16 쉽게 배우는 MySQL 5.x
-서버 자원이 고갈되는 상황을 피하기 위해서는, MySQL에 동시에 접속하는 숫자를 제한하는 것이 중요 -동시 접속 다이얼로그는 서버의 예상 사용량을 선택할 수 있게 하며, 이에 따른 동시 접속의 한계를 설정할 수 있다. -동시 접속 한계는 수동으로도 설정할 수 있다. • Decision Support (DSS)/OLAP : 서버에 많은 수의 동시 접속이 요구되지 않는 경우에 선택한다. 최대 접속 수는 100을 설정하고, 평균 동시 접속은 20으로 가정한다. • Online Transaction Processing (OLTP) : 서버가 많은 수의 동시 접속을 필요로 하는 경우에 선택한다. 최대 접속 수는 500으로 설정한다. • Manual Setting : 서버에 최대 동시 접속 수를 수동으로 설정할 때 선택한다. 제공되는 드롭다운 박스에서 동시 접속 숫자를 선택하거나, 또는 원하는 숫자가 박스에 없으면 최대 접속 숫자를 그 안에 입력하면 된다. 2018-11-16 쉽게 배우는 MySQL 5.x
-네트워킹 및 스트릭트 모드 옵션을 설정하는 과정이다. -TCP/IP 네트워킹을 활성화 또는 비활성화 시킬 수 있으며 MySQL서버에 접속하는데 사용하는 포트의 숫자를 구성하는데 사용 • TCP/IP 네트워킹은 디폴트로 활성화된다. TCP/IP 네트워킹은 비활성화 시키기 위해서는, Enable TCP/IP 네트워킹 옵션 활성화 박스를 해제시키면 된다. • Port 3306은 디폴트로 사용된다. MySQL을 접속하는데 사용되는 포트를 변경하기 위해서는, 드롭다운 박스에서 새 포트 번호를 선택하거나 드롭박스에 직접 새 포트 번호를 입력하면 된다. 선택한 포트 번호가 사용 중 이라면, 포트 번호를 확인하라는 프롬프트가 생긴다. • 네트워킹 및 스트릭트 모드 옵션 다이얼로그를 선택하고 나면 문자 셋(set) 설정으로 전환된다. 2018-11-16 쉽게 배우는 MySQL 5.x
-문자 셋 다이얼로그를 사용해서 MySQL서버의 디폴트 문자 셋을 변경할 수 있다. • Standard Character Set : latin1을 서버의 디폴트 문자 셋으로 사용할 경우 선택할 수 있는 옵션이다. latin1는 영어 및 수 많은 서 유럽 언어를 사용한다. • Best Support For Multilingualism : utf8을 디폴트 서버 문자 셋으로 선택할 때 사용되는 옵션이다. 이것은 유니코드 문자 셋으로 다른 많은 언어에서 저장할 수 있는 것이다. • Manual Selected Default Character Set / Collation : 서버의 디폴트 문자 셋을 수동으로 선택할 때 사용하는 옵션이다. 제공되는 드롭다운 리스트에서 원하는 문자를 선택한다. (한국어 사용시 euckr 선택) 2018-11-16 쉽게 배우는 MySQL 5.x
-윈도우 NT기반 플랫폼에서, MySQL서버는 윈도우 디폴트 서비스로 설치 -MySQL서버는 시스템이 시작(startup)되는 동안 자동으로 설치를 시작 -윈도우의 서비스가 실패할 경우에도 자동으로 재 구동 된다. -등록할 Service Name을 선택할 수 있다. "Include Bin Directory in Windows PATH" 체크박스(check box)를 선택 Command line 명령어 화면은 어느 폴더(디렉토리)에서나 MySQL 대화형 명령어를 사용 가능 2018-11-16 쉽게 배우는 MySQL 5.x
-MySQL구성 마법사는 root 패스워드를 설정할 것을 디폴트로 요구 -루트 패스워드를 설정 않을 경우에는, [ Modify Security Settings ]를 해제 -원격컴퓨터로부터 루트로 로그인 하는 것을 허용/차단 할 수 있다. -루트 계정은 보다 안전을 확보하게 된다. -익명 사용자 계정 옵션 생성 박스를 설정하면 익명의 사용자 계정을 생성 -익명 계정 생성은 서버의 보안성을 약화 시키며 로그인 및 승인상의 문제 발생 2018-11-16 쉽게 배우는 MySQL 5.x
-MySQL구성 마법사는 옵션을 my.ini 파일에 쓰기 시작한다. 예 : C:\Program Files\MySQL\MySQL Server 5.0\my.ini -MySQL구성 마법사가 해당 업무를 마치게 되면, 진행 내역을 요약해서 화면에 보여준다. -[ Finish ] 버튼을 눌러서 MySQL구성 마법사를 종료하고, 설치를 모두 끝내게 된다. 2018-11-16 쉽게 배우는 MySQL 5.x
mysql 이라는 간단한 명령으로 패스워드 입력 없이 MySQL을 구동할 수 있다. 윈도우의 [시작] ➡ [실행] ➡ cmd ➡ mysql -u root -p 라는 명령으로 MySQL을 root 계정으로 password를 입력 후 시작할 수 있다. root 패스워드를 지정하지 않은 경우 mysql 이라는 간단한 명령으로 패스워드 입력 없이 MySQL을 구동할 수 있다. MySQL에 접속한 화면 (root 계정) 2018-11-16 쉽게 배우는 MySQL 5.x
3.3 MySQL의 데이터베이스 관리 툴 MySQL GUI(graphic user interface) Tool 얻어오기 -MySQL 공식 홈페이지(www.mysql.com)에서 "Community"를 선택 -GUI Tools를 선택 2018-11-16 쉽게 배우는 MySQL 5.x
-http://dev.mysql.com/downloads/gui-tools/5.0.html 미러사이트에서 다운로드 -Windows x86 플랫폼에서 mysql-gui-tools-5.0-r12-win32.msi 버전 다운로드 2018-11-16 쉽게 배우는 MySQL 5.x
2) mysql-gui-tools-5.0-r12-win32.msi 설치하기 MySQL Tool for 5.0 Setup Wizard 화면에서 Next 버튼을 클릭하여 설치 시작 2018-11-16 쉽게 배우는 MySQL 5.x
라이센스 동의 여부화면에서 I accept .... 라디오 버튼을 클릭하고 Next 버튼을 클릭한다. 설치할 폴더(Destination Folder)는 디폴트로 “C:\Program Files\MySQL\MySQL Tools for 5.0\”를 사용하나 만약에 다른 폴더에 설치하려면 Change... 버튼을 클릭하여 다른 폴더를 입력해 준다. (예 C:\MySQL Tools for 5.0\) 디폴트 폴더를 사용하려면 Next 버튼을 클릭한다. 2018-11-16 쉽게 배우는 MySQL 5.x
∙Complete 설치 타입 : 설치 패키지에 포함되어 있는 모든 요소들을 설치 ∙Custom 설치 타입 : 설치하고자 하는 패키지와 사용하고자 언어와 설치 경로에 대해 전적으로 제어를 할 수 있게 한다. Install 버튼을 클릭하면 설치 시작 2018-11-16 쉽게 배우는 MySQL 5.x
오류를 대비하여 감시하거나 조언을 해주는 서비스를 사용하기 위해 Next 버튼을 클릭 감시 및 조언(Monitoring and Advisory Service) 사이트를 방문하기 위해 More버튼을 클릭하고, 작업을 끝마치기를 원한다면 Next 버튼을 클릭 2018-11-16 쉽게 배우는 MySQL 5.x
-MySQL Tool for 5.0 Setup 작업을 종료하기 위해 Finish버튼을 클릭 -MySQL Tool을 사용하기 위해서는 윈도우의 [시작] ➡ [프로그램] ➡ [MySQL] ➡ [MySQL Migration Toolkit] 선택 후 사용 2018-11-16 쉽게 배우는 MySQL 5.x
MySQL 마이그레이션 툴킷 -고객이 가지고 있는 기존의 타 회사 DBMS제품의 데이터베이스에서 MySQL로 데이터 이동(Migration)을 빠르고 쉽게 해주는 강력한 프레임워크이다. -데이터베이스 마이그레이션 마법사를 그대로 따라 하는 것만으로도 다른 제품의 DBMS 데이터베이스에서 MySQL로 테이블 구조와 모든 데이터 그리고 스토어드 프로시저, 트리거, 뷰까지도 모두 이전할 수 있다. MySQL 마이그레이션 툴킷의 장점 - 오라클, MS SQL 서버, MS Access로부터 쉽고 빠른 데이터베이스 이전 - 마이그레이션 툴킷을 사용하여 데이터베이스 이전에 따르는 각종 위험 감소 - 시간과 인력 비용의 감소 - 확장 가능한 모듈기반 아키텍처를 통해 사용자가 원하는 대로 이동 가능 - 데이터베이스 서버의 플랫폼과는 상관없이 양쪽 모두 원격으로 이동 가능 2018-11-16 쉽게 배우는 MySQL 5.x
1) 마이그레이션 툴은 데이터 이전시 위험을 감소시킨다. 마이그레이션 툴은 목표 선택에서 스키마를 만들고, 데이터의 맵핑 및 데이터 전송을 맵핑시켜 단계적으로 실행 2018-11-16 쉽게 배우는 MySQL 5.x
-마이그레이션 툴킷은 자동화된 마이그레이션 매뉴얼 인터페이스 마법사를 제공 2) 사용이 편리하다. -마이그레이션 툴킷은 자동화된 마이그레이션 매뉴얼 인터페이스 마법사를 제공 -비주얼 환경은 수동 조작이 요구되어지는 객체들에 대해 SQL 문장을 조정 -증명된 강력한 인터페이스 마법사를 사용함으로써 사용자의 데이터베이스 이전에 따른 높은 위험요소를 감소시키고 비용을 절감할 수 있다. 2018-11-16 쉽게 배우는 MySQL 5.x
-MySQL 마이그레이션 툴킷으로 데스크톱에서 원격 서버로 데이터베이스를 이전하는 동안에 유연성을 가질 수 있다. 3) 다른 제품에게 원격 지원을 한다. -MySQL Migration Toolkit은 또 다른 제품의 마이그레이션 솔루션에게 원격 서버에서 나의 서버에 현재 존재하는 명령을 제거 하는 기능을 지원한다. -MySQL 마이그레이션 툴킷으로 데스크톱에서 원격 서버로 데이터베이스를 이전하는 동안에 유연성을 가질 수 있다. -다른 제품의 마이그레이션이 데스크톱을 통해 동작하지 않기 때문에 원격으로 직접 수행해야 한다. 4) 스키마, 트리거, 스토어드 프로시저, 뷰를 포함한 데이터베이스 객체 이전 -MySQL 마이그레이션 툴킷은 아래의 객체 타입을 포함한 데이터베이스 포맷으로 부터 MySQL로 마이그레이션 하거나 객체들의 지도를 보여준다. Tables, Indexes, Views, Stored Procedure Migration을 지원, Trigger Migration을 지원 툴킷은 표준 마이그레이션 방법을 사용하거나 자신만의 자바언어를 사용 표준 마이그레이션 방법들의 몇몇 인수 값들을 사용하였을 때는 다음과 같은 인수 값들을 기본으로 포함하여 조절 될 것이다. - Transactional / High-speed data handlers, Foreign Key constraints, Mult-language support (UTF8), User defined settings 2018-11-16 쉽게 배우는 MySQL 5.x
-오라클, MS SQL, MS Access를 포함한 다수의 데이터베이스를 위한 마이그레이션 모듈을 가지고 있다. 5) 모듈 구조의 확장 -오라클, MS SQL, MS Access를 포함한 다수의 데이터베이스를 위한 마이그레이션 모듈을 가지고 있다. -사용자들에게 또 다른 데이터베이스 제품을 마이그레이션 된 데이터의 현재 모듈을 만들 수 있게 유연성을 준다. -사용자는 부가적인 데이터 타입의 기본 모듈을 확장할 수 있다. 6) Migration Process의 최적화 -객체 스크립트를 통한 마이그레이션 프로세스를 최적화 -사용자들은 인터페이스 마법사와 매번 스크립트를 통해서 데이터베이스 스키마를 이전 가능 7) 기존 플랫폼에 의한 독립적인 마이그레이션 -자바의 독립적인 플랫폼을 사용하여 다양한 플랫폼에서 MySQL 데이터베이스를 마이그레이션 할 수 있다. -솔라리스의 오라클 데이터베이스를 리눅스 환경의 MySQL을 사용함에 있어서 모든 면에서 비용을 상당히 줄일 수 있고 JDBC로 연결할 때 데이터 소스를 연결할 수 있게 된다. 8) 포괄적인 요약 보고서 -이미 이전된 몇 개의 객체(테이블, 뷰, 기타 등등)에 대해 상세한 정보 제공 -이해하기 쉽게 리포트로 보여준다. -리포트를 사용하는 것은 객체의 이전이 성공적으로 완료된 것을 의미 2018-11-16 쉽게 배우는 MySQL 5.x
MySQL Administrator -강력한 비주얼 관리 툴을 이용해 MySQL 환경을 모니터 할 수 있어, 고객의 데이터베이스가 조작되는 방법을 쉽게 볼 수 있다. -명확하고 직관적인 그래픽 사용자 인터페이스로 DBMS와 유지보수가 통합 -로컬이나 원격에서 MySQL을 관리하기 위한 GUI 기반의 관리도구 -미려한 인터페이스를 가지고 있으며, 모니터링 측면에서 매우 뛰어난 성능 MySQL 관리자의 주요 기능 -로컬이나 원격에서 인스턴스 매니저를 통한 MySQL의 시작과 중단 -각종 환경설정 파일의 확인과 변경 -사용자 권한 관리 -MySQL 데이터베이스 서버에 대한 자세한 모니터링 -스케줄링 백업 기능 -원격에서 백업 및 복구 -리플리케이션 설정과 모니터링 -서버의 각종 로그에 대한 확인 2018-11-16 쉽게 배우는 MySQL 5.x
1) MySQL 서버 정보 -MySQL의 서버 정보를 한눈에 확인 할 수 있다. -사용자와 Host, 포트, 버전정보를 한눈에 쉽게 볼 수 있다. 2018-11-16 쉽게 배우는 MySQL 5.x
2) User의 권한 및 정보 -사용자의 대한 정보 및 권한 그리고 테이블과 칼럼에 대한 권한을 보여준다. -사용자의 추가, 패스워드를 설정하고 사용자의 개인정보를 담는다. -사용자의 권한을 쉽게 추가 할 수 있으며 사용자를 삭제할 수 있다. 2018-11-16 쉽게 배우는 MySQL 5.x
3) Single View Dynamic Health Monitoring -Dynamic health monitoring은 현재 MySQL의 상태를 볼 수 있도록 해준다. -메모리의 사용, 연결상태 등 현재 MySQL의 구동상태를 %형태로 보여준다. -매모리 Health 탭은 하드디스크 공간, 테이블 스페이스, 로그 파일의 정보를 한눈에 볼 수 있다. 2018-11-16 쉽게 배우는 MySQL 5.x
4) MySQL의 빠른 최적화 -MySQL에서 쉽고 빠르게 최적화 할 수 있으며, 모든 사항을 쉽게 확인 -예를 들어 사용자는 파라미터 관련 메모리 사용과 MyISAM 과 InnoDB테이블 타입과 관련된 서버를 시작할 때 파라미터를 생성할 수 있다. 2018-11-16 쉽게 배우는 MySQL 5.x
5) 에러에 대한 복구 -Backup은 원하는 디렉토리를 지정하여 데이터베이스 Backup을 할 수 있다. -테이블 타입, 업데이트 정보 등을 볼 수도 있다. 2018-11-16 쉽게 배우는 MySQL 5.x
6) 관리자 환경에서의 서버에 대한 모든 로그파일을 볼 수 있다. -MySQL에서 발생된 모든 로그파일들을 관리하며 서버에 발생했던 모든 상황을 파일로 저장하여 보관하고 사용자가 모니터링 할 수 있도록 보여준다. -데이터베이스나 서버에 문제가 발생했을 경우 로그를 보고 분석할 수 있다. 2018-11-16 쉽게 배우는 MySQL 5.x
7) View Replication Status -MySQL에서 빠르고 정확한 응답을 빠른 시간에 볼 수 있다. -MySQL의 관리자가 허락하는 범위 내에서 네트워크를 통해 빠른 응답을 볼 수 있다. -시각적인 환경은 추가적으로 IP와 로그파일을 가시적으로 제공한다. 2018-11-16 쉽게 배우는 MySQL 5.x
8) Service Control -MySQL에서 여러 가지 작업을 사용하는 시간에 또 다른 서비스를 사용하고, MySQL의 시작과 정지 그리고 로그 메시지를 볼 수 있다. 2018-11-16 쉽게 배우는 MySQL 5.x
9) Browse Catalog -MySQL에서 선택되어진 데이터베이스에 접근하기 위한 사용자 권한과 색인의 해당 테이블을 카탈로그별로 찾아본다. -테이블을 모니터링하고 최적화 할 수 있다. 2018-11-16 쉽게 배우는 MySQL 5.x
MySQL MySQL Query Browser -MySQL 쿼리 브라우저는 MySQL 서버용으로 SQL쿼리를 생성, 실행, 최적화하는데 가장 쉬운 비주얼 툴이다. -MySQL 쿼리 브라우저는 고객의 쿼리를 비주얼하게 생성, 분석, 관리하기 위해 완벽하게 드래그 앤 드롭 툴을 제공한다. -쿼리를 쉽게 생성하고 실행하며 쿼리 히스토리를 저장하는 쿼리 툴바 -SQL 구문을 생성하고 수정하는 스크립트 에디터 -여러 쿼리의 결과를 비교하며 작업할 수 있는 결과창(Results Window) -웹 브라우저와 유사한 인터페이스를 가진 오브젝트 브라우저를 통해 데이터베이스, 북마크, 히스토리 등을 관리 -테이블을 생성, 삭제하며 쿼리를 위한 테이블이나 필드를 선택할 수 있는 데이터베이스 익스플로러 -테이블 에디터를 통해 쉽게 테이블을 생성하고 수정하고 삭제 가능 2018-11-16 쉽게 배우는 MySQL 5.x
1) 사용하기 쉬운 사용자 인터페이스 -MySQL 쿼리 브라우저는 모든 기능을 제어할 수 있는 인터페이스 같은 웹브라우저를 손쉽게 사용할 수 있도록 제공한다. -메인 쿼리 창은 툴바를 숨길 수 있도록 되어있고, Refresh 버튼은 한번 실행한 쿼리에 대해 다시 그 결과를 찾기 위해 히스토리 기능을 제공한다. 2018-11-16 쉽게 배우는 MySQL 5.x
2) 한눈에 쿼리 문을 볼 수 있는 비주얼 툴 -MySQL 쿼리 브라우저는 잘못된 쿼리 문을 교정할 수 있는 기능 제공 -손으로 직접 쿼리를 코딩함에 의해 Visual Tool을 사용하고 유지한다. -원하는 쿼리를 작성하기 위해 데이터베이스 브라우저에서 테이블과 칼럼을 선택하여 시각적으로 쿼리를 작성 -모든 쿼리문은 쉽게 수정할 수 있게 쿼리영역에 보여준다. 2018-11-16 쉽게 배우는 MySQL 5.x
3) 다수의 쿼리 결과의 쉬운 관리 -각각 다른 질의에 대한 결과를 수직적, 수평적으로 볼 수 있어서 다수의 쿼리를 쉽게 비교 판단할 수 있다. -서로 다른 쿼리는 상이한 결과를 상세한 분석을 통해 결합되어질 수 있다. -또한 버튼에 대한 설명은 현재 쿼리를 Description 부분에서 설명되어진다. . 2018-11-16 쉽게 배우는 MySQL 5.x
4) 브라우저 사용으로 인한 데이터베이스 관리 -오브젝트 브라우저는 데이터베이스, 쿼리 북마크, 쿼리 히스토리 기능이 있다. -데이터베이스 익스플로러를 사용하면 파일 탐색기 형태로 사용이 가능하며, 테이블들과 필드들에 대해 새로운 테이블 및 데이터베이스 생성, 편집, 삭제 등을 쿼리에 의해 선택하여 편집 할 수 있다. -서치바를 통해 데이터베이스를 필터링하여 볼 수 있다. -테이블을 더블클릭하면 단순 SELECT 문장을 자동적으로 생성한다. 2018-11-16 쉽게 배우는 MySQL 5.x
5) MySQL Table Editor -MySQL Table Editor는 새로운 테이블을 생성하거나 이미 만들어진 테이블의 속성을 변경할 수 있다. -테이블의 이름 변경, Primary key 생성 및 변경, 테이블 칼럼의 이름 변경 -데이터 형 변경, Not NULL 지정, Unique 속성 결정, 외래 키의 관계 -인덱스 정보를 생성하거나 수정할 수 있다. 2018-11-16 쉽게 배우는 MySQL 5.x
6) Script Editor -Script Editor는 SQL script debugging, editing, creating을 제공한다. -스크립트 영역의 특징은 각 라인의 line number와 스크립트를 통한 문법을 쉽게 만들 수 있다. -Script Debugging 버튼은 스크립트의 조절을 가능하게 해준다. 2018-11-16 쉽게 배우는 MySQL 5.x
3.4 MySQL 버전별 차이점 개요 MySQL은 3.x 버전에서 본격적으로 사용되기 시작하였고, 4.x 버전에서 기본 기능들을 안정화 시키는 기간을 거쳐 이제 성숙기에 접어드는 5.x버전에 이르렀다. MySQL 진화의 역사 버 전 변 경 내 용 3.23 버전 대용량 파일과 더 나은 SQL지원을 위해 MyISAM 스토리지 엔진의 지원 로우 레벨 락킹과 오라클과 비슷한 구조를 가진 트랜잭션 지원 스토리지 엔진인 InnoDB의 탑재 트랜잭션 지원을 위해 Berkeley DB 라이브러리를 스토리지 엔진으로 사용가능 마스터/슬래이브 구조의 리플리케이션 지원 기본적인 풀 텍스트 인덱스의 지원 4.0 InnoDB 엔진이 기본 바이너리에 포함 쿼리와 완전한 결과 값을 캐싱하는 쿼리 캐시를 도입함으로써 큰 폭으로 성능 향상 풀 텍스트 인덱스를 통해 Boolean 및 문장 검색이 가능해지면서 본격적인 풀 텍스트 인덱스 지원 Merge 테이블에서 Insert와 Auto Increment 지원 Select 문에서 UNION 사용가능 다중 테이블에 대한 DELETE 사용가능 임베디드 서버 라이브러리인 Libmysqld 지원 2018-11-16 쉽게 배우는 MySQL 5.x
버 전 변 경 내 용 4.0 버전 동적으로 서버 변수의 설정이 가능해 짐으로써 서버의 재 시작 없이 설정의 변경이 가능해 짐 리플리케이션에 대한 대폭적인 수정 및 안정화 4.1 Prepared statement와 parameter binding을 지원하는 더 빠른 서버/클라이언트간 프로토콜 사용 Heap(memory)테이블에 B-Tree 인덱스를 지원함으로써 훨씬 빨라진 검색 가능(이전 버전까지는 Heap 테이블에서는 hash 인덱스만을 지원) MyISAM 스토리지 엔진에서 OpenGIS 기반의 지리정보 데이터의 처리를 지원 SSL을 통해 보안이 강화된 리플리케이션을 지원 새로운 서버/클라이언트 라이브러리를 통해 한 번에 다수의 Warning을 처리할 수 있게 되어 벌크 데이터 Insert시 발생하는 경고를 훨씬 편리하게 추적 가능 다양한 지역 언어를 완벽하게 지원하기 위해서 MySQL은 UTF-8과 UCS-2캐릭터 셋을 지원 캐릭터 셋을 데이터베이스, 테이블 그리고 칼럼단위로 지정 가능해 짐으로써 다중 언어를 지원하는 웹사이트 등의 개발 시 훨씬 유연한 작업 가능 커넥션 별 타임 존 설정이 가능해져 접속하는 클라이언트 별로 다른 타임 존 사용가능 GROUP_CONCAT() 기능이 추가되어 그룹핑된 row들 사이에서 단일 결과 값을 편리하게 얻어낼 수 있게 됨. 5.x 스토어드 프로시저와 함수 인스턴스 매니저 페더레이티드 스토리지 엔진 아카이브 스토리지 엔진 분산 트랜잭션 서버사이드 커서 인포메이션 스키마 뷰, 트리거 2018-11-16 쉽게 배우는 MySQL 5.x
스토어드 프로시저와 함수(Stored Procedures and Functions) -스토어드 프로시저란 일련의 SQL문을 하나의 묶음으로 데이터베이스 서버에 저장하는 기능 -한번 서버에 저장되면 클라이언트는 매번 각각의 SQL문을 보낼 필요 없이 저장된 스토어드 프로시저를 호출하면 된다. -여러 클라이언트 어플리케이션이 각각 다른 프로그래밍 언어를 이용하여 작성되었거나 다른 플랫폼에 작동하나 동일한 데이터베이스 작업이 필요할 때 -예 : 은행과 같이 보안이 가장 중요한 경우 사용 -모든 데이터베이스 작업을 스토어드 프로시저로 처리함으로써 어플리케이션이나 데이터베이스 사용자는 테이블에 직접 접근하지 않고, 스토어드 프로시저를 통해서만 접근하게 되어 뛰어난 보안성이 보장되며 또한 하나의 작업단위로 적절히 수행되었는지 로깅이 가능해진다. 2018-11-16 쉽게 배우는 MySQL 5.x
simpletest( ) PROCEDURE 생성 및 삭제 mysql> CREATE PROCEDURE simpletest() -> BEGIN -> SELECT stu_no, stu_name, id_num FROM student -> WHERE substring(id_num, 8, 1) = 2; -> SELECT sub_code, sub_name FROM subject -> WHERE create_year = '2005'; -> END -> // Query OK, 0 rows affected (0.00 sec) mysql> CALL simpletest(); +----------+----------+----------------+ | stu_no | stu_name | id_num | | 20041002 | 김유미 | 830207-2629715 | | 20041007 | 정인정 | 830315-2351225 | | 20061014 | 고혜진 | 870307-2638759 | | 20071300 | 유하나 | 880921-2573717 | | 20071307 | 김문영 | 880418-2121623 | | 20071405 | 최차영 | 881003-2581516 | 6 rows in set (0.03 sec) 2018-11-16 쉽게 배우는 MySQL 5.x
simpletest( ) PROCEDURE에 2개의 select 명령문이 포함되어 있어 2개의 명령문이 한꺼번에 출력된다. +----------+---------------------+ | sub_code | sub_name | | 4007 | UML | | 4012 | 네트워크 프로그래밍 | 2 rows in set (0.03 sec) Query OK, 0 rows affected (0.03 sec) simpletest( ) PROCEDURE에 2개의 select 명령문이 포함되어 있어 2개의 명령문이 한꺼번에 출력된다. PROCEDURE의 삭제 작업은 다음과 같다. mysql> delimiter // mysql> drop procedure simpletest -> // Query OK, 0 rows affected (0.00 sec) 2018-11-16 쉽게 배우는 MySQL 5.x
2) 인수를 가지고 있는 simpleproc( ) PROCEDURE 생성 mysql> delimiter // mysql> CREATE PROCEDURE simpleproc (OUT paraml INT) -> BEGIN -> SELECT COUNT(*) INTO paraml FROM student; -> END -> // Query OK, 0 rows affected (0.00 sec) mysql> CALL simpleproc(@a); mysql> SELECT @a; +------+ | @a | | 15 | 1 row in set (0.00 sec) 학적 테이블(“student”)은 15개의 행으로 구성되어 있다. 2018-11-16 쉽게 배우는 MySQL 5.x
-트리거란 테이블에 연결되는 하나의 데이터베이스 오브젝트로서 테이블에 특정 이벤트가 발생하면 동작하게 된다. 트리거(Triggers) 가. 트리거는 MySQL 5.x.2버전부터 포함 -트리거란 테이블에 연결되는 하나의 데이터베이스 오브젝트로서 테이블에 특정 이벤트가 발생하면 동작하게 된다. -하나의 테이블을 생성한 후 그 테이블에 INSERT에 대한 트리거를 생성 -생성된 트리거는 테이블에 INSERT가 수행되면 amount 칼럼의 합계를 구함 mysql> CREATE TABLE account(acct_num INT, amount DECIMAL(10,2)); mysql> CREATE TRIGGER Ins_sum BEFORE INSERT ON account -> FOR EACH ROW SET @sum = @sum + NEW.amount; 나. 최신 베타버전에서 가지고 있는 트리거 관련 제한 사항을 다음과 같다. • 트리거는 CALL을 이용하여 스토어드 프로시저를 호출할 수 없다. • INSERT, UPDATE, DELETE등 하나의 동작에는 하나의 트리거만을 설정 가능 하지만 하나의 동작에 BEGIN….END 사이에 여러 SQL문을 넣을 수 있기 때문에 크게 제한되는 부분은 아니다. • 트리거에서는 START TRANSACTION, COMMIT, ROLLBACK과 같은 트랜잭션 관련 SQL문을 쓸 수 없다. 2018-11-16 쉽게 배우는 MySQL 5.x
mysql> CREATE TABLE t (qty INT, price INT); 뷰(Views) 가. 뷰는 사용자가 테이블이나 정보에 쉽게 접근할 수 있도록 해주고, 특정 사용자는 테이블의 정보 중 허용된 정보만 볼 수 있도록 하는 권한을 관리하는 용도로 사용할 수 있다. mysql> CREATE TABLE t (qty INT, price INT); mysql> INSERT INTO t VALUES(3, 50); mysql> CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t; mysql> SELECT * FROM v; +-------+-------+-------+ | qty | price | value | | 3 | 50 | 150 | 나. MySQL 5.x의 뷰 기능이 가진 주요 제한 사항은 다음과 같다. 1) SELECT문에서 FROM 절에 서브 쿼리를 사용할 수 없음 2) SELECT문에서 시스템이나 유저 변수를 참조할 수 없음 3) 임시 테이블을 참조할 수 없으면 임시 뷰 역시 사용할 수 없음 4) 뷰에서 참조하는 테이블 명은 먼저 존재하고 있어야 함 5) 트리거와 뷰를 연결시킬 수 없음 2018-11-16 쉽게 배우는 MySQL 5.x
인포메이션 스키마(Information Schema) -데이터베이스, 테이블의 이름, 접속권한 등에 대한 접근을 허용 -인포메이션 스키마에 대한 접근은 SELECT문을 사용 mysql> SELECT table_name, table_type, engine -> FROM information_schema.tables -> WHERE table_schema = 'mysql' -> ORDER BY table_name DESC; +---------------------------+------------+--------+ | table_name | table_type | engine | | user_info | BASE TABLE | MyISAM | | user | BASE TABLE | MyISAM | | time_zone_transition_type | BASE TABLE | MyISAM | | time_zone_transition | BASE TABLE | MyISAM | | time_zone_name | BASE TABLE | MyISAM | | time_zone_leap_second | BASE TABLE | MyISAM | | time_zone | BASE TABLE | MyISAM | | tables_priv | BASE TABLE | MyISAM | | procs_priv | BASE TABLE | MyISAM | | proc | BASE TABLE | MyISAM | | host | BASE TABLE | MyISAM | | help_topic | BASE TABLE | MyISAM | | help_relation | BASE TABLE | MyISAM | | help_keyword | BASE TABLE | MyISAM | | help_category | BASE TABLE | MyISAM | | func | BASE TABLE | MyISAM | | db | BASE TABLE | MyISAM | | columns_priv | BASE TABLE | MyISAM | 18 rows in set (0.00 sec) 2018-11-16 쉽게 배우는 MySQL 5.x
서버사이드 커서(Server-side Cursors) -커서는 읽기전용이며 스크롤을 지원하지 않고 결과 테이블의 복사본을 않만듬 -스토어드 프로시저 또는 함수에서 커서를 사용하려면 핸들러를 선언하기 전에 커서를 선언, 변수와 조건은 커서 또는 핸들러가 선언된 수에 선언되어야 한다. CREATE PROCEDURE curdemo() BEGIN DECLARE done INT DEFAULT 0; DECLARE a CHAR(16); DECLARE b, c INT; DECLARE cur1 CURSOR FOR SELECT id, data FROM test.t1; DECLARE cur2 CURSOR FOR SELECT i FROM test.t2; OPEN cur1; OPEN cur2; REPEAT FETCH cur1 INTO a, b; FETCH cur2 INTO c; IF NOT done THEN IF b < c THEN INSERT INTO test.t3 VALUES (a,b); ELSE INSERT INTO test.t3 VALUES (a,c); END IF; END IF; UNTIL done END REPEAT; CLOSE cur1; CLOSE cur2; END 2018-11-16 쉽게 배우는 MySQL 5.x
분산 트랜잭션(XA Transactions) -5.0.3에서 분산 트랜잭션을 지원, 현재는 InnoDB 스토리지 엔진에만 지원 -MySQL의 클라이언트 라이브러리와 링크될 필요 또한 없다. -다양한 트랜잭션이 가능한 리소스들이 글로벌 트랜잭션 안에서 함께 처리 -트랜잭션 가능한 리소스들이란 MySQL 또는 오라클과 같은 관계형 데이터베이스 시스템이거나 기타 다른 DBMS일 수도 있다. -분산 트랜잭션의 예 어플리케이션에서 서로 다른 데이터베이스 서버에 영항을 미치는 동작을 수행하는 경우로 데이터베이스는 MySQL과 오라클이거나 여러 대의 MySQL서버일 수 있다. 각각의 데이터베이스 서버는 글로벌 트랜잭션의 일부로 포함하게 되어 각각 별도의 로컬 트랜잭션을 거치지 않고 수행이 가능 은행이 계정 정보를 관계형 데이터베이스에 저장하고 현금 인출기를 통해 현금이 인출될 때 계정에서 돈이 인출되는 트랜잭션은 현금 인출기와 데이터베이스에서 글로벌 트랜잭션을 통해 이루어질 수 있다. 2018-11-16 쉽게 배우는 MySQL 5.x
아카이브 스토리지 엔진(Archive Storage Engine) - 데이터베이스에는 빈번하게 사용하는 데이터뿐만 아니라 의사결정 또는 통계에 사용하기 위해 계속 누적되는 데이터 역시 많은 부분 존재 데이터베이스의 용량은 필연적으로 계속적으로 증가하기 마련 데이터가 차지하는 공간을 줄이고 효율적으로 사용하기 위해 도입 MySQL에서 빈번히 사용되지 않는 대용량 데이터를 처리하기 위해 압축 MyISAM 테이블이라는 것을 사용 아카이브 스토리지 엔진이 압축 MyISAM 테이블보다 장점인 것 압축 MyISAM 테이블은 MyISAM 테이블을 압축하여 보관 MyISAM 테이블은 오프라인 상태, 아카이브 테이블은 온라인 상태에서 작업 MyISAM 테이블을 압축하기 위해서는 DBA가 운영체제 상에서 myisampack이라는 유틸리티를 실행 아카이브 테이블은 MySQL클라이언트 상에서 MySQL SQL커맨드로서 가능 압축 MyISAM 테이블은 오직 SELECT만 가능 아카이브 테이블은 SELECT와 INSERT가 모두 가능 쓰는 동안 읽기 작업이 중단 되지 않는다. 아카이브 테이블은 일반 MyISAM 테이블에 비해 75%나 용량이 감소 MyISAM테이블에 비해서도 7%이상 작은 용량을 가진다. 2018-11-16 쉽게 배우는 MySQL 5.x
페더레이티드 스토리지 엔진(Federated Storage Engine) -오라클의 DB Link와 같은 기능을 하는 스토리지 엔진 -리모트 서버에 있는 테이블을 로컬 테이블과 같이 사용 -여러 대의 MySQL 서버를 용도에 따라 구분, 필요한 경우 서로 참조하여 사용 두 대의 MySQL서버를 사용한다고 가정하고 어떻게 페더레이티드 스토리지 엔진을 사용할 수 있는지 알아보자. • 먼저 실제로 테이블이 생성되고 데이터가 저장될 MySQL 서버에 다음과 같이 테이블을 만들었다. CREATE TABLE test_table( id int(20) NOT NULL auto_increment, name varchar(32) NOT NULL default ' ', other int(20) NOT NULL default '0', PRIMARY KEY (id), KEY name (name), KEY other_key (other) ) ENGINE=MyISAM DEFAULT CHARSET=UTF-8; 2018-11-16 쉽게 배우는 MySQL 5.x
CREATE TABLE federated_table( • 그리고 이 테이블을 원격에서 사용하고 하는 서버에 아래와 같이 페더레이티드 스토리지 엔진 기반의 테이블을 만들어 줌으로서 바로 사용이 가능하다. CREATE TABLE federated_table( id int(20) NOT NULL auto_increment, name varchar(32) NOT NULL default ' ', other int(20) NOT NULL default '0', PRIMARY KEY (id), KEY name (name), KEY other_key (other) ) ENGINE=FEDERATED DEFAULT CHARSET=latin1; COMMENT='mysql://root@remote_host:3306/federated/test_table'; • 맨 아래의 COMMENT부분만 주의해서 보면 쉽게 사용이 가능하며 COMMENT부분에 대한 문법은 다음과 같다. scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name 2018-11-16 쉽게 배우는 MySQL 5.x
인스턴스 매니저(Instance Manager) -MySQL 인스턴스 매니저는 TCP/IP 포트 위에서 동작하는 데몬 -데이터베이스 서버의 인스턴스를 관리하고 모니터링 -리모트에서도 MySQL 데이터베이스 서버를 시작하고 중단할 수 있다. -MySQL 데이터베이스 서버 인스턴스가 중단될 경우 자동으로 재 시작시킨다. -한 서버에서 여러 개의 MySQL 서버 인스턴스를 관리 -MySQL 인스턴스 매니저는 리눅스 및 유닉스 계열 운영체제에서만 사용 가능 -환경설정은 /etc/my.cnf 의 [manager]탭에서 하게 된다. 일반적인 인스턴스 매니저 환경설정 # MySQL Instance Manager options section [manager] default-mysqld-path = /usr/local/mysql/libexec/mysqld socket=/tmp/manaer.sock pid-file\/tmp/manager.pid password-file = /home/cps/.mysqlmanager.passwd monitoring-interval = 2 port = 1999 bind-address = 192.168.1.5 2018-11-16 쉽게 배우는 MySQL 5.x
1) MySQL 관리자(MySQL Administrator) 다양한 GUI 도구모음 1) MySQL 관리자(MySQL Administrator) 2) MySQL 쿼리 브라우저 (MySQL Query Browser) 3) MySQL 마이그레이션 툴킷 (MySQL Migration Toolkit) MySQL 관리자(Administrator) 기존의 MySQL Control Center를 대체하는 도구 로컬 또는 리모트에서 MySQL을 관리하기 위한 GUI기반 관리도구 이전 MySQL 통제 센터에 비해 매우 미려한 인터페이스 모니터링 측면에서 매우 뛰어난 성능 MySQL 관리자의 주요기능 가) 로컬 또는 원격에서 인스턴스 매니저를 통한 MySQL의 시작과 중단 나) MySQL 데이터베이스 서버에 대한 자세한 모니터링 다) 각종 환경설정 파일의 확인 및 변경 라) 유저 권한 관리 마) 스케쥴링 백업 기능 바) 원격에서의 백업 및 복구 사) 리플리케이션 설정과 모니터링 아) 서버의 각종 로그에 대한 확인 2018-11-16 쉽게 배우는 MySQL 5.x
SQL 쿼리를 제작하고 실행하고 최적화 하기 위한 편리한 GUI기반 도구 MySQL 쿼리 브라우저 SQL 쿼리를 제작하고 실행하고 최적화 하기 위한 편리한 GUI기반 도구 가) 쉽게 쿼리를 생성하고 실행하며 쿼리 히스토리를 저장하는 쿼리 툴바 나) SQL구문을 생성하고 수정하는 스크립트 에디터 다) 여러 쿼리의 결과를 비교하며 작업할 수 있는 Results Window 라) 웹 브라우저와 유사한 인터페이스를 가진 오브젝트 브라우저를 통해 데이터베이스, 북마크와 히스토리를 관리 마) 테이블을 생성, 삭제하며 쿼리를 위한 테이블 또는 필드를 선택할 수 있는 데이터베이스 익스플로러 바) 테이블 에디터를 통해 쉽게 테이블을 생성하고 수정하고 삭제 가능 2018-11-16 쉽게 배우는 MySQL 5.x
마이그레이션 마법사 기반의 강력한 GUI기반 데이터베이스 이전 도구 MySQL 마이그레이션 툴킷 마이그레이션 마법사 기반의 강력한 GUI기반 데이터베이스 이전 도구 마이그레이션 마법사를 그대로 따라하는 것만으로도 기존의 다른 데이터베이스에서 MySQL로 테이블 구조와 모든 데이터, 스토어드 프로시저, 트리거, 뷰까지 모두 이전이 가능 MySQL 마이그레이션 툴킷의 장점 가) 오라클, 마이크로소프트 SQL 서버, 마이크로소프트 Access로부터 쉽고 빠른 데이터베이스 이전 나) 마이그레이션 툴킷 사용으로 데이터베이스 이전에 따르는 각종 위험 감소 다) 시간과 인력 비용의 감소 라) 확장 가능한 모듈기반 아키텍처를 통해 사용자가 원하는 대로 이전 가능 마) 데이터베이스 서버의 플랫폼에 상관없이 양쪽 모두 리모트에 둔 상태로 이전 가능 2018-11-16 쉽게 배우는 MySQL 5.x
-데이터웨어하우징이나 다른 VLDB 환경에서의 비즈니스 정보들을 MySQL을 사용하여 구축 가능 데이터웨어하우스 / 비즈니스 정보 -데이터웨어하우징이나 다른 VLDB 환경에서의 비즈니스 정보들을 MySQL을 사용하여 구축 가능 -MySQL 5.1은 대용량 데이터 볼륨의 관리와 XML 검색, 또는 비구조적 데이터 형식에 대해 지원범위가 증대 가. 테이블과 인덱스의 partitioning ① MySQL 5.1은 테이블과 인덱스를 위해 partitioning을 도입 DBA는 표준 MySQL DDL을 통해서 테이블을 partitioning 가능 Range - DBA가 데이터의 할당을 위해 다수의 행을 각각 열거 -예를 들어 DBA는 1980년, 1990년, 그 이전의 모든 데이터와 2000년도를 포함하고 있는 데이터를 가지고 나누어져 있는 파티션을 partitioning 테이블로 만들 수 있다. Hash - DBA에게 최종 목표인 파티션 사이에 값들을 동일하게 분산시키기 위해 Hash로 계산되어 정의된 하나 이상의 테이블 칼럼에 있는 데이터를 나눈다. -예를 들어 DBA는 주키가 있는 열 개의 파티션을 한 테이블로 만들 수 있다. List - DBA가 기술해 놓은 값이 정의 되어있는 list에 데이터를 나눈다. -예를 들어 DBA는 2004년, 2005년, 2006년도에 작성된 세 개의 파티션을 partitioning 테이블로 만들 수 있다. composite - DBA에게 처음 partitinging된 파티션을 다시 partitionging 가능 -예를 들어 hash partitioning은 다른 방법으로 각 파티션을 여러 개로 나눈다. 2018-11-16 쉽게 배우는 MySQL 5.x
② partitioning을 통한 장점 성능향상 - MySQL 옵티마이저는 특정 쿼리가 정상적으로 처리 되었는지, 또 쿼리가 실행되는 동안 필요한 파티션에 접근했는지를 알 수 있다. -예를 들면 백만 개의 Row 테이블이 Range 스타일의 서로 다른 열 개의 파티션에서 깨졌을 때 각 파티션은 100,000개의 Row를 가진다. 만약 쿼리가 그 파티션 중의 하나에 속한 데이터를 필요로 하고 테이블을 스캔하는 명령을 실행해야 하면 백만 개의 row대신에 100,000개의 row에만 접근할 수 있을 것이다. 확실히 더욱 빨라진 MySQL은 백만 개 보다 100,000 row에서 먼저 쿼리가 완료 -또 하나의 장점으로는 인덱스 엑세스가 인덱스들을 지역적으로 partitioning 하는 것이 가능하게 함으로서 partitioning 테이블을 생성 -마지막으로, 다른 파일시스템과 디렉토리의 경로들을 파티션에 명확하게 기술함으로서 파티션 테이블과 다른 물리적 드라이브를 상호 연결 할 수 있다. 이는 동시에 다수의 테이블을 엑세스 할 때 물리적 I/O 커넥션을 줄일 수 있다는 의미 간편한 데이터 관리 - partitioning은 DBA에게 데이터베이스 안에서 데이터를 관리할 수 있도록 제어가능, DBA는 어떤 데이터 명령이든지 간단하게 실행 -예를 들면, DBA는 파티션이 손상되지 않도록 유지하면서 partitioning 테이블에 명시되어 있는 파티션을 삭제할 수 있다. (반대로 모두 단편화 현상이 발생하도록 전체 테이블을 삭제하는 delete 명령을 내리는 나쁜 짓도 할 수 있다.) 2018-11-16 쉽게 배우는 MySQL 5.x
ALL SHOW 명령은 partitioning 테이블과 인덱스 메타데이터를 볼 수 있도록 지원한다. -파티션들은 MySQL에 의해 자동으로 지원받기 때문에 DBA는 손수 나누지 않아도 되고, 수평적 partitioning 스키마로 테이블을 유지, -예를 들면, DBA는 매년 partitioning된 파티션에 사용자 별로 저장된 데이터에 대해 히스토리 테이블을 만들고, 별도의 작업 없이 데이터베이스 서버에 의해 그것들을 강제로 자동 partitioning 할 수 있다. partitioning 테이블에 대한 메타데이터는 INFORMATION_SCHEMA 데이터베이스에서 검색 가능, 새로운 시스템 테이블에는 인덱스 정보와 PARTITIONING 테이블을 쉽게 참조하도록 허가해 주는 내용이 추가되었다. ALL SHOW 명령은 partitioning 테이블과 인덱스 메타데이터를 볼 수 있도록 지원한다. EXPLAIN PLAN의 결과에는 MySQL 옵티마이져가 파티션에서 partitioning 테이블과 인덱스를 어떻게 엑세스하는지에 대한 분석 정보가 포함되어 있다. partitioning 테이블에서의 인덱싱 지원에는 one-to-one 스키마 안의 각 미러 파티션의 로컬 인덱스를 포함한다. 다른 워드에서 하나의 partitioning 테이블이 열 개의 파티션을 가지고 있다면, 그 테이블의 로컬 인덱스 역시 열 개의 파티션을 포함하고 있는 것이다. 모든 엔진(MyISAM, Archive, Cluster/NDB.Etc)은 MySQL에서 partitioning을 지원한다. 2018-11-16 쉽게 배우는 MySQL 5.x
term이 짧고 워드가 빈번한 곳에서는 Full-Text 검색을 하기 위해 부가적인 플러그인이 필요하다. ① MySQL의 Full-Text 검색능력은 5.1버전에서 데이터베이스에 저장된 비구조적 데이터에 대한 검색이 더 빠르고 더 낫게 개선되었다. ② Full-Text 검색은 MyISAM 엔진에서 거의 완벽하게 지원 되었으나, 5.1의 새로운 내용에 따라서 MySQL의 Full-Text 검색능력은 강력하게 확장 새로워진 플러그인의 능력은 MySQL 사용자에게 필요한 in-house 명확한 주소를 Full-Text 검색엔진이 찾을 수 있도록 해 준다. MySQL 플러그인 파서는 일반적인 워드 핸들링과 select의 경우처럼 어떻게 핸들해야 할지를 보여주는 예제와 함께 제공된다. term이 짧고 워드가 빈번한 곳에서는 Full-Text 검색을 하기 위해 부가적인 플러그인이 필요하다. 새로워진 Language 플러그인은 명확한 포맷의 데이터, 이를테면 Adobe PDF파일 같은 데이터를 검색하는데 뛰어난 능력을 제공한다. 2018-11-16 쉽게 배우는 MySQL 5.x
① 새로워진 MySQL 5.1은 XPath나 XML path lanuage를 지원 ② XPath의 주된 목적은 XML 문서의 주소 부분을 지원하기 위함이다. 기본적으로 문자열, 숫자, 그리고 boolean을 수월하게 사용할 수 있도록 제공, XPath는 non-XML syntax가 URI와 XML 속성 값을 XPath에서 쉽게 사용할 수 있도록 세밀하게 제공된다. XPath는 XML문서의 논리적 구조 같은 추상적인 구조에서 표면적인 syntax보다 더욱 잘 동작한다. ③ XPath는 트리노드의 XML 문서를 구성한다. 노드에는 다른 형식의 노드, 포함된 엘리먼트 노드, 속성노드, 그리고 텍스트 노드가 있다. ④ 기존의 XML 문서는 자유롭게 수정할 수 없는 BLOB 형식으로 제한되어 MySQL에 저장되었다. 현재 XPath의 지원이 가능한 5.1에서는 XML 문서의 컴포넌트를 수정할 수 있도록 향상되었다. 2018-11-16 쉽게 배우는 MySQL 5.x
뛰어난 성능 -MySQL 5.1은 최근 기업이 요구하는 데이터베이스 인프라구축에 있어서 지역성과 보안성을 유지하는데 보다 나은 효율을 향상시키기 위해 노력 중 가. 디스크 기반의 MySQL 클러스터 지원 ① MySQL 클러스터는 최상의 데이터베이스 성능을 보장하여 어플리케이션 환경을 만들어 준다. Share-nothing의 구조와 비슷한 환경을 사용하여, MySQL 클러스터는 자동으로 각 노드별로 데이터를 지속적으로 유지하므로 어플리케이션은 항상 데이터를 이용할 수 있다. ② MySQL 5.1에서는 메모리기반 MySQL은 디스크와 메모리에서 모두 실시간으로 데이터에 접근하여 운영할 수 있고 삭제될 수 있다. DBA는 메모리에 저장된 테이블 데이터를 디스크에 기술할 수 있으며, 디스크와 메인 메모리에 있는 데이터를 동기화 시킬 수 있다. ③ 디스크 기반에서 지원되는 것에는 디스크에서 논리적 하우스 테이블 데이터를 사용할 수 있는 새로운 저장방식과 구조 그리고 테이블 스페이스가 포함된다. 새로운 메모리 캐쉬는 반복적으로 계속 참조되는 데이터에 빠르게 접근하기 위해 메모리의 테이블 스페이스에서 위치하여 데이터의 이동을 관리한다. MySQL 클러스터는 5.1에서도 전체 메모리 기반에서 사용된다. 현재 이용할 수 없는 고성능의 메모리가 있으면 대용량의 데이터베이스들이 구동될 수 있었겠지만, MySQL 클러스터의 추가된 디스크 기반을 사용하면 이전에 없었던 데이터의 보호와 공간을 확보하는데 있어 동일한 효과를 볼 수 있다. 2018-11-16 쉽게 배우는 MySQL 5.x
라. MontaVista를 지원하는 MySQL 클러스터 어떤 어플리케이션은 고성능의 환경과, 다른 데이터베이스에서 안정적으로 연결되는 데이터의 리플리케이션을 요구한다. 또는 회선을 통해 다른 지역의 데이터베이스로 데이터를 옮기는 과정을 요구하기도 한다. MySQL 5.1에서는 일반적인 MySQL 서버에서 MySQL 클러스터를 리플리케이션 데이터와 함께 쉽게 설치하고 확장할 수 있게 되었다. 다. Row 기반의 리플리케이션 ① MySQL 5.1 이전에는, 마스터와 슬레이브 서버 사이에서 statement 기반의 리플리케이션은 마스터 서버에서 실행된 DML과 DDL이 하나 이상의 슬레이브 서버에 복사되기 때문에 실행된 statement가 전송된다. ② Statement 기반의 리플리케이션은 다양한 어플리케이션이 동작하는 상황에서 매우 빠르고 안정적이며 효과적으로 운영되지만 랜덤한 운영과 시간상의 제약을 받음 ③ MySQL 5.1의 Row 기반의 리플리케이션은 마스터 서버에서 실행되어 변화된 데이터의 Row를 복사하는 리플리케이션 방식이다. DML SQL문장 대신에 데이터 Row를 복사는 것이다. DDL이나 보안상의 변화에 대해서는 아직 statement 기반의 리플리케이션이 적용된다. MySQL의 새로운 configuration 옵션에는 쉽게 리플리케이션을 사용할 수 있도록 DBA가 옵션을 기술할 수 있다. 라. MontaVista를 지원하는 MySQL 클러스터 MontaVista는 Carrier-Grade Linux에서 임베디드나 임베디드 계열의 어플리케이션을 사용할 수 있도록 지원하는 플랫폼 중의 하나이다. MySQL 5.1에서는 MontaVista 플랫폼에서 MySQL 클러스터를 지원하기 시작했다. 2018-11-16 쉽게 배우는 MySQL 5.x
-개발자나 DBA들은 반복적인 데이터베이스 작업을 위해 항상 좀 더 쉬운 작업 스케쥴러를 찾는다. 관리능력 사용자들에게 MySQL을 선택할 수 있도록 데이터베이스의 관리를 항상 쉽고 편하게 할 수 있도록 성능강화에 대해 지속적으로 노력하고 있다. 가. 작업 스케쥴러 -개발자나 DBA들은 반복적인 데이터베이스 작업을 위해 항상 좀 더 쉬운 작업 스케쥴러를 찾는다. -Unix나 Linux 서버에서는 cron을 사용하여 각 작업을 처리하지만, 데이터베이스 중심의 운영을 하는데 몇 가지 제약이 따른다. 이것은 Microsoft의 윈도우에 존재하는 스케쥴러 또한 마찬가지다. -MySQL 5.1에서는 데이터베이스에서 사용자들이 SQL기반의 작업(이벤트 호출등)을 생성하여 실행할 수 있도록 내부적으로 스케쥴러를 제공한다. -DBA나 개발자들은 이것을 통하여 다른 스케쥴링을 아주 많이 처리할 수 있다. -작업에 대한 메타데이터는 MySQL의 information schema data dictionary에서 참조할 수 있다. 2018-11-16 쉽게 배우는 MySQL 5.x
-Alter Table 명령은 MySQL 클러스터의 테이블에서 빠르고 뛰어난 성능을 보임 나. MySQL 클러스터의 더욱 빨라진 ADD/DROP 인덱스 -각 클러스터 노드로 인덱스의 추가기능이 개선되어 더 빠른 수행속도를 얻음 -효과적으로 테이블 인덱스를 삭제 다. 새로워진 MyISAM 성능 옵션 -새로운 옵션인 myisam_use_mmap은 MyISAM 테이블에 read, write 명령을 위해 메모리와 매핑하는 기능을 제공 -어플리케이션 시나리오에서 많은 성능상의 장점들을 실감 -5.1에서는 기본적으로 이 옵션은 off로 설정되어 있다. 라. 새로운 성능 테스트 유틸리티 -mysqlslap는 DBA나 개발자에게 미리 정의된 SQL 문장에 의해 MySQL 서버의 동작 상태와 load를 보여주는데 이것은 mysqlslap를 통해 한 명에서 다수의 사용자가 접속했을 때 발생하는 이슈를 생성한다. 마. 더욱 편리해진 SQL 문제 확인 -MySQL은 MySQL 서버에 발생하는 모든 이슈를 DBA가 추적(trace) -DBA에게 인덱스를 사용할 수 없는 SQL이나 미리 설정된 실행 시간을 초과하는 쿼리들을 확인(MySQL 5.1이전에는 DBA가 직접 에디터와 OS 파일을 이용하여 이 정보를 확인) -5.1버전에서 traced SQL은 SQL을 통해 쉽게 시스템 테이블에 보낼 수 있다. 2018-11-16 쉽게 배우는 MySQL 5.x