본문 바로가기

Database17

MariaDB 설치 및 설정 AWS 를 쓸 수 있다면 Aurora가 정답이지만, IDC를 쓰고 있다면 MariaDB 혹은 MySQL을 직접 설치해서 사용할 필요가 있습니다. 여기선 IDC 환경에서 MariaDB 운영을 위해 필요한 기본 설정들과 설치를 진행해보겠습니다. 1. OS 설정 저 같은 경우 별도로 IDC 장비를 사용하지 못하여 AWS EC2에 직접 설치하며 사용할 예정입니다. Centos 6을 쓰신다면 거의 비슷한 명령어로 수행할 수 있습니다. 1-1. ulimit 수정 다음으로 ulimit 설정을 합니다. ulimit에 대한 자세한 내용은 예전에 작성한 글을 참고해보세요. 아래 파일을 열어 확인해봅니다. vim /etc/security/limits.conf 아래와 같이 전체 사용자의 nofile 옵션을 추가합니다. * s.. 2019. 11. 17.
MariaDB ERROR 1524 Plugin is Not Loaded 문제 해결 MariaDB를 설치하던 중에 root 계정의 비밀번호 설정을 잘못할 때가 있습니다. 그럼 아래와 같이 접속 시도시마다 에러가 발생합니다. ERROR 1524 (HY000): Plugin '잘못된 플러그인' is not loaded 이 문제를 해결해보겠습니다. 1. 해결 서버에 접속해 root 계정으로 전환합니다. sudo su - root 이제 실행하는 모든 명령어는 sudo가 생략되었다고 생각하시면 됩니다. 정상적인 MariaDB 실행으로는 위와 같이 플러그인 에러가 계속 발생합니다. 그래서 이럴때를 대비해 mysqld_safe (일종의 윈도우에서 안전모드 같은 거라 생각하시면 됩니다.)를 사용합니다. 아래 명령어로 실행해봅니다. mysqld_safe --skip-grant-tables & enter.. 2019. 11. 17.
[mysql] Failed to read auto-increment value from storage engine 해결 방법 Mysql을 운영하다보면 아래와 같은 에러 메세지를 발견할 때가 있습니다. Caused by: java.sql.SQLException: Failed to read auto-increment value from storage engine 이는 Mysql 테이블의 상태값 중 auto-increment 에 문제가 발생했기 때문입니다. 문제에 대한 확인은 아래 쿼리로 확인합니다. show table status like '테이블명' 그럼 아래와 같이 Auto_increment필드가 이상함을 알수 있습니다.실제로 이 테이블의 Auto_increment 최신값은 60이기 때문이죠.그래서 새로 생성되어야할 값은 61인데, 실제 Status 테이블에는 0으로 되어있으니 오류가 발생하게 됩니다. 해결책은 간단합니다. 강.. 2019. 5. 14.
[mysql] Percona pt-online-schema-change 설치 및 사용하기 Mysql에서 몇억건 이상의 대량의 데이터를 갖고 있는 테이블을 update 하는것은 쉬운일이 아닙니다. 단순히 alter table을 해버리면 4시간, 5시간 이상 수행되기 떄문인데요. 이를 해결 하기 위해 create select 방법을 사용하곤 합니다. 참고: MySQL 대용량 테이블 스키마 변경하기 하지만 이 방법에는 큰 문제가 있는데요. FK (Foreign Key) 변경이 어렵습니다. FK는 기존에 맺어져있던 테이블에 계속 유지되기 떄문입니다. 이외에도 여러 문제들이 있는데, 이를 해결하기 위해 percona의 pt-online-schema-change을 사용할때가 많습니다. 이번 시간에는 이 pt-online-schema-change 사용법을 정리하겠습니다. percona는 XtraBacku.. 2018. 12. 12.
[mysql] 대용량 테이블 스키마 변경하기 데이터가 100만, 1000만 정도일때 테이블 스키마 변경은 alter table로 가능했습니다. 천만건이라도 alter table은 5분안에 끝났기 때문입니다. 하지만 1억건이 넘어가면 이야기가 달라집니다. 3~4시간동안 진행될수도 있기 때문에 다른 방법으로 진행해야합니다. (대단한 방법은 아닙니다^^;) 간단한 내용이지만 필요하실 분들이 계실것 같아 작성하였습니다. 본문 전체적인 과정은 간단합니다. 복사테이블 생성 -> 복사테이블에 원본 테이블 데이터 복사 -> 테이블 이름 변경 순으로 진행됩니다. 그 사이에 짜잘한 내용들을 추가하였습니다. 모든 내용은 정기점검 등으로 외부에서 DB 사용이 중지된때라는 가정하에 진행합니다. 소개드리는 방법이라 하더라도 40~50분정도의 시간이 필요합니다. 1. 기존 .. 2017. 11. 8.
[mysql] 인덱스 정리 및 팁 MySQL 인덱스에 관해 정리를 하였습니다. MySQL을 잘 알아서 정리를 한것이 아니라, 잘 알고 싶어서 정리한 것이라 오류가 있을수도 있습니다. 1. 인덱스란? 인덱스 == 정렬 인덱스는 결국 지정한 컬럼들을 기준으로 메모리 영역에 일종의 목차를 생성하는 것입니다. insert, update, delete (Command)의 성능을 희생하고 대신 select (Query)의 성능을 향상시킵니다. 여기서 주의하실 것은 update, delete 행위가 느린것이지, update, delete를 하기 위해 해당 데이터를 조회하는것은 인덱스가 있으면 빠르게 조회가 됩니다. 인덱스가 없는 컬럼을 조건으로 update, delete를 하게 되면 굉장히 느려 많은 양의 데이터를 삭제 해야하는 상황에선 인덱스로 지.. 2017. 11. 5.