Mysql dump 명령어
1. 구조
mysqldump [옵션] > 파일명.sql
2. 백업
단일 DB 백업
mysqldump -u root -p 데이터베이스이름 > 백업파일명.sql
사용자로 로그인하면 -u 및 -p 옵션 생략 하여
mysqldump 데이터베이스이름 > 백업파일명.sql
ex) mysqldump db1_schema > db1_dump.sql
여러 DB 백업
—databases 옵션을 사용하여 백업 데이터베이스 목록들을 공백으로 구분하여 사용하고 단일 덤프 파일이 생성됩니다.
mysqldump -u root -p —databases db_1 db_2 > db_1_2_dump.sql
모든 DB 백업
—all-databases 옵션 사용하여 모든 DB를 백업
mysqldump -u root -p —all-databases > all_db.sql
모든 DB를 별도 덤프 파일로 백업
mysqldump는 모든 DB를 별도 파일로 백업하는 옵션을 없지만, Bash For 루프를 통해 쉽게 백업 가능합니다.
for DB in $(mysql -e ‘show databses’ -s —skip-column-names); do
mysqldump $DB > “$DB.sql”;
done
데이터베이스 이름을 파일 이름으로 사용하여 별도의 덤프 파일을 생성
압축된 DB 백업 생성
DB 크기가 클 경우 출력을 압축하는 것이 좋습니다. gzip 유틸리티에 연결하고 리파일로 리디렉션을 하면 됩니다.
mysqldump db_name | gzip > db_name.sql.gz
타임스탬프를 사용하여 백업
mysqldump db_name > db_name-$(date +%Y%m%d).sql
3. 복원
Mysql 덤프를 복원
mysql 유틸리티를 사용하여 덤프로 복원
mysql db_name < file_nm.sql
데이터베이스가 이미 있는 경우 먼저 데이터베이스를 삭제해야합ㄴ디ㅏ.
ex) 데이터베이스 생성후 덤프
mysql -u root -p -e “create database db_name”;
mysql -u root -p db_name < db_name.sql
전체 Mysql 덤프에서 단일 DB복원
—one-database 옵션을 사용하여 여러 DB 백업 파일에서 단일 DB를 복원
mysql —one-database db_name < all_dbs.sql
4. Cron 백업
Cron을 사용하여 백업 자동화
cron job을 사용하여 자동 백업 설정
1. 사용자 홈 디렉토리에서 .my.cnf 파일 생성 후 텍스트 입력
sudo nano ~/.my.cnf
[client]
user = dbuser
password = dbpassword
2. 사용자만 액세스할 수 있도록 자격증명 파일의 사용권한 제한
chmod 600 ~/.my.cnf
3. 백업 저장할 디렉토리 생성
mkdir ~/db_backups
4. 사용자 crontab 파일오픈
crontab -e
매일 오전 3시에 DB이름 mydb의 백업을 생성하는 다음 cron작업을 추가
0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +\%Y\%m\%d).sql
사용자 이름을 실제 사용자 이름으로 바꾸는 것을 잊지 마세요.
또한 다른 cronjob을 생성하여 30일보다 오래된 백업을 삭제
find /path/to/backups -type f -name “*.sql” -mtime +30 -delete
Mysql dump 명령어
1. 구조
mysqldump [옵션] > 파일명.sql
2. 백업
단일 DB 백업
mysqldump -u root -p 데이터베이스이름 > 백업파일명.sql
사용자로 로그인하면 -u 및 -p 옵션 생략 하여
mysqldump 데이터베이스이름 > 백업파일명.sql
ex) mysqldump db1_schema > db1_dump.sql
여러 DB 백업
—databases 옵션을 사용하여 백업 데이터베이스 목록들을 공백으로 구분하여 사용하고 단일 덤프 파일이 생성됩니다.
mysqldump -u root -p —databases db_1 db_2 > db_1_2_dump.sql
모든 DB 백업
—all-databases 옵션 사용하여 모든 DB를 백업
mysqldump -u root -p —all-databases > all_db.sql
모든 DB를 별도 덤프 파일로 백업
mysqldump는 모든 DB를 별도 파일로 백업하는 옵션을 없지만, Bash For 루프를 통해 쉽게 백업 가능합니다.
for DB in $(mysql -e ‘show databses’ -s —skip-column-names); do
mysqldump $DB > “$DB.sql”;
done
데이터베이스 이름을 파일 이름으로 사용하여 별도의 덤프 파일을 생성
압축된 DB 백업 생성
DB 크기가 클 경우 출력을 압축하는 것이 좋습니다. gzip 유틸리티에 연결하고 리파일로 리디렉션을 하면 됩니다.
mysqldump db_name | gzip > db_name.sql.gz
타임스탬프를 사용하여 백업
mysqldump db_name > db_name-$(date +%Y%m%d).sql
3. 복원
Mysql 덤프를 복원
mysql 유틸리티를 사용하여 덤프로 복원
mysql db_name < file_nm.sql
데이터베이스가 이미 있는 경우 먼저 데이터베이스를 삭제해야합ㄴ디ㅏ.
ex) 데이터베이스 생성후 덤프
mysql -u root -p -e “create database db_name”;
mysql -u root -p db_name < db_name.sql
전체 Mysql 덤프에서 단일 DB복원
—one-database 옵션을 사용하여 여러 DB 백업 파일에서 단일 DB를 복원
mysql —one-database db_name < all_dbs.sql
4. Cron 백업
Cron을 사용하여 백업 자동화
cron job을 사용하여 자동 백업 설정
1. 사용자 홈 디렉토리에서 .my.cnf 파일 생성 후 텍스트 입력
sudo nano ~/.my.cnf
[client]
user = dbuser
password = dbpassword
2. 사용자만 액세스할 수 있도록 자격증명 파일의 사용권한 제한
chmod 600 ~/.my.cnf
3. 백업 저장할 디렉토리 생성
mkdir ~/db_backups
4. 사용자 crontab 파일오픈
crontab -e
매일 오전 3시에 DB이름 mydb의 백업을 생성하는 다음 cron작업을 추가
0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +\%Y\%m\%d).sql
사용자 이름을 실제 사용자 이름으로 바꾸는 것을 잊지 마세요.
또한 다른 cronjob을 생성하여 30일보다 오래된 백업을 삭제
find /path/to/backups -type f -name “*.sql” -mtime +30 -delete