MySQL 데이터베이스는 하위 라이브러리 / 분 테이블 백업 (쉘 스크립트)를 달성하기 위해

모든 데이터가 돈 후 바로 작업이 종종 데이터베이스 백업은 매우 중요한 것은, 생명입니다! 아도 다음 소개 : MySQL 데이터베이스 백업을 분할하는 방법 (쉘 스크립트)

Mysq 데이터베이스 덤프 백업 / 구문을 복원

-u 사용자 이름 -p 데이터베이스 이름> 보낸 파일 이름을 mysqldump에;

-u 사용자 이름 -p 데이터베이스 <도입 파일 이름을 mysqldump에;

우선, 우리는 전체 데이터베이스 또는 라이브러리의 일부를 백업하는 것입니다 알 필요가;

둘째, 우리는 백업 할 라이브러리 이름의 목록을 얻을 필요가;

마지막으로, 데이터 백업을위한 스크립트를 작성.

분 백업 :

현재 환경은 MySQL의 서비스를 시작할지 여부 (1)는, 시작하지 않을 경우, 다음 서비스를 시작 볼 수 있습니다 :

하위 라이브러리 라이브러리 이름 백업 목록 2 :

두 가지 방법으로 MySQL 데이터베이스를 로그인 : 양말 모드와 TCP / IP 및 세부 사항 https://my.oschina.net/zjllovecode/blog/1617755을

우리는 MySQL의 데이터베이스 이름 목록을 기록 양말 얻을 :

3, 백업 스크립트를 작성 :

빔의 mysqldb.sh 번호의 [루트-1 스크립트 @ 18 BQH] 
#! / 빈 / SH 
# ************************************************************ ************************ 
가드 :? # 저자 
# 마지막으로 수정 된 항목 : 2019년 5월 18일 13시 25분 
# 이메일 : [email protected] 
블로그 번호 : https://www.cnblogs.com/su-root 
# 파일 이름 : mysqldb.sh의 
# 설명 : mysql_dmup의 
# *********************** ******************************* 
사용자 = 루트 # 사용자 이름         
패스 = 123456 # 암호 
소켓 = / tmp를 / mysql.sock # 로그인 
백 파일 = / 서버 / 백업 # 백업 경로는 
[! -d $ 백 파일이] &&에서 mkdir -p $ 백 파일 번호가 백업 경로가 있는지 여부를 확인  
cmd를이 = "MySQL의 -u $ 사용자 -p $ 통과 -S $ 소켓"#에 로그인 데이터베이스
덤프 = "mysqldump를 -u $ 사용자 -p $ 통과 -S $ 소켓 -B - X -F -R "#mysqldump 백업 매개 변수 
dblist =`$ cmd를 -e "쇼 데이터베이스;"| 나오지도 1D | egrep을 -v "_schema | MySQL은 "`# 라이브러리 이름의 목록을 
다시 라이브러리 목록까지주기 #for $의 dblist에 DB_NAME을 위해 
 $ 덤프 $ db_name 여기서 | GZIP> / 서버 / 백업 / $ {DB_NAME} _ $ (날짜 + %의 F) .sql.gz # + 지정된 경로에 시간 백업 패키지 라이브러리 이름은 

스크립트를 실행합니다 :

좋아, 백업 성공을 나누어!

여기서 우리는 하위 라이브러리 하위 테이블 백업을 소개합니다 :

데이터 백업을위한 스크립트를 작성하고, 첫째, 우리는 라이브러리 이름 목록 및 백업 할 테이블 이름의 목록을 얻을 필요가있다.

좋아, 라이브러리 이름과 얼굴을 얻을, 우리는 약간 (추가 테이블 이름이 순환)을 기반으로 기존의 스크립트를 수정

[root@bqh-118 scripts]# vim mysqldb1.sh 
#!/bin/sh
# ******************************************************
# Author       : a?锦衣卫 
# Last modified: 2019-05-18 13:25
# Email        : [email protected]
# blog         : https://www.cnblogs.com/su-root
# Filename     : mysqldb.sh
# Description  : mysql_dmup_fk
# ******************************************************
user=root        #用户名        
pass=123456      #密码
socket=/tmp/mysql.sock  #登录方式
backfile=/server/backup #备份路径
[ ! -d $backfile ] && mkdir -p $backfile #判断是否有备份路径
cmd="mysql -u$user -p$pass -S $socket"  #登录数据库
dump="mysqldump -u$user -p$pass -S $socket -X -F -R" #mysqldump备份参数 
dblist=`$cmd -e "show databases;"|sed 1d|egrep 'bqh|jyw'` #获取库名列表
for db_name in $dblist #for循环备份库列表
do
 tablest=`$cmd -e "show tables from $db_name;"|sed 1d` #获取库中表名
   for tname in $tablest  #for循环备份库中表名列表
   do
     mkdir -p $backfile/$db_name #创建库文件
     $dump $db_name $tname|gzip >$backfile/$db_name/${tname}_$(date +%F).sql.gz
                        #库名+表名+时间备份打包至指定路径下
   done
done

 

执行脚本:

ok,分库分表备份success!

추천

출처www.cnblogs.com/su-root/p/10885854.html