|
MySQL的本地備份和雙機(jī)相互備份腳本
|
作者: 出處:www.1to2.us 更新時(shí)間: 2007年01月24日
|
先修改腳本進(jìn)行必要的配置,然后以root用戶執(zhí)行. 1. 第一執(zhí)行遠(yuǎn)程備份時(shí)先用 first參數(shù). 2. 本地備份用local參數(shù) 3. 遠(yuǎn)程備份不用參數(shù)<注意1> 注意:需要在另一主機(jī)上的Mysql用戶用添加用戶.. 需要配置的地方: # define host and mysql password REMOTE_HOST="" #遠(yuǎn)程主機(jī)名或IP REMOTE_PASSWORD="" #遠(yuǎn)程主機(jī)的mysql中的root@本地主機(jī) 密碼. # define database path DB_PATH="/var/lib/mysql" #本地mysql數(shù)據(jù)庫路徑 LOCAL_PASSWORD="" #本地mysql root用戶密碼 DB_BACKUP_PATH="/root/db_bk" #本地備份時(shí)數(shù)據(jù)保存的路徑 NO_BACKUP_DB="" 設(shè)置本地?cái)?shù)據(jù)庫中不想備份的數(shù)據(jù)庫名,用空格隔開 直接下載 #!/bin/sh # mysqldump_all.sh # this scripts is used to backup MySQL database bettwen tow MySQL SERVER! # define host and mysql password REMOTE_HOST="" REMOTE_PASSWORD="" # define database path DB_PATH="/var/lib/mysql" LOCAL_PASSWORD="" DB_BACKUP_PATH="/root/db_bk" # define which database no back up, write db anme escap whit space! # example; # NO_BACKUP_DB="yns test ps_note" # this said that if db name is "yns" or "test" or "ps_note", then not backup them! NO_BACKUP_DB="" # get the database name and process one by one echo "Start to Backup..."; #ls /var/lib/mysql > /tmp/mydb.all if [ "$1" != "help" ]; then for db in `ls $DB_PATH`; do if_backup="1" if [ -d $DB_PATH/$db ] then for noBackDB in $NO_BACKUP_DB do if ( test "$db" = "$noBackDB" ); then #echo -n "..."; if_backup=""; fi done if [ $if_backup ]; then case "$1" in first) echo -n "Crate db [ $db ] on $REMOTE_HOST first!" result=`mysqladmin -h $REMOTE_HOST --password=$REMOTE_PASSWORD create $db` if [ ! $result ]; then echo "...Done!"; else echo "...Fialed! check your configure plz!"; echo "Remote host said: $result"; exit fi ;; local) # back up to localhost dir. if [ ! -d $DB_BACKUP_PATH ]; then mkdir $DB_BACKUP_PATH fi echo -n "[ $db ]....Backup to local$DB_BACKUP_PATH with gzip"; if [ -e "$DB_BACKUP_PATH/$db.gz" ]; then mv $DB_BACKUP_PATH/$db.gz $DB_BACKUP_PATH/$db.1.gz; fi mysqldump --password=Walte#Ming $db | gzip > $DB_BACKUP_PATH/$db.gz echo "...[OK]" ;; *) # Do common Backup! echo -n "[ $db ]...Do Backup! ====>> $REMOTE_HOST/$db"; mysqldump --add-drop-table $db --password=$LOCAL_PASSWORD | mysql -h $REMOTE_HOST --password=$REMOTE_PASSWORD $db echo "....[OK]"; esac else echo "[ $db ]"; echo "***This database set to Not backup!...Operation CANCELED!"; fi else echo "[ $db ]"; echo "***Warning! Not a DataBbase. Backup Canceled***"; fi done else echo "Usage: mysqldupm_all.sh [firs|local|help]"; echo "Some question ask for href="mailto:walteyh@sohu.com";">walteyh@sohu.com"; fi # Ended all backup opretion! echo ""; echo "Note: if there is come wrong message white MySQL, you should check yourconfigure first!"; exit
|
|
|
|