IT News/PHP

putty로 원격접속해서 mysql 에서 db export (mysqldump)를 하는 방법, 추가로 crontab 으로 주기적 백업방법 소개

Fshop 2018. 9. 4. 16:11
반응형

원격 웹서버에 있는 mysql 에 있는 디비를 명령어를 통해서 백업 받을려면 아래와 같은 형식으로 입력하면 됩니다.


형식 : mysqldump -p 디비이름 > 저장할 파일이름


예) mysqldump -p test_db > test_db.sql


위의 있는 예제를 보면 test_db 라는 데이터베이스가 있다고 한다면 해당 DB 를 test_db.sql 이라는 파일로 덤프는 받는것이라 생각하시면 됩니다. 물론 파일의 생성 위치는 mysqldump 명령어를 실행하는 서버내 경로가 됩니다. 따라서 DB 덤프 전에 미리 경로로 이동하시고 하면 좋을것 같습니다.


세부적인 예제는 아래와 같습니다. 그런데 -p 를 붙이고 패스워드를 한칸 뜨고 입력을 하시면 않되구요.. -p이후에 바로 패스워드를 붙여서 입력하셔야 합니다. 저도 처음에 이것 때문에 고생했네요 ㅠ


 To export

 If it's an entire DB, then:


 $ mysqldump -u [uname] -p[pass] db_name > db_backup.sql

 If it's all DBs, then:


 $ mysqldump -u [uname] -p[pass] --all-databases > all_db_backup.sql

 If it's specific tables within a DB, then:


 $ mysqldump -u [uname] -p[pass] db_name table1 table2 > table_backup.sql

 You can even go as far as auto-compressing the output using gzip (if your DB is very big):


 $ mysqldump -u [uname] -p[pass] db_name | gzip > db_backup.sql.gz

 If you want to do this remotely and you have the access to the server in question, then the following would work (presuming the  MySQL server is on port 3306):


 $ mysqldump -P 3306 -h [ip_address] -u [uname] -p[pass] db_name > db_backup.sql


 To import

 Type the following command to import sql data file:


 $ mysql -u username -p -h localhost DATA-BASE-NAME < data.sql

 In this example, import 'data.sql' file into 'blog' database using sat as username:


 $ mysql -u sat -p -h localhost blog < data.sql

 If you have a dedicated database server, replace localhost hostname with with actual server name or IP address as follows:


 $ mysql -u username -p -h 202.54.1.10 databasename < data.sql 

 OR use hostname such as mysql.cyberciti.biz


 $ mysql -u username -p -h mysql.cyberciti.biz database-name < data.sql

 If you do not know the database name or database name is included in sql dump you can try out something as follows:


 $ mysql -u username -p -h 202.54.1.10 < data.sql

 Refer: http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html 



추가적으로 linux 의 crontab 을 사용하여 db를 주기적으로 백업하는 방법에 대해서 설명드리겠습니다.

우선은 linux 에서 실행을 위한 배치파일?을 만들어야 하는데요. 예를 들어 MySqlDump.sh 라는 파일을 하나 만들어서 그 파일안에 내용을 아래와 같이 입력하고 저장합니다. 물론 계정명과 패스워드, 디비이름은 정해주세요. 그리고 저장될 파일이름인 MySqlDB 이 부분도 바꾸어 주셔도 좋습니다.

 mysqldump -u 계정명 -p패스워드 디비이름 | gzip > MySqlDB_$(date +"%Y%m%d").sql.gz


또는


 mysqldump -u 계정명 -p패스워드 디비이름 > MySqlDB_$(date +"%Y%m%d").sql


그리고 생성된 MySqlDump.sh 파일에 실행권한을 주기 위해서 아래와 같이 명령어를 입력합니다.

 chmod +x MySqlDump.sh 


그리고 리눅스의 스캐줄러인 크론탭(crontab)의 설정을 바꾸어야 하는데요. vi 에디터 사용법을 알면 추가 및 수정이 가능합니다.

 0 2 * * * /home/MySqlDump.sh


위의 예시는 매일 오전2시에 /home 경로에 있는 MySqlDump.sh 파일을 실행하게 됩니다. 따라서 파일 경로를 맞추어 주어야 합니다. 세부적인 설정 및 예시는 아래의 경로를 참고해주세요.

https://tecadmin.net/crontab-in-linux-with-20-examples-of-cron-schedule

그리고 vi 에디터를 종료하고 나오면 

 crontab -l 


위의 명령어를 실행했을때 아까 작성한 내용이 나오는지 확인을 하신 후 아래의 명령어를 입력해서 crontab 을 재시작 해주기만 하면 됩니다.

 crontab -r 




반응형