mysqldump
mysqldump 프로세스가 실행된 순간의 데이터베이스 스키마 및 데이터를 SQL로 추출한다.
이 방식으로 백업하는 경우, DB에 TX가 발생하지 않는 상황에서 하는 것이 좋다.
(AP 서비스 종료 후 백업하는 것을 권장)
Usage
전체 데이터베이스 백업
mysqldump -uroot -p -A > full_database.sql
특정 데이터베이스 백업
mysqldump -uroot -p specific_database_name > specific_database_name.sql
특정 테이블 백업
mysqldump -uroot -p specific_db_name specific_table_name > specific_table.sql
특정 데이터베이스의 Schema 정보만 백업
mysqldump -uroot -p --no-data specific_database_name > specific_database_schema_only.sql
Example
#!/bin/bash
DUMP_DATE=date +%Y%m%d%H%M
DUMP_PROC=/usr/mysql/bin/mysqldump
MYSQL_USER=root
MYSQL_PASS=MY_PASSWORD
DUMP_FILE="/backup/mysql/mysqldump.${DUMP_DATE}.sql"
EXEC_OPTS="-u${MYSQL_USER} -p${MYSQL_PASS} -A"
#Execution
echo "exec ${DUMP_PROC} ${EXEC_OPTS} 2>/dev/null > ${DUMP_FILE}"
${DUMP_PROC} ${EXEC_OPTS} 2>/dev/null > ${DUMP_FILE}
echo "gzip -9 ${DUMP_FILE}"
/bin/gzip -9 ${DUMP_FILE}
복구하기
mysql -uroot -p < ${DUMPED_FILE}