1.mysqldump工具介紹
mysqldump命令是MySQL數(shù)據(jù)庫自帶的一個(gè)備份命令陶珠,它支持?jǐn)?shù)據(jù)庫全備也可以指定庫進(jìn)行備份,它備份的文件以文件形式備份蒋譬,且文件內(nèi)容都是SQL語句形式的存在割岛。
2.基本命令的使用
(1)mysqldump語法格式
mysqldump? [options] –u 用戶名 -p 密碼 數(shù)據(jù)庫名? >? 備份的文件
(2)mysqldump[options]參數(shù)列表如下表所示:
(3)連接mysql命令
[root@bigdata3 ~]# mysql -h10.9.1.43 -uroot -p123456 -e "show databases;"
去掉周圍邊框使用-s命令
[root@bigdata3 ~]# mysql -h10.9.1.43 -uroot -p123456@3306 -s -e "show databases;"
命令執(zhí)行結(jié)果如下圖所示:
(4)mysqldump命令多數(shù)據(jù)庫備份
[root@bigdata3 ~]# mysqldump -h10.9.1.43 -uroot -p123456 -B dandan_test oozie > /home/centos/mysql_back.bak
cd 到/home/centos目錄下查看生成了該文件
進(jìn)入該文件中查看,備份的數(shù)據(jù)全部以sql命令的形式生成犯助,如下圖所示蜂桶。
(5)mysqldump壓縮備份
[root@bigdata3 ~]# mysqldump -h10.9.1.43 -uroot -p123456 -B dandan_test | gzip > /home/centos/mysql_back_B.sql.gz
查看:
(6)數(shù)據(jù)庫備份恢復(fù)
刪掉dandan_test:drop database dandan_test;
非壓縮恢復(fù):
[root@bigdata3 centos]# mysql -h10.9.1.43 -uroot -p123456 </home/centos/mysql_back.bak
壓縮恢復(fù):
[root@bigdata3 centos]# gunzip < /home/centos/mysql_back_B.sql.gz | mysql -h10.9.1.43 -uroot -p123456
驗(yàn)證:
mysql -h10.9.1.43 -uroot -p123456 -e "use dandan_test;select * from tb_score1;"
[root@bigdata3 centos]# mysql -h10.9.1.43 -uroot -p123456 -e "use dandan_test;select * from tb_score1;"
(7)mysql備份表結(jié)構(gòu)
[root@bigdata3 centos]# mysqldump -h10.9.1.43 -uroot -p123456 -d dandan_test >/home/centos/dandan_test_back.bak
查看:
(8)mysql備份表數(shù)據(jù)
[root@bigdata3 ~]# mysqldump -h10.9.1.43 -uroot -p123456 -t dandan_test >/home/centos/dandan_test_back.bak
查看結(jié)果如下提所示:
3.mysql分庫備份shell腳本
具體shel腳本如下:
#!/bin/bash
DATE=$(date '+%Y%m%d')
HOST=10.9.1.43
USER=root
PASS=123456
BACKUP_DIR=/home/centos/db_backup
DB_LIST=$(mysql -h$Host -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep "dandan_test|oozie")
if [ ! -d $BACKUP_DIR ]
then
mkdir -p "$BACKUP_DIR"
fi
for DB in $DB_LIST; do
? ? BACKUP_NAME=$BACKUP_DIR/${DB}_${DATE}.sql
mysqldump -h$HOST -u$USER -p$PASS -B $DB > $BACKUP_NAME 2>/dev/null
? ? if [ $? != 0 ]; then
? ? ? ? echo "$BACKUP_NAME 備份失敗!"
? ? fi
done
4 mysql分表備份shell腳本
具體shell腳本如下:
#!/bin/bash
DATE=$(date '+%Y%m%d')
HOST=10.9.1.43
USER=root
PASS=123456
BACKUP_DIR=/home/centos/db_backup
DB_LIST=$(mysql -h$HOST -u$USER-p$PASS -s -e "show databases;" 2>/dev/null |egrep "dandan_test|oozie")
for DB in $DB_LIST; do
? ? BACKUP_DB_DIR=$BACKUP_DIR/${DB}_${DATE}
? ? [ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR &>/dev/null
? ? TABLE_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "use $DB;show tables;" 2>/dev/null)
? ? for TABLE in $TABLE_LIST; do
? ? ? ? BACKUP_NAME=$BACKUP_DB_DIR/${TABLE}.sql
? ? ? ? if ! mysqldump -h$HOST -u$USER -p$PASS $DB $TABLE > $BACKUP_NAME 2>/dev/null; then
? ? ? ? ? ? echo "$BACKUP_NAME 備份失敗!"
? ? ? ? fi
? ? done
done
5.小結(jié)
?? 本文主要闡述了Mysql分庫分表的備份方法,并對mysqldump工具具體操作進(jìn)行了分析研究也切,給出了具體備份的shell腳本扑媚,可以通過crontab定時(shí)任務(wù)按照項(xiàng)目需求進(jìn)行備份。
? 本文要點(diǎn):
(1)連接mysql的指令雷恃,前提需要安裝mysql客戶端疆股。
(2)mysqldump指令,注意分庫倒槐、分表指定的參數(shù)旬痹,及恢復(fù)的方法。
(3)mysql分庫的shell腳本的編寫
(4)mysql分表的shell腳本編寫(建議編寫時(shí)讨越,基本的指令需要先在linux中實(shí)驗(yàn)成功)