Backup tự động Mysql database server trên linux

Để đơn giản hóa công tác saoo lưu phục hồi hệ thống csdl trên linux thông thường các nhà quản trị sẽ kết hợp sự ưu việt của shell và tính năng crontab sẵn có trên hệ thống linux để tạo ra một quy trình backup musql databse server đơn giản, hiệu quả và mạnh mẽ: sau đây là đoạn script backup database server:

#!/bin/bash
# Shell script to backup MySql database
# To backup Nysql databases file to /backup dir and later pick up by your
# script. You can skip few databases from backup too.
# For more info please see (Installation info):
# http://www.cyberciti.biz/nixcraft/vivek/blogger/2005/01/mysql-backup-script.html
# Last updated: Aug – 2005


# ——————————————————————–
# This is a free shell script under GNU GPL version 2.0 or above
# Copyright (C) 2004, 2005 nixCraft project
# Feedback/comment/suggestions : http://cyberciti.biz/fb/
# ————————————————————————-
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# ————————————————————————-
MyUSER=”SET-MYSQL-USER-NAME”               # USERNAME
MyPASS=”SET-PASSWORD”                           # PASSWORD
MyHOST=”localhost”                                         # Hostname
# Linux bin paths, change this if it can not be autodetected via which command
MYSQL=”$(which mysql)”
MYSQLDUMP=”$(which mysqldump)”
CHOWN=”$(which chown)”
CHMOD=”$(which chmod)”
GZIP
=”$(which gzip)”
# Backup Dest directory, change this if you have someother location
DEST=”/backup”
# Main directory where backup will be stored
MBD=”$DEST/mysql”
# Get hostname
HOST=”$(hostname)”
# Get data in dd-mm-yyyy format
NOW=”$(date +”%d-%m-%Y”)”
# File to store current backup file
FILE=””
# Store list of databases
DBS=””
# DO NOT BACKUP these databases
IGGY=”test”
[ ! -d $MBD ] && mkdir -p $MBD || :
# Only root can access it!
$CHOWN 0.0 -R $DEST
$CHMOD 0600 $DEST

# Get all database list first
DBS=”$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse ‘show databases’)”
for db in $DBS
do
skipdb=-1
if [ “$IGGY” != “” ];
then
for i in $IGGY
do
[ “$db” == “$i” ] && skipdb=1 || :
done
fi
if [ “$skipdb” == “-1” ] ; then
FILE=”$MBD/$db.$HOST.$NOW.gz”
# do all inone job in pipe,
# connect to mysql using mysqldump for select mysql database
# and pipe it out to gz file in backup dir🙂
$MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
fi
done

Nhiệm vụ của đoạn script là backup toàn bộ database server , nén lại và lưu trong một thư mục xác định do chúng ta khai báo đặc biệt hỗ trợ ghi nhận ngày tháng lưu theo tên tập tin backup.

Để tiện các bạn có thể down script backup mysql database server tại đây

Để lập lịch cho file script sử dụng chức năng crontab như sau (xem lại bài crontab để biết chi tiết)

@daily /path/to/yourmysql.sh

Posted on 13/04/2011, in Linux and tagged , , , , . Bookmark the permalink. 3 phản hồi.

  1. Chào bạn .Bạn cho mình hỏi chút là cái là cái đoạn mã này khi soạn xong .thì nó có dạng là *.sh.Vậy phải vứt nó ở trong thư mục nào .Thank bạn nhiều

  2. mình có take note là xem cái bài crontab để sử dụng file đó trong lap lịch backup đó bạn
    https://letonphat.wordpress.com/2011/04/09/khi-niệm-crontab-trn-linux/
    Hoặc bạn có thể chạy manual luôn bằng tay bằng cú pháp ./file.sh

  3. Đàm Quang Bình

    anh Phát ơi, anh có thể hướng dẫn chi tiết giúp em phần Mysql automatic backup script không ah, khi dùng script này có cần cài đặt Mysql không ah.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: