목록mysql (24)
오늘도 한 뼘 더

## 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';

# 배경 mysqldump를 사용할 때 특정 컬럼만 선택하는 방법은 없다. 특정 컬럼을 백업해서 넘기기 위해서는 temp 테이블을 만들어서 temp 테이블에 원하는 데이터를 삽입해서 temp 테이블을 덤프 해서 진행하도록 한다. # 스크립트 내용 https://github.com/baekji919/DevOps/tree/main/Data_Backup DevOps/Data_Backup at main · baekji919/DevOps Contribute to baekji919/DevOps development by creating an account on GitHub. github.com ## temp 테이블 생성 sql use database; INSERT into database.table SELECT c..

# 배경 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 ..

# MySQL 설치하기 1. mysql 설치 $ brew install mysql 2. mysql 서비스 시작 $ mysql.server start 3. mysql 관련 기본 설정 진행 처음 세팅에 대한 내용 및 password의 복잡도, 원격 접속 가능 여부 등에 대한 설정을 진행한다. $ mysql_secure_installation 4. mysql 접근 확인 설정한 비밀번호를 통해 접근했을 때 "mysql >"과 같이 출력되면 동작이 되는 것이다. $ mysql -u root -p mysql> # MySQL WorkBench 설치하기 MySQL 공식 페이지에서 mysql 다운로드 받는다 https://dev.mysql.com/downloads/workbench/ MySQL :: Download My..

# 배경 데이터를 백업하고 복원하는 작업을 진행하였다. 복원하는 작업을 진행하는 중에 다음과 같은 에러가 뜨면서 복원이 진행되지 않았다. 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..