MySQL的本地备份和双机相互备份脚本

ZDNet软件频道 时间:2008-09-22 作者:ChinaITLab | ChinaITLab 我要评论()
本文关键词:Mysql 备份 脚本
本文介绍MySQL的本地备份和双机相互备份脚本。

先修改脚本进行必要的配置,然后以root用户执行.

1. 第一执行远程备份时先用 first参数.

2. 本地备份用local参数

3. 远程备份不用参数<注意1>

注意:需要在另一主机上的Mysql用户用添加用户..

需要配置的地方:

# define host and Mysql password

REMOTE_HOST="" #远程主机名或IP

REMOTE_PASSWORD="" #远程主机的Mysql中的root@本地主机 密码.

# define database path

DB_PATH="/var/lib/Mysql" #本地Mysql数据库路径

LOCAL_PASSWORD="" #本地Mysql root用户密码

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 [ "" != "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 "" 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

查看本文来源


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134