Home >Database >Mysql Tutorial >linux 定时自动备份 mysql

linux 定时自动备份 mysql

WBOY
WBOYOriginal
2016-06-07 15:47:001184browse

环境 :linux centos 备份数据库类型 :mysql 备份需要用到的命令: rpm -q mysql //查看mysql是否安装,及其版本mysqldump -uusername -ppassword test test_2014-05-20.sql 一、用命令实现备份 1、备份数据 (某些系统mysqldump会出现找不到命令的情况,请根

环境:linux centos

备份数据库类型:mysql

备份需要用到的命令:

rpm -q mysql  //查看mysql是否安装,及其版本
mysqldump -uusername -ppassword test > test_2014-05-20.sql

一、用命令实现备份

1、备份数据 (某些系统mysqldump会出现找不到命令的情况,请根据实际mysql的bin目录操作)

#mysqldump -uusername -ppassword discuz > discuz_2010-04-01.sql
这样就把discuz数据库所有的表结构和数据备份到discuz_2010-04-01.sql里了,
如果数据量大会占用很大空间,这时可以利用gzip压缩数据。
命令如下:
#mysqldump -uusername -ppassword discuz | gzip > discuz_2010-04-01.sql.gz
一般还要用到错误重定向:
mysqldump -uroot -p123 test 2>> /mysql_backup/blog.txt | gzip > /mysql_backup/test_`date +%Y-%m-%d_%H%M%S`.sql.gz 2>> /mysql_backup/blog.txt

这里的mysql_backup是我新建的目录,blog.txt是日志文件,我们把错误信息都记录到这里

系统崩溃,重建系统时,可以这样恢复数据:

#mysql -uusername -ppassword discuz

二、利用crontab,系统每天定时备份mysql数据库

1、创建保存备份文件的路径/mysqldata
#mkdir /mysql_backup

2、创建/usr/sbin/bakmysql文件
输入以下内容:

mysqldump -uroot -p123 test 2>> /mysql_backup/blog.txt | gzip > /mysql_backup/test_`date +%Y-%m-%d_%H%M%S`.sql.gz 2>> /mysql_backup/blog.txt
3、修改文件属性,使其可以执行
#chmod +x /usr/sbin/bakmysql

4、现在添加计划任务
每天3点钟执行备份 

第一步:
写cron脚本文件,命名为cronmysql.cron。如:

#01 3 * * * root /usr/sbin/bakmysql      //像这种后面是命令路径的 一定要加上执行的用户

第二步:
添加定时任务。执行命令 “crontab crontest.cron”,大功告成

第三步:
"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本

5、重新启动crond
#/etc/rc.d/init.d/crond restart
完成。

三、数据的恢复

只备份单个数据表

<span style="font-family: Arial, Helvetica, sans-serif;">mysqldump  -uroot -p123456  database table > dump.sql</span>

mysql -uusername –ppassword 数据库名 
<p><span>压缩包恢复</span></p>

<pre class="brush:php;toolbar:false">gzip -d <br>
<br>

<p><span><strong><span><strong>四、进阶篇</strong></span></strong></span></p>

<pre class="brush:php;toolbar:false">mkdir /mysql_backup/bak_`date +%Y-%m-%d` 2>> /mysql_backup/blog.txt
mysqldump -uroot -p123 test blog_user | gzip > /mysql_backup/bak_`date +%Y-%m-%d`/blog_user_`date +%Y-%m-%d`.sql.gz 2>> /mysql_backup/blog.txt
mysqldump -uroot -p123 test users | gzip > /mysql_backup/bak_`date +%Y-%m-%d`/users_`date +%Y-%m-%d`.sql.gz 2>> /mysql_backup/blog.txt

这里展示了 先按年月日的格式 建立文件夹,然后把一些比较重要的表进行备份。本人觉得大的备份,像整个数据库导出的,每几天或每个星期登陆phpmyadmin进行一次就行,没必要用脚本自动



Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn