MySQL数据库本地备份和双机相互备份脚本

日期: 2008-06-18 来源:TechTarget中国

    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 [ “$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=”walteyh@sohu.com’>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

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐