首页 >数据库 >mysql教程 >linux 定时自动备份 mysql

linux 定时自动备份 mysql

WBOY
WBOY原创
2016-06-07 15:47:001190浏览

环境 :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 < discuz_2010-04-01.sql

二、利用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 数据库名 < 备份文件.sql

压缩包恢复

gzip -d < /mysql_backup/test_2014-05-19_072501.sql.gz | mysql -uroot -p123 test1;


四、进阶篇

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进行一次就行,没必要用脚本自动



声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn