MySQL数据库怎么备份
发布时间:2025-05-21 22:02:38 发布人:远客网络
一、MySQL数据库怎么备份
如果我们网站数据并不是很多,而且能够管理好网站,我们可以采用定期手动备份网站数据。但是,如果我们每天网站流动数据较多、重要性更强,我们可以采用定时、同步等备份策略。但是在这篇文章中,我将分享普通个人网站、以及常规的个人手动不定时的备份LinuxVPS、服务器中网站文件、MySQL数据库的方法。
第一、Linux备份网站、数据库准备
小编在这篇文章中分享的方法基本上适合大部分LinuxVPS、服务器环境中的网站备份。我们的目的是要备份网站目录所在的所有网页文件、以及可能在使用的MySQL数据库。
1、登入当前VPS、服务器SSH远程,进入当前网站所在的目录,准备通过命令直接打包网页文件。
2、利用PHPMyAdmin或者mysqldump命令备份数据库。前者适合数据库较小的,安全起见还是用后者备份。
这里我们将网页文件都打包,然后通过FTP工具直接将打包文件下载到本地,或者我们可以wget到其他服务器中。有些朋友喜欢直接FTP不压缩下载,这样效率太低了,我们需要压缩后下载,提高效率。不熟悉tar或者zip等压缩命令的可以参考这篇文章。
如果数据库比较小,可以采用这个方式备份,不过需要注意一个问题。如果我们是需要转移服务器,用这个方法备份数据库要记住当前和转入过去数据库的版本兼容问题,最好是一样的版本。
根据上图,我们可以备份当前网站的数据库。
mysqldump-u数据库名-p数据库密码数据库>laobuluo.sql
这里可以直接用mysqldump命令导出数据库,这样的备份模式比较安全且比较完整。
第四、VPS服务器备份网站数据小结
1、除非我们认为自己网站、项目数据不重要,那我们可以不备份。即便是服务再好的服务商,我们都需要备份数据。
2、以上这个备份方式适合数据量不大且可控范围内的进行手动备份数据和数据库。如果是吞吐数据较大的项目,我们需要用到其他高端方式。
以上就是MySQL数据库备份的四个步骤。
二、如何备份MYSQL数据库
定期的备份可使我们数据库崩溃造成的损失大大降低。在MySQL中进行数据备份的方法有两种,一种是使用mysqldump程序,一种是使用mysqlhotcopy、cp、tar或cpio等打包程序直接拷贝数据库文件。mysqldump程序备份数据库较慢,但它生成的文本文件便于移植。使用mysqlhotcopy等程序备份速度快,因为它直接对系统文件进行操作,需人为协调数据库数据的备份前后一致性。
使用mysqldump备份数据库其实就是把数据库转储成一系列CREATE TABLE和INSERT语句,通过这些语句我们就可重新生成数据库。使用mysqldump的方法如下:
% mysqldump--opt testdb| gzip>/data/backup/testdb.bak
#--opt选项会对转储过程进行优化,生成的备份文件会小一点,后的管道操作会进行数据压缩
% mysqldump--opt testdb mytable1,mytable2| gzip>/data/backup/testdb_mytable.bak
#可在数据库后接数据表名,只导出指定的数据表,多个数据表可用逗号分隔
--opt选项还可激活--add-drop-table选项,它将会在备份文件的每条CREATE TABLE前加上一条DROP TABLE IF EXISTS语句。这可方便进行数据表的更新,而不会发生“数据表已存在”的错误。
用mysqldump命令还可直接把数据库转移到另外一台服务器上,不用生成备份文件。重复执行可定期更新远程数据库。
% mysqladmin-h remote_host create testdb
% mysqldump--opt testdb| mysql-h remote_host testdb
另外还可通过ssh远程调用服务器上的程序,如:
% ssh remote_host mysqladmin create testdb
% mysqldump--opt testdb| ssh remote_host mysql testdb
通过直接拷贝系统文件的方式备份数据库,在备份时,要确保没有人对数据库进行修改操作。要做到这点,最好关闭服务器。如果不能关闭的,要以只读方试锁定有关数据表。下面是一些示例:
% cp-r db/backup/db#备份db数据库到/backup/db目录
% cp table_name.*/backup/db#只备份table_name数据表
% scp-r db remotehot:/usr/local/mysql/data#用scp把数据库直接拷贝到远程服务器
在把数据库直接拷贝到远程主机时,应注意两台机器必须有同样的硬件结构,或者将拷贝的数据表全部是可移植数据表类型。
使用mysqlhotcopy工具,它是一个Perl DBI脚本,可在不关闭服务器的情况下备份数据库,它主要的优点是:
它直接拷贝文件,所以它比mysqldump快。
可自动完成数据锁定工作,备份时不用关闭服务器。
能刷新日志,使备份文件和日志文件的检查点能保持同步。
% mysqlhotcopy db/bakcup/#把db数据库备份到backup/db目录里,会自动创建一个db目录
使用BACKUP TABLE语句进行备份,该语句最早出现在MySQL 3.23.25版本中,仅适用于MyISAM数据表。用法如下:
mysql> BACKUP TABLE mytable TO'/backup/db';#把mytable数据表备份到/backup/db目录下
为了执行该语句,你必须拥有那些表的FILE权限和SELECT权限,备份目录还必须是服务器可写的。该语句执行时,会先把内存中的数据写入磁盘,再把各个数据表的.frm(表结构定义文件)、.MYD(数据)文件从数据目录拷贝到备份目录。它不拷贝.MYI(索引)文件,因为它能用另外两个文件重建。BACKUP TABLE语句备份时,依次锁定数据表,当同时备份多个数据表时,数据表可能会被修改,所以备份0完成时,备份文件中的数据和现时数据表中的数据可能会有差异,为了消除该差异,我们可用只读方式锁定数据表,在备份完成后再解锁。如:
mysql> LOCK TABLES tb1 READ,tb2 READ;
mysql> BACKUP TABLE tb1,tb2 TO'backup/db';
三、自动备份网站文件和数据库上传到FTP空间
1、自动备份网站文件和数据库并上传到FTP空间,在本地保留3天备份,在远端FTP空间保留5天备份。数据库备份采用发送到Email和FTP空间,双重备份,保证数据的安全。
#你要修改的地方从这里开始
2、MAIL_TO=cat@hostloc.com#数据库发送到的邮箱
3、FTP_backup=backup#ftp上存放备份文件的目录,这个要自己得ftp上面建的
4、WEB_DATA=/home/www#要备份的网站数据
5、别忘记了建目录:mkdir-p/home/backup
6、如果你的网站数据大于5G小于10G的话,压缩起来会有点困难…
7、如果小于5G,就没问题了…不过这一切都是看vps的性能而已…
8、#定义数据库的名字和旧数据库的名字
9、DataBakName=Data_$(date+”%Y%m%d”)..tar.gz
10、WebBakName=Web_$(date+%Y%m%d).tar.gz
11、OldData=Data_$(date-d-5day+”%Y%m%d”).tar.gz
12、OldWeb=Web_$(date-d-5day+”%Y%m%d”).tar.gz
13、rm-rf/home/backup/Data_$(date-d-3day+”%Y%m%d”).tar.gz/home/backup/Web_$$(date-d-3day+”%Y%m%d”).tar.gz
14、/usr/local/mysql/bin/mysqldump-uroot-p123456–databases db1 db2 db3>/home/backup/databackup.sql
15、tar zcf/home/backup/$DataBakName/home/backup/databackup.sql
16、rm-rf/home/backup/databackup.sql
17、#发送数据库到Email,如果数据库压缩后太大,请注释这行
18、echo“主题:数据库备份”| mutt-a/home/backup/$DataBakName-s“内容:数据库备份” www@gmail.com
19、tar zcvf/home/backup/$WebBakName/home/www
20、#上传到FTP空间,删除FTP空间5天前的数据
21、下载地址:
22、利用crontab实现自动备份,在ssh下,
23、00 00***/home/AutoBackupToFtp.sh
24、这样就实现了每天00:00自动备份网站文件和数据库上传到FTP空间。