본문 바로가기

MariaDB에 해당하는 글들

10 Articles matched
목록이 없습니다.
[MySQL/MariaDB] URL Decoder 함수 만들기 클라이언트 요구사항 클라이언트의 요구사항 중에 서비스 페이지에 접근되는 사용자들의 아이피, 어떤 브라우저, 모바일인지 PC인지, 어떤 파라미터를 던지는지를 DB로 저장해서 보고싶어하는 경우가 있습니다. 이 때 파라미터를 querystring으로 구성하면 URL로 구성이 되기 때문에 인코딩을 해주어야 파라미터에 따라 에러가 발생할 것을 미리 발생하지 않게 예방이 가능합니다. 하지만 이렇게 인코딩 된 상태로 DB에 저장이되면 클라이언트가 보고 싶던 파라미터는 어떤 값인지 알 수 없게 됩니다. 이 때 쿼리를 조회해올 때 URL Decoder 함수를 만들어서 해당 함수로 디코딩을 하여 클라이언트에게 결과를 전달해주면 됩니다. MySQL / MariaDB URL Decoder 함수 DELIMITER | CREAT..
[MySQL/MariaDB] 서버 시작 에러 에러 내용 root@db-server:~# systemctl status mariadb.service ● mariadb.service - MariaDB 10.5.8 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/mariadb.service.d └─migrated-from-my.cnf-settings.conf Active: failed (Result: exit-code) since Mon 2021-05-31 11:14:34 KST; 24s ago Docs: man:mariadbd(8) https://mariadb.com/..
[MariaDB] Master-Slave replication 서버 구축 Database를 만들고 나서 혹시 모를 DB서버장애에 대비하기 위한 예방책으로는 여러가지 방법이 있습니다. 그중에 가장 기본적이고 효과적인 대비책은 바로 백업(backup)인데요. 백업 방식에도 여러가지 방식이 있습니다. linux 기반 DB 서버라면 스케줄러인 cron을 이용해서 주기적으로 덤프파일을 생성할 수도 있고 아니면 오늘 정리할 master-slave 설정을 통해서 복제(replication)하여 장애에 대비하는 방법이 있습니다. 위에서 언급했다시피 오늘은 master-slave를 설정해서 DB를 백업하고 master는 write만, slave는 read만 하는 분산처리를 통해 약간의 성능향상을 노릴 수 있는 방법을 정리해보려고 합니다. 우선 master와 slave가 같은 서버 즉, 하나의..
[MySQL/MariaDB] Error 2020: Got packet bigger than 'max_allowed_packet' 상황 insert 하는 경우 제목과 같은 에러가 발생하는 경우가 있는데 이 경우 Client와 Server사이에 주고 받을 수 있는 packet의 사이즈가 정해져있는데 아무 설정도 해주지 않았다면 기본값이 들어가있을것입니다. 보통은 1M이 기본값입니다. 문제를 해결하기 위해서는 max packet 사이즈를 늘려주어야하는데 그 설정값이 에러메시지에도 나와있는 max_allowed_packet입니다. 설정 방법은 아래 두가지입니다. my.cnf 수정 my.cnf ... [mysqld] max_allowed_packet = 128M ... 옵션 지정 아래와 같이 mysql 명령문 수행 시 옵션을 지정해줄 수 있습니다. mysqldump 명령어를 통해서 DB 덤프를 생성할 때는 my.cnf에 설정된 값이 적용되..
[MySQL] ERROR 1118 (42000) : Row size too large (> 8126). Changing some columns to TEXT or BLOB my help. In current row format, BLOB prefix of 0 bytes is stored inline. 제목과 같은 에러가 발생한 경우 mysql이나 mariadb에서 어떤 특정 테이블의 전체 column의 크기를 합친게 mysql이나 mariadb에 설정된 테이블당 최대 크기를 넘은 상태를 의미한다. 정확히는 Engine이 innodb로 된 테이블의 최대 크기를 의미한다. 이럴때는 해결방안이 2가지가 있다. 해결방안 1 에러 로그에도 나와있는 방법으로, varchar로 선언되어있는 컬럼들 중에서 크기가 큰 컬럼의 데이터 타입을 TEXT나 BLOB으로 변경해주는 것이다. TEXT나 BLOB타입은 테이블 데이터에 저장되지 않고 별도의 공간에 분리되어 저장된다고 한다(?) 정확히 무슨 의미인지는 아직 잘 모르지만.. 이렇게 함으로써 해결할 수 있다. 해결방안 2 my.cnf(my.ini) 설정을 수정해준다. ..
[MySQL/MariaDB] 데이터베이스 용량 보기, 테이블 별 용량 확인 서버 관리를 하다보면 어떤 데이터베이스의 용량의 얼마나 되는지 또는 어떤 테이블의 용량이 얼마나 되는지가 궁금할 때가 생깁니다. 이런 경우에 서버에 접속하지 않고 쿼리만으로 알 수 있는 방법이 있어서 정리해보려고 합니다. 데이터베이스별 용량 확인 SELECT table_schema "Database Name", SUM(data_length + index_length) / 1024 / 1024 "Size(MB)" FROM information_schema.TABLES GROUP BY table_schema; 테이블별 용량 확인 SELECT concat(table_schema,'.',table_name), concat(round(data_length/(1024*1024*1024),2),'G') DATA, c..
[MySQL/MariaDB] 특정 컬럼의 특정 순서대로 정렬하기 (내맘대로 정렬하기) 쿼리를 통해 DB에서 조회를 할 때 내가 원하는 순서대로 구체적으로 말하자면 특정 필드의 순서대로 정렬을 하고 싶은 경우가 있습니다. 이런 경우 ORDER BY 절에 FIELD라는 키워드를 통해서 구현할 수 있는 방법을 정리해보려고 합니다. ORDER BY FIELD 예를들어 다음과 같은 구조의 테이블 TB_EXAMPLE이 있다고 가정을 해봅니다. TB_EXAMPLE SEQ, NAME, STATUS 데이터는 아래와 같다고 가정합니다. (1, 'TEST1', 'ST01') (2, 'TEST2', 'ST01') (3, 'TEST3', 'ST01') (4, 'TEST4', 'ST03') (5, 'TEST5', 'ST02') (6, 'TEST6', 'ST01') 이런 상황에서 보통 STATUS라는 컬럼을 기준으..
[MYSQL, MARIADB] log 생략 (disable logging) mysql나 mariadb를 사용하여 데이터를 저장하는데 엄청난 양의 데이터를 insert하는 경우가 생겼습니다. 그런데 DB서버에 DB만 존재하는것이 아니고 Elasticsearch며 여러 다른 어플리케이션이 함께 올라가있었는데 ES에서 가장 먼저 반응이 왔습니다. disk가 95% 이상 사용중인 상태가 되어버리면 ES에서는 모든 인덱스를 read-only 상태로 전환이 되는 현상이었습니다. 그래서 디스크가 저렇게 많은 용량을 점유하게 된 원인을 찾아보니 mariadb의 log에 있었습니다. mariadb는 insert나 update 즉 DML 을 사용하게 되면 undo를 위해서 많은 log를 쌓게 되는데요, 만약 대용량 데이터를 쌓는데 저처럼 log가 필요없다거나 하는 경우 log를 생략(disabl..