■ MySQL 바이너리 로그 ▶ 바이너리 로그란?? MySQL 서버에서 Create, Drop, Alter같은 DDL과 Insert, Update, Delete같은 DML을 통해 데이터베이스, 오브젝트, 데이터에 생성,수정,업데이트를 했을 시 그 변화된 이벤트를 기록하는 이진 파일이 있는데 이것을 바이너리 로그라고 합니다. show나 select등 조회 문법은 제외됩니다. 이 바이너리 로그는 두가지 중요한 용도가 있습니다. 그 두가지 용도는 다음과 같습니다. 1. 복제 구성에서 사용 MySQL에서는 복제라는 부하분산 기능을 제공하는데 이때 바이너리 로그를 사용합니다. 이 바이너리 로그는 마스터라는 서버에서 생성되고 슬레이브란 서버는 마스터 서버에 접속하여 이 마스터의 바이너리 로그를 읽어와서 똑같이 그 ..
SELECT... INTO Outfile과 Load Data는 쌍으로 이어지는 데이터 언로드와 데이터 로드 문법입니다. 둘다 mysql 커맨드 인터페이스 프로그램에서 수행됩니다. 문제가 자주 발생되는 테이블(사용자의 데이터 삭제나 엔진문제로 인한 크래쉬)에 대해 데이터베이스 레벨로 덤프를 받기는 부담스러울때 백업용도로 받거나 데이터 이관, 혹은 마이그레이션 같은 특정 용도로 사용할때 좋습니다. ■ mysqldump와 SELECT...INTO Outfile 문법의 차이점. mysqldump와 같이 SELECT...INTO문법은 테이블 데이터를 덤프하지만 차이는 mysqldump는 Query 문법으로 Database를 덤프하지만 SELECT...INTO Outfile문법은 순수하게 데이터만 덤프합니다. 다음..
■ 백업의 중요성 데이터베이스 운영에 있어서 백업은 매우 중요한 작업중 하나입니다. 의도치 않은 장애나 작업중 삭제로 인해 문제가 생겼을 때 유일하게 복구할 수 있는 방법이 백업이기 때문입니다. 평소에 문제없이 잘 운영되고 장애도 한번 터지지 않은 시스템이라고 백업을 사소히 여기다가 단 한번의 문제때문에 백업이 아쉬운 경우가 굉장히 많이 있습니다. 두가지 정도로 축약해보면 다음과 같은 것들이 있을 것입니다. # 물리적인 이유-시스템의 갑작스런 이상증상, 스토리지 문제, 운영체제 문제, 파일 시스템 문제, 그외 기타 이유 # 논리적인 이유-중요한 데이터의 삭제 혹은 변경, 이전 데이터 확인, 기타 여러 이유. 백업은 시스템을 지켜줄 수 있는 최후의 보루이자 단 한번의 장애를 해결하기 위해 늘 준비하는 작업..
■ MySQL 보안접속 MySQL을 접속할때 일반적인 접속 방법으로 접속하면 해커들에 의해서 해킹을 당하기 쉽습니다. 물론 내부망 통신이나 방화벽 구축 등등 내부 보안 시스템으로 안전하게 하고 계시겠지만 어쨌든 보안 접속이 아닌이상 일반 접속으로 아이디 패스워드 입력시 전송 패킷 내용을 보면 평문으로 나옵니다. 이는 문제가 될 수 있기도 합니다. 그래서 이번에는 SSL/TSL을 이용해서 평문이 아닌 암호문으로 서버와 클라이언트간에 통신을 하는 방법을 알아보도록 하겠습니다. ■ SSL 환경설정 방법 ▶︎ 서버환경설정 서버 파라미터인 --ssl을 mysqld로 시작할때 옵션 사용으로 시작합니다. 기본값이 사용이기 때문에 특별히 ‘사용안함’으로 지정하지 않는 한 사용으로 설정됩니다. mysqld(mysqld_..
MySQL 설치와 환경설정이 끝났다면 다음은 사용자들 혹은 Application들이 접속할 수 있는 환경을 만들어 주어야 합니다. 흔히 계정이라 불리는 이것을 생성할때는 많은 고민을 가지시고 설정하여야 합니다. 데이터베이스 안의 테이블에는 수많은 데이터들이 있고 이 안에는 개인정보가 있을수도 있으며 각 접속 계정정보도 있습니다. 이런 정보들을 의도치 않는 사용자가 접속해 정보를 탈취해 간다면 개인정보에 의해 처벌받을 수도 있습니다.(상용 서비스 DB일경우) 그래서 계정관리는 꼼꼼히 권한 레벨에 맞게 부여되고 사용되어져야 합니다. 그리고 네트워크단에서도 데이터 통신이 이루어질때 암호화되는지도 체크해 보셔야 합니다. 밑에 데이터가 암호화되지 않을시 데이터가 어떻게 흘러가는지 눈으로 직접 확인해 보실 수 있습..
■ mysqld_multi - 다중 MySQL 서버 관리 mysqld_multi는 서로 다른 유닉스 소켓 파일과 TCP/IP 포트상에서 연결을 기다리는 mysqld 프로세스를 관리하기 위한 쉘 스크립트 프로그램입니다. 이것은 MySQL서버를 시작할수도 있고 종료할 수도 있으며, 또는 서버의 현재 상태를 보고할 수도 있습니다. MySQL 인스턴스 매니저는 다중 서버를 관리하는 것을 달리 의미하는 용어입니다. mysqld_multi 는 my.cnf (또는 --config-file 옵션으로 이름 붙여진 파일)에서 [mysqldN]라는 이름의 그룹을 검색합니다. N는 모든 양수 정수가 될 수 있습니다. 이 번호는 다음의 섹션에서 옵션 그룹 번호 또는 GNR로 참조됩니다. 그룹 번호는 각 그룹을 구분하며 여러분이..
■ MySQL Log란 DBMS에서는 자신의 상태를 기록하기 위해 로그라는 방법으로 자신의 상태를 기록합니다. MySQL에서도 마찬가지로 여러가지 로그를 제공합니다. 시스템에 관련된 로그, 복제를 구성하기 위해 사용되는 바이너리 로그, 시스템 에러에 관련된 로그, SQL 성능에 관련된 로그까지 여러가지 로그들을 제공합니다. MySQL에서 제공되는 이 로그들에 대해서 자세히 한번 알아보겠습니다. ■ MySQL Log종류 MySQL에서 제공되는 로그들이 어떤것들이 있으며 어떤 역활을 하는지 간단히 알아보겠습니다. + Error Log mysqld의 시작, 운영, 종료때 나오는 문제들을 작성합니다. + General query log 클라이언트로부터 접속된 접속 내용과 수행된 SQL문법을 기록합니다. + Bi..
■ MySQL 8.0 업그레이드시 참고할 사항들. MySQL 5.7에서만 지원됩니다. MySQL 5.6에서는 지원하지 않습니다. MySQL 5.6에서 8.0으로 업그레이드 하려면 2번의 과정을 거쳐야 합니다. MySQL 5.7로 업그레이드 후 8.0으로 업그레이드 해야 합니다. ■ MySQL 8.0 업그레이드 진행순서 MySQL5.7에서는 엔진 교체 후 시작전에 mysql_upgrade를 수행시켜 시스템 관련 데이터 베이스와 유저 관련 데이터베이스를 업그레이드를 시켰습니다. 그러나 8.0은 조금 다릅니다. 시스템 스키마와 유저 관련 스키마를 업그레이드 시는것은 같습니다. 그러나 자동으로 된다는것이 틀립니다. MySQL 5.7이하 버전은 mysql_upgrade를 수동으로 수행해서 업그레이드를 해야 했지만..
MySQL설치 후 제공하는 프로그램들이 여러가지가 있습니다. 개인적으로 생각하기엔 잘 알려지지 않은것들도 있다고 생각합니다. 이번기회에 제공되는 프로그램들을 정리해보면서 어떤것들이 있고 이런 유용한 기능들이 있다는것을 공유해보고 싶어서 이렇게 실습을 통해 정리해 보고자 합니다. ■ MySQL서버 및 서버 시작에 관련된 프로그램들 + mysqld MySQL의 핵심 프로그램으로 data 디렉토리를 읽어 제어하는 메인 프로세스 입니다. MySQL에서 가장 중요한 프로그램이라 할 수 있습니다. 이 프로그램이 수행할 수 있는 목록을 확인해보고 싶다면 다음과 같이 명령을 입력해 보시면 됩니다. shell> mysqld --verbose --help + mysqld_safe MySQL을 소스 설치 후 한번 실행해 보..
MySQL 8.0 CentOS 7.x - Source MySQL에서 제공하는 Source를 이용해서 Compile 후 설치하는 방법입니다. MySQL 5.7에서도 이미 설명했던 설치 방법입니다. 전체 내용에서 필요 부분만 수정했습니다. 먼저 Source Code로 설치를 하기 위해선 OS에 몇가지 필요 Package(프로그램)을 설치해야 합니다. 이게 설치가 되어 있어야 Source Code가 Compile이 됩니다. 필요 Package는 다음과 같습니다. 한가지 유의 사항은 CentOS 7에서 사용하던 3가지정도의 패키지를 업데이트 해야 합니다. CMake 3.5.1 이상 gcc 5.4 이상 boost : 1.69 이상 cmake와 gcc는 설치하는 방법을 같이 첨부해서 설명합니다. ■ 필수 설치 패키..
1.패키지 다운로드를 위한 repository 설치 centos, rhel은 편리하게 yum이라는 패키지 매니저를 제공해줍니다. 이 패키지 매니저를 이용해서 설치하면 편리하게 설치가 가능합니다. 여기에서는 CentOS 7에서 설치하는 방법을 알아봅니다. 먼저 다음사이트에 접속합니다. https://dev.mysql.com/downloads/repo/yum/ 사이트에 방문 후 밑에 보시면 os에 따른 다운로드 버튼이 있는데 rhel6 혹은 7을 자신의 버전에 맞는 패키지로 다운로드 합니다. 참고로 centos6는 rhel 6, centos 7은 rhel7으로 받으시면 됩니다. 다운로드한 rpm패키지를 설치합니다. shell > rpm -Uvh mysql80-community-release-el7-3.noa..
■ DBMS에서의 메이저 버전과 마이너 버전. 데이터 베이스 벤더마다 메이저 버전과 마이너 버전이 있습니다. 먼저 메이저 업그레이드와 마이너 업그레이드는 근본적으로 다릅니다. 보통 메이저 버전은 대규모로 DBMS 스펙이나 엔진변경, 신규 기능 추가 등이 되었을때 주로 메이저 버전이 출시됩니다. 보통 몇년에 한번 나옵니다. 그런만큼 OS도 최소지원 사양을 만족해야 합니다. 또한 최신DBMS의 최고의 조합은 벤더사가 말하는 최적의 OS 버전입니다. 그 최적의 OS가 최신 버전이라면 가능하면 그 버전에 맞추는게 좋습니다. 벤더가 개발할때나 테스트했을때 그 버전이 가장 궁합에 맞기 때문입니다. 마이너 버전은 오류수정, 보안 이슈, 기능 변경, 혹은 기타 이유에 따른 긴급패치 발표등 주로 이슈에 대응하는 버전으로..