MySQL備份時排除指定資料庫的方法_Mysql

來源:互聯網
上載者:User

使用mysqldump命令備份時候,--all-databases 可以備份所有的資料庫。 使用ignore-table 還可以排除制定的表。但是,mysqldump沒有參數可以排除資料庫的。

要備份的資料庫少的時候,可以通過mysqldump -uroot -p123456 --databases db1 db2 db3 > mysqldump.sql 這樣來備份。

但是假如資料庫有數十個的話,這樣寫起來很累人,也很low。解決辦法還是有的,看下面:

【下面示範用的mysql使用者名稱的root,密碼123456】

mysql -uroot -p123456 -e 'show databases;'|grep -E -v "Database|information_schema|mysql|test" |xargs mysqldump -uroot -p123456 --databases > mysqldump1.sql

但是很不幸的是,在mysql5.5上執行備份時報錯了。

查了下資料,發現是由於5.5以後,mysql的performance_schema庫導致的。那我們備份時跳過該庫即可,下面2種方法任選:

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

2、mysql -uroot -p123456 -e 'show databases;'|grep -E -v "Database|information_schema|mysql|performance_schema" |xargs mysqldump -uroot -p123456 --databases > 3.sql

我更喜歡第二種的寫法。

下面是我寫的一個備份的mysql的指令碼,每天夜裡執行一次。寫的簡單些,語句也沒有做最佳化。

#!/bin/bash# Description: backup mysql data# Author: leeFILE="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使用mysqldump備份資料庫時排除指定表

#!/bin/shfor 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  esacdone>>表名不固定 #!/bin/shfor 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  donedone>>更簡潔的方法#!/bin/shfor 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  fidone>>使用方法sh exclude.sh mo_log mt_log report_log#定義一個shell數組tables=(mo_log mt_log report_log)sh exclude.sh ${tables[@]}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.