两种适用于中小量数据的mysql数据备份

   近来项目的业务量开始大了,感觉如果数据不周期性地备份一下,很可能会出现问题,虽然我每天都有阿里云的自动快照,上网找了一下方法,找到两种相对简单而又适合中小项目或者中小公司的数据备份策略,以下都是数据库数据的完全备份。

  一.cp命令备份mysql数据

  此方法简单粗暴,直接复制mysql下的数据,也印证了linux下的万物皆是文件的原则,管你是啥,直接复制过来,出问题直接cp过去就好了,数据库的数据是存储在mysql目录下的data,里面有对应的数据库名字的文件夹,比如说我有个test数据库,那么在mysql/data下就有test文件夹,里面存放的是test数据库的数据。

  具体步骤:

  1.找到mysql的目录,一般而言是在/var/lib/mysql,如果找不到mysql目录,你可以用locate命令查找一下

  2.cp -a 复制mysql目录下的data文件,如果你想存放对应数据库的文件,直接cp对应的文件夹就好了

  3.在你需要还原数据的时候,把文件复制到原来的目录就好了,即cp -a  备份目录  mysql/data/就可以了,注意:如果还原之后不能操作数据库,有可能是权限问题。执行chown  -R mysql:mysql  数据库文件  就好了。

  方法分析:

  优点:执行速度快,导入sql的时候,执行了10多秒,但是cp只需要1秒左右,相对其他方法的一条条sql执行,这个方法更显得简单粗暴

  缺点:同样的备份文件,直接cp出来数据相对sql文件会比较大,而且很可能移植到其他的服务器上,不识别某些表。

  二.mysqldump

  mysqldump是mysql自带的工具,可以把数据库,表的数据导出来,导出来的是sql文件。

  命令格式:

mysqldump  -uName  -pPassword  databaseName  tableName  >  name.sql;

  如果不指定tableName,则是指导出数据库全部数据。

  也可以选择导出全部数据

mysqldump  -uName  -pPassword  mysql --all-databases tableName  >  name.sql;

   当然你也可以结合crontab创建定时任务,每日定时备份数据库

  首先写个shell脚本,这里我用时间作为保存文件的名字

#!/bin/bash
time=$(date +%Y-%m-%d-%H-%M-%S)
mysqldump -uroot -ppassword test> /backup/$time.sql

  保存之后chmod赋予权限之后就可以./脚本名字就可以一键备份数据库文件了

  再输入crontab -e里面添加任务就行了。

原文地址:https://www.cnblogs.com/s-b-b/p/5977283.html