先修改脚本进行必要的配置,然后以root用户执行.
1. 第一执行远程备份时先用 first参数.
2. 本地备份用local参数
3. 远程备份不用参数
注意:需要在另一主机上的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 [ $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