[SUBSTRING_INDEX] MYSQL 쿼리로 String 의 특정 위치의 단어만 가져오기

MariaDB, MySQL DB

무슨 말인고 하니…예를들어 주소 관련 테이블이 있고, 주소가 ‘서울시 강남구 역삼동’과 같이 저장되어있을 때, 마지막의 ‘역삼동’ 이라는 단어만 추출하고 싶을 때, 사용할 수 있는 방법이다. SELECT SUBSTRING_INDEX(TRIM(address), ‘ ‘, -1) FROM addresses; SUBSTRING_INDEX을 이용하면 string을 특정 문자로 split한 후 특정 index에 해당하는 문자를 반환할 수 있다.

Continue Reading

MySQL, MariaDB 유저 추가

MariaDB, MySQL DB

매번 phpMyAdmin 등의 툴을 이용해서 유저 생성 및 관리를 하다보니 콘솔에서 하려면 매번 검색을 해야하는 번거로움이 있었다. 이번에 여차저차 해서 새로 세팅하게 된 서버에는 GUI 툴을 설치하지 않아서 명령어로만 유저 세팅을 진행하게 되었고 여러 계정들을 세팅하다보니 자연스레 손에 익게 되어서 정리를 해 둔다. [유저 생성]create user 유저명@호스트명 identified by ‘패스워드’; 위의 명령어는 유저명에 해당하는 유저를 …

Continue Reading

PM2 reload 시 서비스 중단되지 않게 하기

MariaDB, MySQL DB

PM2로 node app을 구동 시 reload를 하면 일시적으로 서비스 중단이 발생한다.새로운 프로세스가 아직 서비스할 준비가 되지 않았는데 PM2가 기존 프로세스를 종료시켜버리기 때문.단순한 서비스라면 reload에 시간이 걸리지 않지만 db connection이나 시간이 소요되는 로직이 수행되어야 한다면 100% 일시적인 서비스 중단이 있을 수 밖에 없다. 이를 방지하기 위해 app의 listen이 완료되었을 시에 다음 코드를 넣어줌으로 PM2로 하여금 프로세스가 …

Continue Reading

MySQL 일정 기간동안 사용하지 않은 테이블 리스트 가져오기

MariaDB, MySQL DB

DB를 운영하다 보면 시간이 지남에 따라 테이블들이 쌓여가고 나중에는 사용하지 않는 테이블들도 많이 생기기 마련이다. (관리를 제대로 안 했다는 증거…?! _-_) 암튼 그럴 경우 무턱대고 테이블을 정리할 순 없으니 일정한 기준을 가지고 정리하게 된다. 일정 기간 이내에 사용되지 않은 테이블 목록을 가져올 수 있다면 정리하는게 더 수월해 지지 않을까? 다음 쿼리를 사용하면 일정 기간 내에 …

Continue Reading

MySQL (or MariaDB) 단일 쿼리 패킷 용량 설정 max_allowed_packet

MariaDB, MySQL DB

DB에 데이터를 입력 혹은 업데이트 시 데이터가 아~~~주~~~ 큰 경우 정상적으로 쿼리가 업데이트 되지 않는다. 이유는 DB 설정에서 쿼리 시 전송 가능한 최대 패킷의 크기를 넘어섰기 때문. 이럴 때 다음과 같은 쿼리를 날려주면 원활하게 데이터 입력 및 업데이트를 할 수 있다. 예를들어 200MB를 전송 가능하게 하고자 단다면 1024 * 1024 * 200 과 같이 쿼리하면 …

Continue Reading

실수로 삭제한 MySQL ROOT 계정 복구

MariaDB, MySQL

얼토당토않은 실수를 해버렸다. 운영 중인 서버의 개발 서버에서 사용하지 않는 Database들을 삭제하는 과정에서 실수로 ROOT 계정을 포함해서 삭제해버린 것이다. 아뿔싸. 이미 때는 늦었다. 하지만 다행인 것은 실제 서비스 중이 아닌 개발 서버 환경이라는 것…; root 계정 없이는 다른 계정 추가 삭제는 물론 데이터베이스 관리가 불가하기에 정말 난감한 상황이 아닐 수 없다. 하지만 손쉽게 복구할 수 있는 방법이 있으니 당황은 금물! …

Continue Reading

mysqldump 이용 시 Got error: 1016 에러 발생 시 대처 방법

MariaDB, MySQL

서버 이전 작업을 진행하다가 발생한 에러에 약간 당황했지만 당황하지 않고(?) 검색을 통해 해결한 것을 남기고자 한다. MySQL DB를 (정확히 말하자면 MariaDB…) 덤프 해서 다른 서버로 옮겨야 하는 상황이 발생. mysqldump를 써서 덤프 하려는데 웬걸! mysqldump: Got error: 1016: “Can’t open file: ‘./db_name/table_name.frm’ (errno: 24)” when using LOCK TABLES  위와 같은 에러가 뜨면서 진행이 되지 않는 것이다! 이럴 때는 다음과 같은 옵션을 사용해 주면 간단히 해결된다.  mysqldump -u 사용자면 -p 패스워드 DB명 –lock-tables=false > 덤프파일명.sql  “–lock-tables=false”만 기억하자~

Continue Reading