목록mysqldump (5)
오늘도 한 뼘 더

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

# 배경 보통 데이터 백업받을 때 워크벤치에서 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..

# 배경 $ mysql -h {HOST_NAME} -u {USER} -p {DATABASE_NAME} < dump.sql mysql dump를 하는데 다음과 같은 에러가 반환되었다. ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER privilege(s) for this operation # 문제 원인 이 문제는 RDS가 제공하는 MySQL 서버가 사용자가 아닌 다른 DEFINER가 지정된 sql파일은 허용하지 않아 생기는 것이라고 한다. 즉, data export를 할 때와 data import 할 때의 사용자가 달라서 생긴 문제였다. # 해결 방법 1. 명령어 $ sed -i 's/DEFINER=[^*]..