MySQL数据库备份与还原方法总结
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-23 14:36:02 浏览: 评论:0
MySQL数据库备份与还原方法不少因为有命令方式与工具方式还有就是用户自定义的程序备份,下面我来稍加整理一些常用的MySQL数据库备份与还原方法,希望例子能帮助到大家.
备份策略一:直接拷贝数据库文件(不推荐)
备份策略二:使用mysqlhotcopy备份数据库(完全备份,适合小型数据库备份)
备份策略三:使用mysqldump备份数据库(完全+增量备份,适合中型数据库备份)
备份策略四:使用主从复制机制(replication)(实现数据库实时备份)
备份策略一、直接拷贝数据库文件
直接拷贝数据文件最为直接、快速、方便,但缺点是基本上不能实现增量备份。为了保证数据的一致性,需要在备份文件前,执行以下 SQL 语句:
FLUSH TABLES WITH READ LOCK;
也就是把内存中的数据都刷新到磁盘中,同时锁定数据表,以保证拷贝过程中不会有新的数据写入。这种方法备份出来的数据恢复也很简单,直接拷贝回原来的数据库目录下即可
备份策略二、使用mysqlhotcopy备份数据库
mysqlhotcopy 是一个 PERL 程序,最初由Tim Bunce编写。它使用 LOCK TABLES、FLUSH TABLES 和 cp 或 scp 来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库文件(包括数据表定义文件、数据文件、索引文件)所在的机器上,并且mysqlhotcopy 只能用于备份 MyISAM表。
本备份策略适合于小型数据库的备份,数据量不大,可以采用mysqlhotcopy程序每天进行一次完全备份。
备份策略布置:
1)、安装DBD-mysql perl模块,支持mysqlhotcopy脚本连接到MySQL数据库。
- shell> tar -xzvf DBD-mysql-4.005.tar.gz
- shell> cd DBD-mysql-4.005
- shell> unset LANG
- shell> perl Makefile.PL -mysql_config=/usr/local/mysql/bin/mysql_config -testuser=root -testpassword=UserPWD
- shell> make
- shell> make test
- shell> make install
2)、设置crontab任务,每天执行备份脚本
shell> crontab -e
0 3 * * * /root/MySQLBackup/mysqlbackup.sh >/dev/null 2>&1
每天凌晨3:00执行备份脚本.
mysqlbackup.sh注释:
- #!/bin/sh
- # Name:mysqlbackup.sh
- # PS:MySQL DataBase Backup,Use mysqlhotcopy script.
- # Write by:i.Stone
- # Last Modify:2007-11-15
- #
- # 定义变量,请根据具体情况修改
- # 定义脚本所在目录
- scriptsDir=`pwd`
- # 数据库的数据目录
- dataDir=/usr/local/mysql/data/
- # 数据备份目录
- tmpBackupDir=/tmp/tmpbackup/
- backupDir=/tmp/mysqlbackup/
- # 用来备份数据库的用户名和密码
- mysqlUser=root
- mysqlPWD=111111
- # 定义eMail地址
- eMail=alter@somode.com
- # 如果临时备份目录存在,清空它,如果不存在则创建它
- if [[ -e $tmpBackupDir ]]; then
- rm -rf $tmpBackupDir/*
- else
- mkdir $tmpBackupDir
- fi
- # 如果备份目录不存在则创建它
- if [[ ! -e $backupDir ]];then
- mkdir $backupDir
- fi
- # 清空MySQLBackup.log
- if [[ -s MySQLBackup.log ]]; then
- cat /dev/null >MySQLBackup.log
- fi
- # 得到数据库备份列表,在此可以过滤不想备份的数据库
- for databases in `find $dataDir -type d | \
- sed -e "s/\/usr\/local\/mysql\/data\///" | \
- sed -e "s/test//"`; do
- if [[ $databases == "" ]]; then
- continue
- else
- # 备份数据库
- /usr/local/mysql/bin/mysqlhotcopy --user=$mysqlUser --password=$mysqlPWD -q "$databases" $tmpBackupDir
- dateTime=`date "+%Y.%m.%d %H:%M:%S"`
- echo "$dateTime Database:$databases backup success!" >>MySQLBackup.log
- fi
- done
- # 压缩备份文件
- date=`date -I`
- cd $tmpBackupDir
- tar czf $backupDir/mysql-$date.tar.gz ./
- # 发送邮件通知
- if [[ -s MySQLBackup.log ]]; then
- cat MySQLBackup.log | mail -s "MySQL Backup" $eMail
- fi
- # 使用smbclientmv.sh脚本上传数据库备份到备份服务器
- # $scriptsDir/smbclientmv.sh
smbclientmv.sh注释
- #!/bin/sh
- # Name:smbclientmv.sh
- # PS:Move the data to Backup Server.
- # Write by:i.Stone
- # Last Modify:2007-11-15
- #
- # 定义变量
- # 备份服务器名
- BackupServer="BackupServerName"
- # 共享文件夹名
- BackupShare="ShareName"
- # 备份服务器的访问用户名和密码
- BackupUser="SMBUser"
- BackupPW="SMBPassword"
- # 定义备份目录
- BackupDir=/tmp/mysqlbackup
- date=`date -I`
- # Move the data to BackupServer
- smbclient //$BackupServer/$BackupShare \
- $BackupPW -d0 -W WORKGROUP -U $BackupUser \
- -c "put $BackupDir/mysql-$date.tar.gz \
- mysql-$date.tar.gz"//开源代码phpfensi.com
- # Delete temp files
- rm -f $BackupDir/mysql-$date.tar.gz
3)、恢复数据库到备份时的状态
mysqlhotcopy 备份出来的是整个数据库目录,使用时可以直接拷贝到 mysqld 指定的 datadir (在这里是 /usr/local/mysql/data/)目录下即可,同时要注意权限的问题,如下例:
shell> cp -rf db_name /usr/local/mysql/data/
shell> chown -R mysql:mysql /usr/local/mysql/data/ (将 db_name 目录的属主改成 mysqld 运行用户)
本套备份策略只能恢复数据库到最后一次备份时的状态,要想在崩溃时丢失的数据尽量少应该更频繁的进行备份,要想恢复数据到崩溃时的状态请使用主从复制机制(replication)。
一、Win32系统下MySQL的备份还原方法
备份:在“运行”中输入“cmd ”,利用“cd /Program Files/MySQL/MySQL Server 5.0/bin”进入bin文件夹,输入“mysqldump -u 用户名 -p databasename >exportfilename”导出数据库到文件,如mysqldump -u root -p voice>voice.sql,然后输入密码即可开始导出MYSQL数据,实现备份操作。
还原:进入MySQL Command Line Client,输入密码,进入到“mysql>”,输入命令"show databases;",回车,看看有些什么数据库;建立你要还原的数据库,输入"create database voice;",回车;切换到刚建立的数据库,输入"use voice;",回车;导入数据,输入"source voice.sql;",回车,开始导入,再次出现"mysql>"并且没有提示错误即还原成功。
二、Linux下MySQL的备份与还原方法:
备份:[root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录)
[root@localhost mysql]# mysqldump -u root -p voice>voice.sql,输入密码即可。
还原:有两种方法可选:
第一种方法:[root@localhost ~]# mysql -u root -p 回车,输入密码,进入MySQL的控制台"mysql>",同1.2还原。
第二种方法:
[root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录)
[root@localhost mysql]# mysql -u root -p voice<voice.sql,输入密码即可。
Tags: MySQL备份 MySQL还原
相关文章
- ·简单的大数据量MySQL备份的PHP脚本(2014-09-23)
- ·mysql 导出单表数据/备份单表数据语句(2014-09-23)
- ·windows万能mysql数据库备份脚本(2014-09-27)
- ·mysql中mysqlhotcopy备份使用说明(2014-09-27)
- ·mysql数据库备份并加密的备份sql脚本(2014-09-28)
- ·windows下mysql每天定时备份数据库几种方法(2014-09-28)
- ·Linux自动备份MySQL数据库脚本代码(2014-09-28)
- ·linux mysql 数据库自动备份的设置方法(2014-09-28)
- ·几种MySQL备份常用方法整理(2014-09-28)
- ·MySQL导出备份(数据导出)方法详解(2014-09-29)
- ·Mysql mysqldump命令备份所有数据库(2014-10-02)
- ·Mysql备份压缩及恢复数据库方法总结(2014-10-04)
- ·mysql异地数据库备份实例代码(2014-10-05)
- ·mysql数据库备份与恢复各种方法总结(2014-10-07)
- ·mysql中mysqlhotcopy备份数据库总结(2014-10-08)
- ·mysql数据备份方法总结(2014-10-09)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)