zoukankan      html  css  js  c++  java
  • 两种适用于中小量数据的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里面添加任务就行了。

  • 相关阅读:
    [转载]读史札记21:出局依然是英雄
    关于 Delphi 中窗体的停靠
    关于 Indy 的发送与接收 及 不定长度流的见解
    基于Indy10 ,TCPIP 聊天示例
    opera 去除标题栏,最大化窗口代码
    第二篇 《XML 类化生成工具》
    第一篇《后缀表达式》
    多线程操作一例:查找 pas dfm 里的中文
    关于批量执行SQL语句
    Erlang 学习笔记 (一)
  • 原文地址:https://www.cnblogs.com/s-b-b/p/5977283.html
Copyright © 2011-2022 走看看