티스토리

Hello IT World!
검색하기

블로그 홈

Hello IT World!

letitkang.tistory.com/m

Letitkang의 IT 세상~

구독자
2
방명록 방문하기

주요 글 목록

  • [Mysql] ERROR 2006 (HY000): MySQL server has gone away 에러 ERROR 2006 (HY000): MySQL server has gone away MariaDB를 사용하다가 위의 에러가 간혹 뜨는걸 확인했습니다. 몇 십번을 테스트 해봤지만, 동작에는 문제가 없는걸 확인했습니다. 이 에러가 뜨는 원인을 구글링해본 결과, 총 3가지 정도로 좁혀집니다. 1. max_allowed_packet 설정 이 값은 클라이언트와 서버간의 전송 패킷 최대 크기입니다. 쿼리와 그에 대한 결과의 크기가 최대 패킷을 넘어버리게 되면 이 에러가 뜹니다. 이 값의 기본값은 16M입니다. 저의 경우 넉넉히 500M로 설정을 하였습니다. 2. timeout 설정 interactive_timeout이란 값이 있는데, 이 값은 클라이언트와 서버가 접속을 한 후, 다음 요청을 기다리는 최대 시간입니다.. 공감수 0 댓글수 2 2023. 12. 5.
  • [Mysql] MariaDB 테이블의 PRIMARY KEY 값 추가/삭제/변경 저는 MariaDB를 사용하는데 테이블의 PRIMARY KEY 값을 변경할 경우가 있습니다. 간단히 알아보겠습니다. 테이블을 만들때 PRIMARY KEY를 설정할 수 있습니다 -테이블 만들기 CREATE TABLE 테이블명 ( 필드명 자료형 옵션, ... PRIMARY KEY (필드명,필드명) ); ex) CREATE TABLE computer( computer_id INT NOT NULL, cpu_name varchar(100) NOT NULL, mem_name varchar(100) NOT NULL, disk_name varchar(100) NOT NULL, PRIMARY KEY(computer_id) ); -테이블조회 desc computer; 위와 같이 테이블을 만들면 computer_id가 테이.. 공감수 0 댓글수 0 2023. 11. 1.
  • [Mysql] 속도가 느린 DB 쿼리 ( 슬로우 쿼리 ) 찾기 DB를 사용하다보면 성능에 대한 이슈를 겪을 수 있습니다. 대부분의 성능은 쿼리로 인하여 발생을 하고, 이를 디버깅하기는 쉽지 않습니다. mysql은 특정 시간안에 처리되지 않는 쿼리를 찾는 기능이 있습니다. 바로 slow query 입니다. 이 기능은 특정 시간(초)을 설정한 후, 이 시간안에 처리되지 못하는 쿼리를 로그 파일에 기록합니다. 리눅스에서 mariadb 서버에 접속한 후 아래의 명령어를 사용하게되면 설정 정보를 확인할 수 있습니다. MariaDB [(none)]> show variables like 'slow_query_%' 이 옵션은 따로 설정하지 않는 이상 OFF 되어 있습니다. 아래와 같이 설정을 한 후, mariadb를 재시작하면 적용됩니다. ]# vim /etc/my.cnf slo.. 공감수 0 댓글수 0 2022. 6. 20.
  • [Mysql] mysql dump로 백업/복구 하기 오늘은 mysql dump에 대해 알아보겠습니다. mysql dump는 쉽게말하면 현재 DB 상태를 저장하고 불러오는 기능을 가진 툴입니다. 예를들면 A장비에서 DB에 값 100개를 넣었습니다. B장비에서도 A장비랑 똑같은 DB를 사용하고 싶을 경우, dump를 이용하는 것입니다. 사용법에 대해 알아보겠습니다. *dump 저장 1) mysqldump -u root -p --all-databases > mysqldump_201110.sql -> root 계정으로 모든 db, data를 dump하고, mysqldump_201110.sql이라는파일을 만듭니다. 2) mysqldump -u root -p --all-databases --no-data > mysqldump_201110.sql -> 모든 db를 d.. 공감수 0 댓글수 0 2020. 11. 10.
  • [Mysql] UNION과 UNION ALL의 차이 오늘은 UNION에 대해 알아보겠습니다. UNION은 여러개의 SQL문을 합쳐 하나의 SQL문으로 만들어줍니다. 쉽게 말하면 두 쿼리의 합집합을 만들어줍니다. UNION과 UNION ALL은 UNION 기본의 역할을 하지만 차이점이 있습니다. UNION은 두 쿼리의 결과에서 중복되는 값을 삭제하여 나타냅니다. UNION ALL은 두 쿼리의 결과에서 중복되는 값을 모두 보여줍니다. 이것으로만 봤을 때, 속도는 UNION ALL이 더 빠릅니다. 중복체크를 하냐 마냐에 대한 처리 속도 때문입니다. 또한, 여기서 중복처리 하는 기준을 알아보겠습니다. 일반적으로 키, 칼럼 등을 생각할 수 있지만, 모든 컬럼 값들 자체가 중복체크의 기준이됩니다. UNION은 생각보다 속도가 느리기 때문이 많이 사용하지 않는 구문입.. 공감수 1 댓글수 0 2020. 8. 28.
  • [Mysql] log-bin 파일 관리 mysql에서는 사용한 쿼리들을 파일로 관리해주는 log-bin 기능이 있습니다. 보통 mysql replication에서 많이 사용합니다. 저도 mysql replication 때문에 사용을 하고 있고, 이로 인한 문제점을 겪어 봤습니다. 테스트용으로 사용할 때는 소량의 데이터 이기 때문에 문제가 없었습니다. 별로 신경도 쓰지 않았구요. 그러나 롱런, 대량의 데이터로 테스트를 했을 경우 한 가지 문제가 발생했습니다. 바로 파일 용량입니다. 일주일 동안 테스트를 돌려 놓고 확인 해보니 난리가 났습니다. 디스크 풀이 났더라구요. 다행히 개인 테스트를 했기에 망정이지, 실제 운용중인 사이트에서 이런 일이 발생했다면, 끔찍합니다. 제가 겪은 것이기 때문에 이를 글로 한번 정리해 보려고합니다. =========.. 공감수 0 댓글수 0 2020. 7. 28.
  • [Mysql] DB 성능 튜닝 설정 값 오늘은 DB의 성능 튜닝을 위한 값들에 대해 알아보겠습니다. 제일 쉬운 방법은 하드웨어 스펙을 개선하는 것입니다. 그러나 비용이들겠죠 ㅠ 이 비용을 아끼기 위해서는 설정 값을 튜닝해서 최적의 값을 찾아내야됩니다. 설정 값들은 정답이 없습니다. 직접 사용하면서 맞추어가야됩니다. 왜냐하면 사용하는 장비의 스펙은 다르고, 데이터의 양도 천차 만별이기 때문입니다. 이런 설정값을 잘못 세팅하여 문제가 발생할 수도 있습니다. 설정에 대한 것은 참고만 하시고, 운용중인 환경에 맞추어 설정하시기 바랍니다. -key_buffer_size 메모리에 있는 인덱스 블록에서 사용되는 버퍼의 크기를 나타냅니다. 또한, 이 값은 MyISAM 테이블에서 사용하고 있는 모든 쓰레드에서 공유하는 버퍼 크기이기도합니다. key_buffe.. 공감수 1 댓글수 0 2020. 7. 6.
  • [Mysql] INDEX란 오늘은 INDEX에 대해 알아보겠습니다. DB에서의 INDEX는 책의 목차에 비유됩니다. 보통 책의 앞쪽에는 목차가 있습니다. 이 목차를 보고 내가 보고싶은 페이지로 책을 넘겨서 볼 수 있습니다. 만약 목차가 없다면 앞에서부터 하나하나 넘겨가면서 찾아야됩니다. DB도 마찬가지입니다. INDEX가 없다면 DB도 특정 값을 찾을 때, 하나하나 찾습니다. 그러나 INDEX가 있다면, 특정 값을 기준으로 INDEX를 만들어 테이블에 저장을 하고, 그 테이블을 기준으로 값을 찾습니다. 몇천, 몇만개의 데이터라면 문제가 없지만, 몇백만, 몇천만의 데이터라면 INDEX를 꼭 쓰는걸 추천드립니다. 검색 속도 향상에 도움이 되어, 성능이 좋아집니다. 인덱스 쿼리는 아래와 같습니다. CREATE INDEX 인덱스명 ON .. 공감수 0 댓글수 2 2020. 6. 4.
  • [Mysql] sst란 sst는 state snapshot transter의 줄임말입니다. 이 것은 새로운 노드가 만들어 지고, 이 노드가 클러스터에 속하게 될 때 사용합니다. 노드가 클러스터와 동기화를 하려면, 클러스터 안에 있는 노드의 데이터를 새로운 노드로 전송해야합니다. 이러한 방법에는 mysqldump, rsync, xtrabackup 등이 있습니다. 각각의 장/단점을 고려하여 사용하면 되고, 선택하는 건 사용자의 몫입니다. mysqldump와 rsync는 데이터가 한 노드에서 다른노드로 복사 진행중일때는, 소스 데이터를 가지고 있는 노드는 읽기전용이 됩니다. xtrabackup는 읽기전용이 되지 않고 데이터를 복사합니다. galera를 사용할 때, wsrep_sst_method는 위의 3가지중 하나를 사용하면됩니다... 공감수 0 댓글수 2 2020. 5. 23.
  • [Mysql] wsrep란 wsrep는 쉽게 말하자면, DB에 쌓이는 데이터를 동기화시켜주는 모듈입니다. 여러개의 노드가 있고, 노드 들이 동기화를 하도록 구성이 되어 있을 때, 한 노드에 데이터변경이 있을 때마다, wsrep가 데이터를 다른노드로 복제시켜 줍니다. 조금 더 자세히 설명을 드리자면, wsrep는 Mysql의 InnoDB 엔진 내의 Write Set을 구현합니다. Write Set는 DB의 트랜적션을 기록하는 모든 데이터의 집합입니다. 노드간의 Write Set를 송/수신하거나, 통신을 하기 위해서는 또 다른 플러그인을 사용합니다. wsrep는 call/callback 함수를 사용하여 Write Set의 기능 동작을 수행합니다. 공감수 0 댓글수 2 2020. 5. 20.
  • [Mysql] Event Scheduler 설정 Mysql의 기능 중 하나인 Event Scheduler에 대해 알아보겠습니다. 이것은 리눅스의 crontab과 같이 주기적으로 특정 시간에 프로시저를 수행하는 것입니다. event에 필요한 쿼리 등록하게 되면, 특정 시간에 이 것을 수행하게 됩니다. DB에 많은 데이터가 쌓이게 되면, 주기적으로 데이터를 지워줘야할 필요가 있습니다. 이럴 때 많이 사용합니다. 사용법은 아래와 같습니다. 1. event scheduler 를 ON MariaDB [(none)]> SET GLOBAL event_scheduler = ON; 2. event shceduler 상태 확인 MariaDB [(none)]> SHOW VARIABLES LIKE 'event%'; 3. event 등록/수정/삭제 1) 등록 CREATE E.. 공감수 1 댓글수 2 2020. 5. 19.
  • [Mysql] InnoDB란 오늘은 InnoDB에 대해 알아보겠습니다. InnoDB는 MySQL의 데이터베이스 엔진입니다. MySQL의 모든 바이너리에 내장이 되어 있습니다. InnoDB는 트랜잭션을 지원합니다. 그렇기 때문에 트랜잭션 세이프 스토리지 엔진입니다. 장점 1. 우수한 성능 다수의 사용자가 동시 접속을 할 수 있고, 대용량의 데이터를 처리할 수 있습니다. 데이터 테이블과 인덱스를 테이블 스페이스에 저장을 하고 있고, 테이블 스페이스는 파일과 파티션으로 구성되어 있습니다. 그렇게 때문에 성능이 우수합니다. 2. 장애 복구 기능 단순하게 장애 복구를 하지 않고, 논리적으로 장애 복구를 수행합니다. 3. 데이터 무결성에 대한 보장 InnoDB의 설계를 할 때, 데이터 무결성에 대해서 중점을 두었습니다. 단점 1. Deadlo.. 공감수 0 댓글수 0 2020. 5. 13.
  • [Mysql] JOIN 이란? 오늘은 JOIN에 대해 알아보겠습니다. JOIN은 번역하면 참여하다라는 뜻으로 DB에서는 두 개 이상의 테이블이나 데이터베이스를 연결하는 것입니다. 검색하고 싶은 값들이 두 개 이상의 테이블에 있을 경우, 한개의 테이블로 JOIN을 시킨 후, 결과를 가져옵니다. 보통의 경우는 KEY를 가지고 두 개의 테이블을 연결합니다. JOIN의 종류는 자주쓰이는 4가지가 있습니다. INNER, NATURAL, LEFT, RIGHT 총 4가지에 대해 하나씩 알아보겠습니다. 먼저 JOIN에 대한 개념을 잡기 위해 그림 하나를 보시겠습니다. 출처 : https://dsin.wordpress.com/2013/03/16/sql-join-cheat-sheet/ SQL Join Cheat Sheet useful naja Natu.. 공감수 0 댓글수 0 2020. 4. 22.
  • [Mysql] GRANT, REVOKE란? Mysql에서는 접근에 제약을 주기 위하여 권한을 부여/삭제할 수 있습니다. 이때 사용하는 명령어가 바로 GRANT/REVOKE입니다. 1. 권한 부여 쿼리 GRANT ALL PRIVILEGES ON dbname.table TO 'userid'@'%' IDENTIFIED BY 'password'; ex ) GRANT ALL PRIVILEGES ON test.test_table TO 'root'@'%' IDENTIFIED BY 'root'; 2. 권한 삭제 쿼리 REVOKE ALL ON dbname.table FROM userid@'%'; ex ) REVOKE ALL ON test.test_table FROM root@'%'; 3. 권한 확인 쿼리 SHOW GRANTS FOR userid@'%'; ex ).. 공감수 1 댓글수 0 2020. 4. 8.
  • [Mysql] Galera 설치 오늘 포스팅은 db 이중화에 사용되는 galera를 설치해보겠습니다. galera는 database 동기화에 사용되는 서비스입니다. 각각의 노드를 묶어서 동기화를 수행합니다. 한 노드에 삽입/수정/삭제를 하면 모든 노드에 적용됩니다. 설치방법에 대해 알아보겠습니다. 3대의 장비를 galera로 설정 해보겠습니다. 저는 3대의 장비를 centos7.3 64bit로 설치했고, 소프트웨어 선택은 인프라서버-개발용도구로 설정했습니다. 또한, yum을 사용, rpm 다운로드를 위해서 인터넷이 되는 환경으로 세팅을 해뒀습니다. 설정, 설치법은 아래와 같습니다. 1. selinux 해제, 방화벽해제 -장비끼리 통신을 하기 위해서 아래의 작업을 수행합니다. 1) selinux 해제 ]# vi /etc/selinux/c.. 공감수 0 댓글수 0 2020. 3. 17.
  • [Mysql] DB, Table 생성 삭제 조회 Mysql을 사용하려면, SQL이라 불리는 언어를 사용해야됩니다. SQL은 데이터베이스의 표준 언어가 되었고, 대부분의 데이터베이스 시스템에서 지원됩니다. SQL은 여러 가지의 문장을 지원하고, 쉽게 사용할수 있도록 설계 되어있습니다. SQL도 처음 배우는 분들에게는 낯설지만, 사용하다보면 점차 익숙해집니다. 처음에는 Mysql의 테이블의 구조가 어떻게되는지 알아야지, SQL을 어떤식으로 사용할 수 있는지 알게됩니다. 오늘은 SQL에서 DB와 Table의 생성, 삭제, 조회를 알아보겠습니다. 1. Database 생성 사용법 : CREATE database ; ex) CREATE database example; -> 위의 쿼리로 example 데이터베이스를 생성할 수 있습니다. 2. Database 삭제.. 공감수 0 댓글수 0 2017. 12. 14.
  • [Mysql]문자열 길이 구하기 Mysql의 문자열 길이를 구하는 함수에 대해 살펴보겠습니다. 1. length() : 길이를 byte로 나타낸다. ex)select length('test');-> 4 ( 영어는 1글자당 1byte ) select length('테스트');-> 6 ( 한글은 1글자당 2byte ) 2. char_length() : 글자 수를 나타낸다. ex)select char_length('test');-> 4 select char_length('테스트');-> 3 3. bit_length() : bit수를 출력해줍니다. ex)select bit_length('test');-> 32 ( test는 총 4byte이므로 1byte는 8비트 4*8=32 ) select bit_length('테스트");-> 48 ( 테스트.. 공감수 0 댓글수 0 2017. 8. 2.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.