我自己写的,请多指教。
mysqldump_all.sh [first|local|help}
修改脚本以进行必要的配置,然后以root用户身份执行。
1.首先,在执行远程备份时使用第一个参数。
2.本地备份的本地参数
3.远程备份不需要参数注1
注意:另一台主机上的Mysql用户需要用。
需要配置的地方:
# define host and mysql password
REMOTE_HOST='' #远程主机名或IP。
REMOTE_PASSWORD='' # root@远程主机的mysql中的本地主机密码。
# define database path
DB_PATH='/var/lib/mysql' # Database path of local relational database
LOCAL_PASSWORD='' # User password of local mysql root directory.
DB_BACKUP_PATH='/root/db_bk' #本地备份期间保存数据的路径。
NO_BACKUP_DB=' '在本地数据库中设置不想备份的数据库名称,用空格分隔。
直接下载
#!/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 walteyh@sohu.com';
fi
# Ended all backup opretion!
echo '';
echo 'Note: if there is come wrong message white MySQL, you should check your configure first!';
exit