목록Study/MySQL (21)
오늘도 한 뼘 더
## mysql_config_editor 란? mysql_config_editor는 MySQL에서 로그인 정보(사용자 이름, 비밀번호, 호스트 등)를 암호화하여 안전하게 저장할 수 있는 자격 증명 관리 도구이다. 명령줄에서 MySQL에 접속할 때 이 도구로 저장한 정보를 사용하면 비밀번호를 포함한 민감한 정보를 매번 입력할 필요가 없어 편리하고 안전하다.암호화된 정보는 홈 디렉토리에 .mylogin.cnf에 저장된다. ## 설정 및 사용 방법 1. 로그인 정보 저장아래 명령어를 입력하면 비밀번호 입력칸이 뜬다. 비밀번호 입력하면 로그인 정보 저장 완료$ mysql_config_editor set --login-path={name} --host={host_address} --user={user} -..
# 배경 부하테스트를 진행하는 과정에서 부하가 걸리면서 AWS RDS에 대한 커넥션 수가 많아지면서 다음과 같은 에러가 발생하였다.Error 1040: Too many connections # 해결 방법 MySQL에서 max_connections 값을 변경해야 하는데 AWS RDS의 경우 파라미터 값을 변경해서 해당 값을 변경할 수 있다.변경하기 전 현재 max_connections 값은 다음과 같이 확인할 수 있다.SHOW GLOBAL VARIABLES LIKE 'max_connections'; AWS RDS > 데이터베이스 > 구성 > 파라미터 그룹max_connections를 찾아 수정해 준다.기본 RDS의 max_connections 기본값은 {DBInstanceClassMemory/125..
# 문제 및 배경 mysqldump 명령어를 사용하는 중에 다음과 같은 메시지가 계속해서 발생했다.Error 메시지가 뜨긴 하나 데이터를 dump 하는데 문제는 없었다.그러나 에러로 인지돼서 메시지를 받는 게 좋아 보이지는 않아 해당 문제를 해결하고자 한다. # 해결 방법 1. mysqldump 명령어에 --no-tablespaces 옵션 추가mysqldump -h {HOST} -u jihyun -p --no-tablespaces 2. user에 PROCESS privilege 추가하기GRANT PROCESS ON *.* TO 'jihyun'@'localhost';
# 배경 mysql에 복원 작업을 진행 중이었는데 다음과 같은 에러가 발생하면서 복원 작업이 중단되었다. ERROR 1114 (HY000): The table 'tb_name' is full # 원인 및 해결 방법 테이블에 더 이상 데이터를 추가할 수 없을 때 발생한다. 이 오류는 원인이 여러 가지라고 한다. 오류와 해결 방법을 알아보았다. 1. 디스크 공간 부족 서버의 디스크 공간을 확인한다. 디스크가 가득 찬 경우, 불필요한 파일을 삭제하거나 디스크를 확장하여 공간을 확보한다. 2. InnoDB 저장 엔진 제한 InnoDB 저장 엔진을 사용하는 경우, 데이터 파일의 최대 크기에 제한이 있습니다. InnoDB 테이블 스페이스의 크기를 늘려야 할 수 있다. 구성 파일(my.cnf 또는 my.ini)을 수..
# 배경 보통 데이터 백업받을 때 워크벤치에서 export를 사용하거나 mysqldump를 사용했는데, 대부분 전체 데이터를 백업하면 돼서 조건에 맞는 특정 데이터만 받을 일이 없었는데 데이터를 나눠서 백업해야 하다 보니 특정 행들만 dump 해야 하는 상황이 발생하였다. 이때 where문을 쓸 수 있는 것을 확인했다. # 데이터만 백업하기 --no-create-info 옵션을 사용한다. mysqldump -h {hostname} -u {username} -p --no-create-info=TRUE {database} {table} > dump.sql # 조건 추가해서 데이터 백업하기 --where 옵션을 사용한다. mysqldump -h {host} -u {username} -p --no-create-..
# 데이터 백업 mysqldump 명령어를 통해서 데이터 백업을 진행 mysqldump -h ${HOST_NAME} \ -u {USER} \ -p \ --set-gtid-purged=OFF ${DATABASE_NAME} > dump.sql set-gtid-purged=OFF : mysql 서버의 사용자와 데이터를 백업, 복원하는 사용자가 달라도 문제가 안 생기도록 설정하는 명령어 # 데이터 복원 1. 백업을 할 때 스키마 또는 데이터베이스를 같이 만들어 주는 명령어를 포함한 파일로 복원할 경우 mysql -h ${HOST_NAME} -u {USER} -p < dump.sql 2. 데이터와 테이블 구조만 백업이 된 파일일 경우 mysql -h ${HOST_NAME} -u {USER} -p ${DATABAS..
# 배경 데이터를 dump 한 뒤에 다시 import 하려는 sql문을 작성했다. # 문제 mysql -h 127.0.0.1 -u root -p < dump.sql 위의 sql문을 실행했는데 다음과 같은 에러 메세지가 발생하였다. ERROR 1046 (3D000) at line : No database selected # 해결 방법 import하려고 하는 파일에 "use database" 구문이 없어서 발생한 문제이다. 파일 편집기를 켜서 "use database;"를 추가할 수도 있지만 dump 한 파일의 용량이 크면 편집기를 여는데 부하가 걸릴 수 있어서 mysql구문에 데이터베이스 선택을 다음과 같이 작성했다. mysql -h 127.0.0.1 -u root -p --database=jihyunb ..
# 배경 데이터를 백업하고 복원하는 작업을 진행하였다. 복원하는 작업을 진행하는 중에 다음과 같은 에러가 뜨면서 복원이 진행되지 않았다. ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: ''. # 문제 서버가 달라지면서 인코딩이 달라져서 한글이 깨져서 복원하는데 문제가 생긴 것이었다. # 해결 방법 백업하는 과정에서 캐릭터 셋 옵션을 주어서 해당 문제를 해결할 수 있다. mysqldum..
# 배경 비개발자들이 데이터를 볼 수 있도록 조회한 데이터를 csv파일로 저장해서 공유해야 한다. 일반 데이터가 아닌 데이터 테이블의 칼럼 정보들을 조회 후 저장해야 했다. # 데이터 조회하기 일반 데이터와 같이 select가 아닌 show를 사용하여 데이터 조회가 가능하다 SHOW columns from {DATABASE}.{TABLE}; # csv 파일로 저장하기 1. INTO OUTFILE 사용 select 문으로 조회한 데이터의 경우 'INTO OUTFILE' 명령어를 통해서 csv 파일로 저장이 가능하다. SELECT * FROM {DATABASE}.{TABLE} INTO OUTFILE 'C:\\Doc\info.csv'; 2. select 문이 아닌 경우 show의 경우 이 방식으로는 저장이 불..
# 테이블 하나 이름 변경 RENAME TABLE old_table TO new_table; ALTER TABLE old_table RENAME new_table; # 테이블 여러 개 이름 변경 RENAME TABLE old_table1 TO new_table1, old_table2 TO new_table2; # 다른 데이터베이스, 스케마로 테이블 이동 RENAME TABLE current_db.table_name TO new_db.table_name;