mysql master/slave 数据库备份
- - 数据库 - ITeye博客出自:http://blog.csdn.net/mer1234567/article/details/7405775. Mysql内建的复制功能是构建大型,高性能应用程序的基础. 将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.
最近使用了testlink和mantis这2个测试相关的系统,而他们又全部是基于mysql+php开发的,因此定期备份数据库也是很有必要的,下面是自己写的一个简单的shell脚本。我的mysql是通过xampp这个套件安装的,因为这个套件可以一起安装testlink和mantis需要的php+apache环境。
下面附上脚本,不足之处,请指出,谢谢!
#!/bin/bash #this script will backup the mysql databases and source code automatically. #Date: 2013-11-21 #Author: Cullen #variable list DbTestCase=testlink #testlink的数据库名称 DbBug=bugtracker #mantis在mysql里的数据库名称 DbUser=root DbPwd=admin BackupPath=/root/mysql_backup/ LogFile=/root/mysql_backup/log_file #check the backup file exists or not if [ ! -d $BackupPath ]; then mkdir $BackupPath fi for DbName in $DbTestCase $DbBug do NewFile="$BackupPath""$DbName"$(date +%y%m%d).tar.gz DumpFile="$BackupPath""$DbName"$(date ++%y%m%d).sql OldFile="$BackupPath""$DbName"$(date +%y%m%d --date='1 weeks ago').tar.gz echo "-----------------------------------------" echo $(date +"%y-%m-%d %H:%M:%S") echo "-----------------------------------------" #create new backup file weekly if [ -f $NewFile ]; then echo "New backup file have exists!" else /opt/lampp/bin/mysqldump -uroot -padmin $DbName > $DumpFile tar czvf $NewFile $DumpFile rm -rf $DumpFile echo "[$NewFile] backup completely!" >> $LogFile fi #remove the obsolete file if [ -f $OldFile ]; then rm -f $OldFile echo "delete the old file: [$OldFile]" fi done可以将这个脚本加入到cron例行程序里,就可以自动备份数据库了。