미스터 역마살

백업 및 복원 [feat - mysqldump] 본문

Database/MYSQL

백업 및 복원 [feat - mysqldump]

Mr. YeokMaSsal 2022. 8. 12. 23:23
728x90
반응형

백업

모든 DB 백업

-- all-databases 옵션을 사용한다.

mysqldump -u아이디 -p --all-databases > 저장할파일명.sql 
ex) mysqldump -uroot -p --all-databases > all.sql

# 데이터베이스를 미리 생성해서 작업하기
mysql -u root -p -e "create database database_name";
mysql -u root -p database_name < database_name.sql

# 압축된 데이터베이스 백업
mysqldump database_name | gzip > database_name.sql.gz

타임스탬프를 이용하여 백업 생성

둘 이상의 백업을 동일한 위치에 유지하려면 백업 파일 이름에 현재 날짜를 추가할 수 있다.

mysqldump  database_name > database_name-$(date +%Y%m%d).sql

특정 DB 백업

# 단일 DB 백업
mysqldump -u root -p database_name > database_name.sql

# 다수의 DB 백업 (띄어쓰기로 구분한다)
mysqldump -u root -p database_name1 database_name1 > database_name.sql

특정 DB의 특정 테이블 백업

mysqldump -u아이디  -p비밀번호 dbname t1 t2 > D:\>backup\table.sql

특정 테이블만 제외하고 백업

mysqldump -u아이디  -p비밀번호 dbname --ignore-table=dbname.t1 --ignore-table=dbname.t2 > D:\>backup\table.sql

다른 db에 호환되게 백업

—compatible 옵션은 mysql 4.1 버전부터 사용할수 있다. 아래의 명령을 이전 버전인 4.0으로 다운그레이드 할 때 사용할 수 있는 옵션이다.

그외 사용할 수 있는 옵션은 아래와 같다

  • ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options, no_table_options, no_field_options
mysqldump -u아이디 -p비밀번호 dbname --compatible=mysql40 > dbname.sql

테이블 스키마만 백업

insert 문을 제외하고 생성 스크립트만 백업 한다.

mysqldump -u아이디 -p비밀번호 --no-data dbname > D:\>backup\dbname.sql

mysqldump -u아이디 -p비밀번호 -d dbname > D:\>backup\dbname.sql

 

복구

전체 복구

mysqldump -u아이디 -p < 백업파일명.sql


특정 db만 복구

mysql --one-database database_name < all_databases.sql

단일 명령으로 데이터베이스 내보내고 가져오기

한 데이터베이스에서 덤프 파일을 만든 다음 백업을 다른 MySQL 데이터베이스로 가져오는 대신 아래와 같이 한방에 처리할 수 있다.

mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name

백업 파일 신규 db에 복구시키기

# 신규 db를 미리 생성 해놔야 한다.
mysql -u root -p new_database < bakup.sql

# 덤프 파일 생성시 --no-create-db 옵션 추가
mysqldump -u root -p --opt --routine --triggers --no-create-db DB1 > BACKUP_DB1.sql

# 복구시(mysql 접속하여 원하는 db로 접속)
mysql> CREATE DATABASE DB_NEW;
mysql> USE DB_NEW;
mysql> SOURCE BACKUP_DB1.sql

DB의 테이블 생성 DDL만 덤프

아래와 같이 실행하면 AUTO_INCREMENT 값이 1부터 설정되지 않고 개발용 MYSQL에서 사용되던 마지막 자동 증가값이 명시되어 덤프된다. 그래서 DDL을 덤프 받아서 생성할때는 반드시 AUTO_INCREMENT 값을 1로 모두 초기화 하거나 CREATE TABLE 문에 'AUTO_INCREMENT=xxx' 옵션을 제거하고 사용하는것이 좋다.

mysqldump -u root -p --opt --routines --triggers --database DB1 DB2 > schema.sql

 

 

mysqldump 옵션

https://puham.tistory.com/56

 

mysqldump 옵션 설명

mysqldump 의 사용법 백업뿐만 아니라, 데이터의 이관이나 복제등과 같이 어떤 MySQL 서버에서 다른 서버로 데이터를 옮기는 경우 MySQL 패키지에 기본적으로 포함되어 있는 mysqldump라는 도구를 자주

puham.tistory.com

 

 

 

 

 

 

728x90

'Database > MYSQL' 카테고리의 다른 글

Mysql File Table에 Insert  (0) 2022.08.13
Mysql 일단위 백업 자동화  (0) 2022.08.13
Replication  (0) 2022.08.11
binlog 와 redo log 차이  (0) 2022.08.11
binlog  (0) 2022.08.10
Comments