MySQL 备份

原文:MySQL 备份

http://rimuhosting.com/howto/mysqlbackup.jsp

 

Automated MySQL Database Backup

Version 1

Want to backup your MySQL databases to another machine on a nightly basis? 

Then create a /etc/cron.daily/mysqlbackup.sh job like this:

mysqldump --compress -u root -p$pw -h $currenthost --add-drop-table --extended-insert --quote-names --databases db1 db2| mysql -u root -p$pw -h $remotehost

 

Run chmod +x /etc/cron.daily/mysqlbackup.sh.  And change the $ parameters to the appropriate 'real' values.

Or if you are not backing up to a separate host, run:

mysqldump -u root -p$pw -h $currenthost --add-drop-table --extended-insert --quote-names --databases db1 db2 > /var/log/mysql.backup.$(date +"%Y%m%d").sql 

 

Version 2

This one is slightly more advanced. It's a bash script that will basically do the same as above but also only keep a certain number of old copies.

Note that this script is prepared to backup as the root user, if you are going to be running this as a non root user you should modify paths to reflect that.

#!/bin/sh

# List of databases to be backed up separated by space
dblist="db_name_1 db_name_2 db_name_3 etc."

# Directory for backups
backupdir=/root/mysql_dumps

# Number of versions to keep
numversions=4

# Full path for MySQL hotcopy command
# Please put credentials into /root/.my.cnf
#hotcopycmd=/usr/bin/mysqlhotcopy
hotcopycmd="/usr/bin/mysqldump --lock-tables --databases"

# Create directory if needed
mkdir -p "$backupdir"
if [ ! -d "$backupdir" ]; then
   echo "Invalid directory: $backupdir"
   exit 1
fi

# Hotcopy begins here
echo "Dumping MySQL Databases..."
RC=0
for database in $dblist; do
   echo
   echo "Dumping $database ..."
   mv "$backupdir/$database.gz" "$backupdir/$database.0.gz" 2> /dev/null
   $hotcopycmd $database | gzip > "$backupdir/$database.gz"

   RC=$?
   if [ $RC -gt 0 ]; then
     continue;
   fi

   # Rollover the backup directories
   rm -fr "$backupdir/$database.$numversions.gz" 2> /dev/null
   i=$numversions
   while [ $i -gt 0 ]; do
     mv "$backupdir/$database.`expr $i - 1`.gz" "$backupdir/$database.$i.gz" 2> /dev/null
     i=`expr $i - 1`
   done
done

if [ $RC -gt 0 ]; then
   echo "MySQL Dump failed!"
   exit $RC
else
   # Hotcopy is complete. List the backup versions!
   ls -l "$backupdir"
   echo "MySQL Dump is complete!"
fi
exit 0

 

So this system has three parts. First is the file that holds the credentials, e.g. /root/.my.cnf and it's in standard mysql config format like so:

# cat /root/.my.cnf  [client] user=root password=whatever 

 

Second is the script itself, as listed above. Enter the names of your dbs, how many copies to keep, and where to put them.

 

Third is the crontab entry that will run this script for you. For example, once per day:

# (Use to post in the top of your crontab)
# ----------------- minute (0 - 59)
# |  -------------- hour (0 - 23)
# |  |  ----------- day of month (1 - 31)
# |  |  |  -------- month (1 - 12)
# |  |  |  |  ----- day of week (0 - 7) (Sunday=0 or 7)
# |  |  |  |  |
# *  *  *  *  *  command to be executed

35 01 * * * /root/mysql_backup.sh

 

 

完!

时间: 2024-11-08 22:51:35

MySQL 备份的相关文章

mysql备份脚本

mysql|备份|脚本 操作系统:windows2000 professional 数据库:mysql server4.0.18 首先创建一个批处理文件,在这里名为dbBackup.bat 然后在文件中添加如下内容: rem 判断mysql服务是否启动,然后将查询结果输出到server.log文件里netstat -na | (find "0.0.0.0:3306" & find "LISTENING")>server.logrem 手工建立一个空的文

使用MYSQL备份数据恢复

mysql|备份|恢复|数据    数据库毁坏发生的原因有许多,且程度各不相同.如果幸运的话,可能是一两个表的小毁坏(例如,如果您的机器由于断电而暂时停机).如果不是这样,可能需要置换整个的数据目录(例如,如果某个磁盘瘫痪而且数据目录在它上).在其他情况下也需要恢复操作,例如,当用户错误地删除数据库或表时,或者错误地删除表的内容时.不论这些不幸的事件发生是由于什么原因,都需要恢复它们.    如果表被毁坏但没有丢失,可试着用myisamchk 或isamchk 来修复它们.如果修复实用程序能修复

mysql备份恢复中的常见错误

从A主机备份到B主机 mysqldump -uroot  -p vw>vw.sql 现备份数据库文件,需要恢复到目标机B,B的数据库版本为5.5.23,A机器的mysql版本为5.0.22 mysql>source /root/vw.sql; -------------------- Query OK, 6748 rows affected (0.13 sec) Records: 6748 Duplicates: 0 Warnings: 0 Query OK, 6807 rows affect

MySQL备份和同步时使用LVM

If someone asks me about MySQL Backup advice my first question would be if they have LVM installed or have some systems with similar features set for other operation systems. Veritas File System can do it for Solaris. Most SAN systems would work as w

mysql备份方案

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://kerry.blog.51cto.com/172631/158476 数据库备份方案 一.主从同步 可以参考http://kerry.blog.51cto.com/172631/110206 二.增量备份: 每天中午12点和晚上12点做一次全备,每隔一小时备份binlog,也就是增量备份,具体操作如下: Linux下开启binlog /etc/my.cnf中的mysqld部分加入

新手教程:MySQL备份数据库命令

MySQL备份数据库命令 1.导出整个数据库 导出文件默认是存在mysql\bin目录下 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u user_name -p123456 database_name > outfile_name.sql 2.导出一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 mysqldump -u user_name -p database_name table_name > ou

RDS中的MYSQL备份恢复

RDS使用mysqldump对 MySQL 数据库进行逻辑全量备份,使用开源软件Xtrabackup进行物理全量备份,是实例级别的备份. 用户登录RDS控制台,可以下载备份文件.按照 利用逻辑备份文件恢复到自建数据库-MySQL和利用物理备份文件恢复到自建数据库-MySQL中的操作步骤,实现数据的恢复. 本文主要从原理的角度来介绍MySQL数据库的备份和恢复,希望能让用户更加了解RDS的备份恢复机制.   一.备份类型介绍 1. 按备份操作方式:物理备份和逻辑备份 备份方式 优点 缺点 逻辑备份

MySQL 备份和恢复

MySQL 备份和恢复 本文讨论 MySQL 的备份和恢复机制,以及如何维护数据表,包括最主要的两种表类型:MyISAM 和 Innodb 目前 MySQL 支持的免费备份工具有:mysqldump.mysqlhotcopy,还可以用 SQL 语法进行备份:BACKUP TABLE 或者 SELECT INTO OUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据文件和相关的配置文件.MyISAM 表是保存成文件的形式,因此相对比较容易备份,上面提到的几种方法都可以使用.I

mysql备份时会拖慢整台机器性能,有什么调整方案?

问题描述 mysql备份时会拖慢整台机器性能,有什么调整方案? 现在是每天凌晨3点半开始备份,全库打包压缩,现在备份一次要1个多小时,备份期间整台机器基本无法访问,无法进行数据库的任何操作. 应该如何改进? 做个主从数据库吗? 解决方案 .....你牛B,数据量大的,一般都是有主从服务器的.从服务器都是备份, 一般都是数据库导出备份 建议 从服务器备份,你可以试验一下 导出数据做备份. 解决方案二: 这个肯定要使用主从数据库,备份要一个小时了,说明数据量还是很大的.如果要使用mysql,使用主从

MySQL备份还原——AutoMySQLBackup介绍

AutoMySQLBackup是一个开源的MySQL备份脚本.可以说它是一个轻量级的备份方案,AutoMySQLBackup的安装.配置非常简单.方便.AutoMySQLBackup的sourceforge上介绍有如它本身,也非常的简单: Description AutoMySQLBackup with a basic configuration will create Daily, Weekly and Monthly backups of one or more of your MySQL