모든 데이터가 돈 후 바로 작업이 종종 데이터베이스 백업은 매우 중요한 것은, 생명입니다! 아도 다음 소개 : 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!