MySql数据库备份脚本

mysql备份数据库,使用企业级,可以防止数据库出错。
分库备份

  1. mysqldump -uroot -pxxx -B A > A.sql
  1. #!/bin/bash
  2. DATE=$(date +%F_%H-%M-%S)
  3. HOST=localhost
  4. USER=backup
  5. PASS=123.com
  6. BACKUP_DIR=/data/db_backup
  7. DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v "Database|information_schema|mysql|performance_schema|sys")
  8. for DB in $DB_LIST; do
  9. BACKUP_NAME=$BACKUP_DIR/${DB}_${DATE}.sql
  10. if ! mysqldump -h$HOST -u$USER -p$PASS -B $DB > $BACKUP_NAME 2>/dev/null; then
  11. echo "$BACKUP_NAME 备份失败!"
  12. fi
  13. done

分表备份

  1. mysqldump -uroot -pxxx -A t > t.sql
  1. #!/bin/bash
  2. DATE=$(date +%F_%H-%M-%S)
  3. HOST=localhost
  4. USER=backup
  5. PASS=123.com
  6. BACKUP_DIR=/data/db_backup
  7. DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v "Database|information_schema|mysql|performance_schema|sys")
  8. for DB in $DB_LIST; do
  9. BACKUP_DB_DIR=$BACKUP_DIR/${DB}_${DATE}
  10. [ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR &>/dev/null
  11. TABLE_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "use $DB;show tables;" 2>/dev/null)
  12. for TABLE in $TABLE_LIST; do
  13. BACKUP_NAME=$BACKUP_DB_DIR/${TABLE}.sql
  14. if ! mysqldump -h$HOST -u$USER -p$PASS $DB $TABLE > $BACKUP_NAME 2>/dev/null; then
  15. echo "$BACKUP_NAME 备份失败!"
  16. fi
  17. done
  18. done