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