mysql可以在mysql运行的时候备份吗?

我刚刚在我的linux服务器上安装了丛林磁盘服务器版本,并设置为每晚备份完整的/ var目录。 当我的服务器和mysql正在运行时,是否有任何问题备份这个目录? 我读过你应该在备份mysql文件之前closuresmysql ..但在Jungle Disk文档中我没有看到任何这样的警告。

如果您想备份Mysql数据库,您应该从Jungledisk中排除Mysql数据库目录,然后定期使用mysqldump创build一个您可以备份的文件。

如果你不这样做,你的Mysql数据的Jungledisk备份很可能会被损坏,这取决于你的数据库的活跃程度。

在我的评论中,最好的办法是使用运行mysqldump的脚本并将数据库转储到jungledisk和备份的文件夹中,这将为您提供一个良好的数据库备份。 Mysqldump很容易使用,它只是几个标志,瞧不错的热复制备份。

其他答案有正确的想法,你不能,不应该,也不会(正确的)备份实时数据库文件。 你必须使用某种导出工具,而不是内置的mysqldump工具,我强烈build议使用mysqlhotcopy来确保数据的一致性。 在数据更改时备份数据会使您在恢复时处于故障状态。

保存并在一个cron作业上运行它 – 然后简单地把备份脚本备份到db转储目录

从@ NixCraft btw的人民伟大的脚本:

  #!/bin/bash # Shell script to backup MySql database # To backup Nysql databases file to /backup dir and later pick up by your # script. You can skip few databases from backup too. # For more info please see (Installation info): # http://www.cyberciti.biz/nixcraft/vivek/blogger/2005/01/mysql-backup-script.html # Last updated: Aug - 2005 # -------------------------------------------------------------------- # This is a free shell script under GNU GPL version 2.0 or above # Copyright (C) 2004, 2005 nixCraft project # Feedback/comment/suggestions : http://cyberciti.biz/fb/ # ------------------------------------------------------------------------- # This script is part of nixCraft shell script collection (NSSC) # Visit http://bash.cyberciti.biz/ for more information. # ------------------------------------------------------------------------- MyUSER="SET-MYSQL-USER-NAME" # USERNAME MyPASS="SET-PASSWORD" # PASSWORD MyHOST="localhost" # Hostname # Linux bin paths, change this if it can not be autodetected via which command MYSQL="$(which mysql)" MYSQLDUMP="$(which mysqldump)" CHOWN="$(which chown)" CHMOD="$(which chmod)" GZIP="$(which gzip)" # Backup Dest directory, change this if you have someother location DEST="/backup" # Main directory where backup will be stored MBD="$DEST/mysql" # Get hostname HOST="$(hostname)" # Get data in dd-mm-yyyy format NOW="$(date +"%d-%m-%Y")" # File to store current backup file FILE="" # Store list of databases DBS="" # DO NOT BACKUP these databases IGGY="test" [ ! -d $MBD ] && mkdir -p $MBD || : # Only root can access it! $CHOWN 0.0 -R $DEST $CHMOD 0600 $DEST # Get all database list first DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')" for db in $DBS do skipdb=-1 if [ "$IGGY" != "" ]; then for i in $IGGY do [ "$db" == "$i" ] && skipdb=1 || : done fi if [ "$skipdb" == "-1" ] ; then FILE="$MBD/$db.$HOST.$NOW.gz" # do all inone job in pipe, # connect to mysql using mysqldump for select mysql database # and pipe it out to gz file in backup dir :) $MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE fi done 

关于提供的脚本和做mysqldumps – 因为这个讨论集中在jungledisk,你不想gzip转储。

Jungledisk使用重复数据删除和差异备份来帮助提高存储效率。 如果你做生垃圾, 那么这一切工作。 如果你先gzip,那么它必须存储整个(不同的)gzip; 并没有获得备份速度或所需的备份存储空间的优化。

这是一个非常古老的问题,但目前还没有一个可以接受的答案,只有一个答案引用了除mysqldump以外的工具来执行备份。 正如VxJasonxV提到的,mysqlhotcopy可以用来在线复制数据库而不closures。 但是,mysqlhotcopy只能与MyISAM表一起使用。

如果你运行了很多InnoDB表,查看Percona的xtrabackup工具。 它将在不closuresMySQL的情况下在线备份您的MySQL数据库。 Percona已经构build了一个全能的脚本,可以备份你的InnoDB表和你的MyISAM表,而不需要离线你的数据库。 该脚本被称为innobackupex ,它结合上述的xtrabackup工具来执行您的在线备份。

检查一下,这绝对是非常容易备份MySQL数据库。