미스터 역마살
백업 및 복원 [feat - mysqldump] 본문
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
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