程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL備份時消除指定命據庫的辦法

MySQL備份時消除指定命據庫的辦法

編輯:MySQL綜合教程

MySQL備份時消除指定命據庫的辦法。本站提示廣大學習愛好者:(MySQL備份時消除指定命據庫的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL備份時消除指定命據庫的辦法正文


應用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: 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" [email protected]

下圖的代碼看的更清晰寫。

上面給年夜家引見下MySQL應用mysqldump備份數據庫時消除指定表

#!/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[@]}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved