Info-Tech

Mysql Dump 및 복원 본문

데이터베이스/mysql

Mysql Dump 및 복원

개발 로그를 쌓고 싶은 블로거 2018. 11. 2. 15:17
mysql dump 하는 대표적인 방법

옵션의미Default비고
-A, --all-databases모든 db dump
-l, --lock-tablesLock all tables for read.O--skip-lock-tables 로 제외가능
--single-transactionlock 을 걸지 않고도 dump 파일의 정합성 보장XInnoDB 일때만 사용 가능
--master-data
이 옵션이 명시되면, dump 파일의 헤더 부분에 
CHANGE MASTER TO 구문을 포함시키며,
이 구문에는 덤프 시작 시점의 Binary log 파일명과 
위치 정보 및 호스트 정보를 포함하고 있다.

이 값을 1로 설정하면 CHANGE MASTER TO 
구문이 실제 실행 가능한 형태로 
포함되며, 2로 설정되면 SQL 코멘트 형태로 
참조만 할 수 있도록 포함된다.

Table 백업시 Lock이 할 경우 (InnoDB)
  • update, insert, delete가 가능하다
mysqldump --single-transaction  db1 db2 > test.dump.sql


Table 백업시 lock이 필요 한경우
  • update, insert, delete 불가능하다
mysqldump --lock-tables  db1 db2 > test.dump.sql


1  전체dump 

mysqldump --opt --user=$USER --password=$PASS --single-transaction --order-by-primary --master-data=2 --all-databasess > mydump.sql


2 일부분만 dump [DB1]

mysqldump --opt --user=$USER --password=$PASS --single-transaction --order-by-primary --master-data=2 --databases DB1 > mydump.sql

3 Dump 파일 복구

mysql -h dbhost2 -u root -pmypwd dbname <  mydump.sql

4 Cron으로 실행하기

> mysqlbackup.sh 만들기
vim mysqlbackup.sh

> 쉘스크립트 작성
#!/bin/sh

DBNAME=loguin
DATE=backup
SQLFILE=$DBNAME-${DATE}.sql
USER=root
PASS=root

mysqldump --opt --user=$USER --password=$PASS --single-transaction --databases $DBNAME > $SQLFILE

> Crontab에 등록
  • 매일 아침 6시 10분
10 6    * * *   ubuntu  sh /home/ubuntu/mysqlbackup.sh

> Cron restart 해주기! 


Comments