《Mysql實例MySQL備份時排除指定數據庫的方法》要點:
本文介紹了Mysql實例MySQL備份時排除指定數據庫的方法,希望對您有用。如果有疑問,可以聯系我們。
MYSQL數據庫使用mysqldump命令備份時候,--all-databases 可以備份所有的數據庫. 使用ignore-table 還可以排除制定的表.但是,mysqldump沒有參數可以排除數據庫的.
MYSQL數據庫要備份的數據庫少的時候,可以通過mysqldump -uroot -p123456 --databases db1 db2 db3 > mysqldump.sql 這樣來備份.
MYSQL數據庫但是假如數據庫有數十個的話,這樣寫起來很累人,也很low.解決辦法還是有的,看下面:
MYSQL數據庫【下面演示用的mysql用戶名的root,密碼123456】
MYSQL數據庫mysql -uroot -p123456 -e 'show databases;'|grep -E -v "Database|information_schema|mysql|test" |xargs mysqldump -uroot -p123456 --databases > mysqldump1.sql
MYSQL數據庫但是很不幸的是,在mysql5.5上執行備份時報錯了.
MYSQL數據庫查了下資料,發現是由于5.5以后,mysql的performance_schema庫導致的.那我們備份時跳過該庫即可,下面2種方法任選:
MYSQL數據庫1、mysql -uroot -p123456 -e 'show databases;'|grep -E -v "Database|information_schema|mysql|test" |xargs mysqldump -uroot -p123456 --skip-lock-tables performance_schema --databases > 2.sql
MYSQL數據庫2、mysql -uroot -p123456 -e 'show databases;'|grep -E -v "Database|information_schema|mysql|performance_schema" |xargs mysqldump -uroot -p123456 --databases > 3.sql
MYSQL數據庫我更喜歡第二種的寫法.
MYSQL數據庫下面是我寫的一個備份的mysql的腳本,每天夜里執行一次.寫的簡單些,語句也沒有做優化.
MYSQL數據庫
#!/bin/bash
# Description: backup mysql data
# Author: lee
FILE="mysql_`date +%F`"
BACKDIR="/mysqlbackup"
CONF_FILE="/etc/my.cnf"
mysql -uroot -e 'show databases'|egrep -v "Database|information_schema|performance_schema" \ |xargs mysqldump -uroot --databases > $BACKDIR/$FILE.sql && cp $CONF_FILE $BACKDIR/$FILE.cnf \
&& echo -e "Machine: Oracle\nIP: 172.16.10.12\nStatus: MySQL is backup complete" | \ mail -s "MySQL BackUP Complete" lee@126.com
MYSQL數據庫下圖的代碼看的更清楚寫.
MYSQL數據庫
MYSQL數據庫下面給大家介紹下MySQL使用mysqldump備份數據庫時排除指定表
MYSQL數據庫
#!/bin/sh
for j in `mysql -uroot -e "USE spservice;SHOW TABLES" | grep -v Tables`
do
case $j in
mo_log|mt_log|report_info)
:
;;
*)
mysqldump -uroot --default-character-set=gbk --opt spservice $j >> $j.sql
esac
done
>>表名不固定 #!/bin/sh
for j in `mysql -uroot -e "USE spservice;SHOW TABLES" | grep -v Tables`
do
for i in "$@"
do
if [ $j != $i ];then
mysqldump -uroot --default-character-set=gbk --opt spservice $j >> $j.sql
fi
done
done
>>更簡潔的方法
#!/bin/sh
for j in `mysql -uroot -e "USE spservice;SHOW TABLES" | grep -v Tables`
do
echo $@ | grep -wq "\<$j\>"
if [ $? -ne 0 ];then
mysqldump -uroot --default-character-set=gbk --opt spservice $j >> $j.sql
fi
done
>>使用方法
sh exclude.sh mo_log mt_log report_log
#定義一個shell數組
tables=(mo_log mt_log report_log)
sh exclude.sh ${tables[@]}
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/1217.html