MySQL

MySQL 8.4 LTS 컴파일 설치

MySQL 8 에서 버전관리에 변화가 있었다. MySQL 도 이제는 LTS 버전과 그렇지 않은 버전으로 나누어 릴리즈 된다고 한다. MySQL 8.4 LTS 에서 변경사항이 있다. 설치는 Ubuntu 22.04 에서 진행 되었다. 의존성 패키지 설치 MySQL 8.4 는 GCC 10 버전 이상을 필요로 한다. 그래서 Ubuntu 20.04 에서는 설치할 수 없다. 다음과 같이 의존성 패키지를 설치한다. Configure WITH_BOOST, DOWNLOAD_BOOST 옵션이 없어졌다. 추가로 FIDO 관련해 설정을 해줘야 한다. 사용하지 않는다면 none 으로 지정해줘야 한다. 에러가 발생한다면 다시 해줘야 하는데, 다음과 같이 파일과 디렉토리를 […]

MySQL

MySQL 모니터링을 위한 계정 권한

MySQL 에서는 각종 지표등을 제공하는데, 이러한 지표를 얻기 위해서는 MySQL 계정이 있어야 한다. 대부분 MySQL 계정을 생성하고 권한을 주는데, 습관처럼 “ALL PRIVLEGES” 를 주는 경우가 많다. 하지만 모든 시스템에서 계정은 최소한의 필요한 권한만 주도록 하는 것이 보안의 시작이다. 이 문서는 MySQL 모니터링을 위한 계정 권한에 대해 다룬다. 계정생성 MySQL 8.0 기준으로 계정 생성은 다음과 같다. 이렇게 생성을 하고 난 후에 이제 GRANT 명령어를 이용해서 권한을 줘야 한다. 모니링을 위한 권한 부여 ‘ALL PRIVILEGES’ 로 모든 권한을 줘는 안되며 모니터링을 위한 […]

Java

Error – The server time zone value ‘KST’ is unrecognized

Java 와 MySQL 을 연동하는 상황에서 다음과 같은 오류를 만나기도 한다.

자세히 보면 java.sql.SQLException 이 보인다. 이 경우는 결국에는 데이터베이스쪽에 문제가 있다는 것이며, MySQL을 사용할 경우에 보이게 된다. 이는 MySQL의 시간을 나타내는 타임존 설정이 맞지 않아 생기는 오류다. MySQL 5.7, MariaDB 10 MySQL 5.7 과 MariaDB 10 을 사용한다면 my.cnf 에서 다음과 같이 설정함으로써 문제 해결이 가능하다.

설정할 수 있는 타임존 리스트는 MySQL 메뉴얼을 참조하기 바란다. 이렇게 했는데도 다음과 같은 오류를 만날 가능성도 있다.

이럴때는 다음과 같이 […]

MySQL

MySQL 8 설치하기

MySQL 8 은 그동안의 버저닝을 버린 최초의 메이저 버전 업데이트라고 할 수 있다. 그만큼 기념할 만큼 큰 변화를 예고했던 버전이며 실제로 많은 변화가 있었다. MySQL 8 의 설치는 5.7 과 크게 차이가 없다. 컴파일 옵션

컴파일러 옵션중에 스토리지 엔진관련해서 변경사항이 있었다. InnoDB, MyISAM, MERGE, MEMORY, CSV 엔진은 이제 기본이 됐다. 명시적으로 지정할 필요가 없다. 엔진 옵션으로 ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED 등을 선택할 수 있다. -DMUTEX_TYPE 옵션으로 InnoDB 에 대한 뮤텍스 타입을 지정하는 건데, 기본값으로 event 다. 이를 위해서 libevent […]

MySQL

MySQL 5.7 소스 설치

이 문서는 MySQL 5.7 소스 설치 문서 입니다. Boost 라이브러리 MySQL 5.7 로 넘어오면서 GIS관련해 기능과 InnoDB Engine 에서 R-tree indexes 가 포함되었다. geometry compute 위한 많은 native code 들로 작성이 되었는데 이를 위해서 Boost.Geometry 를 이용했다. 따라서 소스 설치시에 이 라이브러리를 필요로한다. Boost 라이브러리를 컴파일 단계에서 다음의 옵션으로 알려줄 수 있다. -DWITH_BOOST: Cmake 컴파일러에게 Boost 지점를 알려준다. Boost 지점은 다음의 셋중에 하나여야 한다. tarball/zip 파일 tarball/zip 파일을 포함하는 디렉토리 tarball/zip 파일을 압축해제한 디렉토리 -DDOWNLOAD_BOOST: boolean 값으로 Boost tarball/zip 파일을 자동으로 다운로드 받게 할지 말지를 […]

MySQL

MySQL 5.7 초기화 오류 메시지

MySQL 5.7 이 릴리즈 된지도 오래 지났다. 인기 있는 데이터베이스 시스템이라서 그런지 현장에서 많이 쓰이는 거 같다. 무엇보다도 Replication 기능의 향상이 많은 사용자를 끌어들이는 느낌이다. 이 글에서는 개인적으로 MySQL 5. 7 를 사용하면서 느낀 변화에 대해서 기술하고자 한다. 변화에 대한 기술은 MySQL 5.6 과 비교한 것이다. 데이터베이스 초기화 기존에는 mysql_install_db 를 사용했지만 이제는 mysqld 에 옵션으로 –initialize 를 주고 실행하면 시스템 데이터베이스와 테이블, innodb 저장소등을 만들어준다.

기존의 MySQL 5.6 에서 사용하는 my.cnf 파일을 가져다 초기화를 하면 위와 같이 warining […]

MySQL

MySQL USING VS ON 차이.

MySQL에서 JOIN 을 사용할때에 USING 이나 ON 을 사용한다. 결과적으로 뽑고자 하는 데이터는 모두 동일한데 과연 이둘의 차이는 무엇일까? 첫째로 사용법에서 차이가 있다. USING 은 두 테이블간 필드이름이 같은 경우에 사용한다.

employees 와 salaries 를 조인(JOIN)하는데 emp_no 를 키가 양쪽 테이블에 모두 있기 때문에 USING 을 사용할 수 있다. 하지만 만일 조인시에 컬럼 이름이 다를 경우에는 ON 을 사용한다. 물론, 컬럼 이름이 같은 것을 기반을 조인을 할때도 ON 을 상용해도 된다.

MariaDB

Xtrabackup 을 활용한 Replication 설정

Xtrabackup 을 이용한 Slave 추가 하기. Master 에 Slave 를 추가해야 하는데, Online 상황에서 추가하기는 쉽지가 않다. 대부분 mysldump 를 이용해서 추가 하는 방법이나, mysql data 디렉토리를 압축해서 해제하는 방법을 쓰거나 둘중 하나이다. 하지만 이렇게하면 Online 상태를 유지할 수 없다. Online 상태를 유지면서 Master 의 데이터를 옮기는 방법으로는 Xtrabackup 을 이용하는게 제일 좋다. 먼저, Xtrabackup 툴을 Master 와 Slave 서버에 모두 설치해 준다. 그리고 Master 서버에 다음과 같이 백업을 위한 계정을 생성한다.

그리고 두가지를 생각해봐야 한다. 먼저 새롭게 준비된 […]

MySQL

[번역] 5.6과 5.7 사이의 MySQL 기본 설정 변경.

이 글은 다음의 글을 번역한 것입니다. 전문 번역자가 아니기에 오류가 있음을 미리 밝힙니다. https://www.percona.com/blog/2016/09/14/mysql-default-configuration-changes-between-5-6-and-5-7/ 이 블로그에서, 우리는 MySQL 5.6 과 5.7 사이에 기본 설정값의 차이에 대해 논의할 것이다. MySQL 5.7 은 여러분이 기대했던 다양한 새로운 기능이 추가되었다. 하지만, 현재 변수들 또한 알게모르게 변화가 있었다. MySQL 5.7은 5.6으로부터 거의 40개의 기본값이 변경되었다. 어떤 바뀐값들은 여러분의 서버 성능에 아주 크게 영향을 줄 것이고 어떤것은 알지도 모르체 넘어갈 거다. 나는 각각의 변화가 무엇이고 어떤 의미인지를 살펴볼 것이다. sync_binlog 와 같은 값들은 여러분의 서버에 […]

Tomcat

Apache Tomcat JNDI 설정

Apache Tomcat 도 JNDI 설정을 할 수 있다. 특히나 데이터베이스 연결을 위해서 JNDI 설정을 사용할 수 있다. JNDI 를 사용하면 Web Application 내에서 데이터베이스 연결을 할 필요가 없이 네이밍(Naming) 을 호출함으로써 간단히 해결된다. 이 문서에서는 MySQL 을 위한 Apache Tomcat JNDI 설정 에 대한 것이다. MySQL Connector/J 설치 JNDI 를 이용해서 MySQL 연결을 설정하기 위해서는 MySQL Connector/J 를 먼저 설치해줘야 한다. 이것은 MySQL 홈페이지에서 다운로드 가능한데 파일이 jar 확장자를 가진 하나의 파일이 필요하다. 이 파일을 Apache Tomcat 라이브러리 디렉토리에 복사해주면 […]