본문 바로가기

MySQL

MySQL SET type에 대하여 MySQL의 SET type에 대해선 문서를 찾아보면 상당히 짧은 것을 확인할 수 있습니다. 통상적으로 적을 것이 별로 없다는 것은 그만큼 명확하고 단순하거나 아니면 그 특징이 크게 자랑할게 없다고 할 수 있습니다. MySQL의 SET type은 후자에 해당한다고 생각합니다. SET type을 처음 봤을땐 '이런 데이터 타입이 있군!' 했었는데, DB에서 컬럼 타입을 선택할때 가장 중요한 부분이 성능과 효율성이라고 생각하는데 이 관점에서 SET type의 제한적인 인덱스는 기능에 치명적이었습니다. 먼저 간단히 SET type에 대해서 설명을 하자면, 1개 이상의 값을 저장할수 있는 type입니다. 이를 테면, 국적이라던지 수강과목이라는 컬럼을 생성할때 이 SET 타입을 쓸 수가 있습니다. 국적이야 데이터.. 더보기
This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled mysql 에서 function을 추가하려 SQL create query를 복사후 실행했더니 다음과 같은 오류가 발생하며 생성되지 않았다. This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled엇 이게 뭐지 했는데, 구글신 영접하여 확인해보니 환경설정이 되어있지 않아서 생기는 문제란다. http://www.jamediasolutions.com/blog/deterministic-no-sql-or-reads-sql-data-in-its-declaration.html 가볍게 설정하려 했으나 AWS 의 RDS 를 쓰는 관계로 직접 수정은 권한 없음. Parame.. 더보기
Ubuntu 에서 mysql 설치시 data 폴더를 변경할 경우 지금까지는 항상 CentOS만을 써오다 docker 덕분에 Ubuntu 에 입문 왠만하면 서버를 Ubuntu 12.04 LTS 버전으로 설치해서 사용하고 있다. 그러다 mysql 을 설치할 일이 생겨 apt-get install mysql-server 를 실행하고, 가볍게 my.cnf ( ubuntu는 경로가 조금 다르다 /etc/mysql/my.cnf ) 를 실행해주었는데 파일을 쓸수 없다는 에러메시지만 수두룩하게.. 알고 봤더니 이유는 Ubuntu의 보안 프로그램인 apparmor 때문이었다. vi /etc/apparmor.d/usr.sbin.mysqld 를 실행하여 기존 데이터 위치인 /var/lib/mysql 대신에 변경된 경로로 바꾸어 주면 된다. 끝. 더보기
mysql replication 이 깨졌을 경우 mysql replication 이 몇가지 사유로 인해 깨졌을 경우. 기본적으로 mysql 의 replication은 binary 로그를 기반으로 순차적인 복제 실행을 하는 과정을 가지고 있다. 즉, 해당 문제가 발생하였을 경우 로그 포지션을 기록해두었다가 해당 문제를 스킵하면 되나, 그 문제 발생 사유가 데이터의 구조등의 변경에 영향을 미치는 쿼리라면 스킵하는 것만이 능사는 아니니 꼭 확인이 필요함. # skip 방법1. mysql 의 master log position을 지정해준다. 예를 들어 mysql-bin.00009로그파일의 1001번째 position 에서 문제가 발생했을 경우 mysql> stop slave; mysql> change master to master_log_file 'mysql.. 더보기