일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자바의정석
- 항해플러스
- AWS시험
- sqld
- 형변환
- 항해플러스후기
- Foundational
- java
- 보안인증서
- Wordpress
- disabled
- ARI
- Your session has been terminated
- AWS
- cafe24
- ARIadminer
- 변수의타입
- 항해플러스백엔드
- 항해솔직후기
- 변수
- AWS Certified Cloud Practitioner
- readony
- 항해99
- saltkey
- 남궁성
- SSL
- Java의정석
- SQL개발자
- Today
- Total
WorkaHolic
데이터베이스 백업 및 복원(mysqldump) 본문
1. 백업 (mysqldump 옵션 > 저장위치의 백업파일명.sql)
* 특정 데이터베이스 백업
mysqldump -u유저명 -p 디비명 > 디비백업명.sql
e.g. mysqldump -uroot -p some_database > database_bak.sql
* 복수 가능
mysqldump -uroot -p 디비명 --databases 디비명2 디비명3 > 디비백업명.sql
e.g. mysqldump -uroot -p some_database --databases database2 database3 > database23_bak.sql
* 비밀번호 미리 입력(이하동일)
mysqldump -u유저명 -p유저패스워드 디비명 > 디비백업명.sql
e.g. mysqldump -uroot -p1234abc some_database > database_bak.sql
!비밀번호를 입력한 채로 실행하면, 아래와 같은 보안을 걱정하는 문구 출력
# mysqldump -uroot -p1234abc some_database > database_bak.sql
# mysqldump: [Warning] Using a password on the command line interface can be insecure.
!Lock걸린 특정 Table이 있을 경우, 아래와 같은 오류 문구 출력
# mysqldump: Got error: 1146: Table 'db_name.table_name' doesn't exist when using LOCK TABLES
* 전체 데이터베이스 백업
mysqldump -u유저명 -p --all-databases > 전체디비백업명.sql
mysqldump -u유저명 -p -A > 전체디비백업명.sql (동일)
e.g. mysqldump -uroot -p --all-databases > all_database.sql
* 특정 테이블만 백업
mysqldump -uroot -p 디비명 디비테이블명 > 디비백업명.sql
e.g. mysqldump -uroot -p some_database database_table > database_table_bak.sql
* 복수 가능
mysqldump -uroot -p 디비명 --tables 디비테이블명2 디비테이블명3 > 디비백업명.sql
e.g. mysqldump -uroot -p some_database --tables database_table2 database_table3 > database_table23_bak.sql
* 특정 데이터베이스 스키마(테이블 구조)만 백업(데이터는 없음)
mysqldump -uroot -p --no-data 디비명 > 디비백업명.sql
e.g. mysqldump -uroot -p --no-data some_database > database_schema.sql
2. 복원 (mysql 옵션 < 저장위치의 백업파일명.sql)
* 복원시 주의사항 (데이터베이스 & 테이블 동일, 복원 전 필독)
1. 복원하는 데이터베이스와 동명의 테이블이 없으면, 새로이 테이블을 생성 및 백업데이터가 삽입됨
e.g. backup_database_table(table1, table2) | database_table(table3)
ㄴ backup_database_table의 table1, table2 테이블 생성 및 데이터 삽입
2. 복원하는 데이터베이스와 동명의 테이블이 있으면, 먼저 해당 테이블을 삭제하고, 새로이 테이블을 생성 및 백업데이터가 삽입됨
e.g. backup_database_table(table1, table2) | database_table(table1)
ㄴ database_table의 table1 테이블 삭제, backup_database_table의 table1, table2 테이블 생성 및 데이터 삽입
3. 특정 데이터베이스 백업이라도, 백업디비파일이 전체백업된 파일이면, 전체 데이터베이스로 적용됨(제일 중요하고 위험함!)
e.g. mysql -uroot -p some_database < all_database.sql
e.g. all_database[some_database(table1) database2(table2)] | some_database(table1), database2(table2)
ㄴ 특정 데이터베이스(some_database)뿐 만 아니라, 모든 데이터베이스의 동명의 테이블들은 전부 백업데이터로 재생성됨
* 특정 데이터베이스 복원
mysql -u유저명 -p 디비명 < 디비백업명.sql
e.g. mysql -uroot -p some_database < database_bak.sql
* 전체 데이터베이스(--all-databases)나 특정 데이터베이스 복수(--databases)는 전체 복원
mysql -u유저명 -p < 디비백업명.sql
e.g. mysql -uroot -p < all_database.sql
'Server > MySQL' 카테고리의 다른 글
개별 DB 복구(innoDB 기준) (0) | 2021.06.02 |
---|---|
시간(CURTIME() or CURRENT_TIME) 활용 (0) | 2021.05.03 |
현재 시간 가져오기 + 대기(wait)시키기 (0) | 2020.03.25 |
언어셋(mysql character set) 변경 (0) | 2020.03.10 |
패스워드(password or authentication_string) 변경 (0) | 2018.09.06 |