mysql数据库备份

数据库备份

为芝罘等地区用户提供了全套网页设计制作服务,及芝罘网站建设行业解决方案。主营业务为网站建设、成都网站设计、芝罘网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

1 冷备(cp)

2  LVM快照备份

 lvcreate -s  -n rhel6node1  -L 2G /dev/vg_kvm/rhel6base

3 热备

MySQLdump   -hserip   -u用户名  -p密码   数据库名  >目录名/xxx.sql

数据库名的表示方式

--all-databases     备份服务器上的所有数据

数据库名                 备份一个库的所有数据

数据库名  表名        备份一个表的所有数据

-B  数据库名1   数据库名2   备份几个库的所有数据

完整恢复

mysql    -hlocalhost    -uroot  -p123   [数据库名]   <  xxx.sql

4 增量备份  

1 binlog日志加脚本实现增量备份

 

 

1 使用mysql自带binlog日志功能实现对数据的增量备份

2 安装第3方软件提供增量备份工具对数据做增量备份

------------------------------------------------------------------

使用binlog日志增量备份/增量恢复

 

binlog日志的使用

mysql服务有4种日志文件:错误日志、查询日志、慢查询日志

、binlog日志    

 

binlog日志 (二进制日志)

         记录客户端连接自己之后,执行的除查询之外的sql命令。

         默认没开启binlog日志

service  mysql stop

vim /etc/my.cnf

[mysqld]

Log-bin=/logdir/plj

:wq

mkdir   /logdir

chown   mysql  /logdir

service  mysql  start

 

cd  /var/lib/mysql/

www-bin.000001   binlog日志文件

                 500M+

www-bin.000002

www-bin.index       日志的索引文件

  

查看binlog日志文件内容

mysqlbinlog      binlog日志文件名

 

手动生成新binlog日志文件方式?

mysql> flush logs;

mysql -hlocalhost -uroot -p123 -e "flush logs"

 

service  mysql  restart

 

binlog记录SQL命令的方式?

1 字符偏移量

2 时间点

 

mysqlbinlog    【选项】   binlog日志文件名

时间点

--start-datetime="2015-12-16 14:20:30"                自己去库里找时间

--stop-datetime="2015-12-16  17:20:30"                 自己去库里找时间

 

字符偏移量

--start-position=数字                                  自己去库里找偏移量

--stop-position=数字                                   自己去库里找偏移量

 

mysqlbinlog   --start-position=385   --stop-position=1134  plj.000010   |  mysql -hlocalhost  -uroot  -p123   【数据库名】

 

vim /shell/newlogfilebak.sh

#!/bin/bash

if  [   ! -e  /logbak  ];then

     mkdir   /logbak

fi

mysql -hlocalhost -uroot -p123  -e  "flush logs" &> /dev/null

cd  /logdir

for  file  in  `sed '$d'  plj.index`

do

      name=`echo $file | awk -F "/" '{print $3}'`

      if [ ! -e /logbak/$name ];then

        cp  $name  /logbak/

      fi

done

:wq

 

00  18   *  *   1   /shell/bakadb.sh  &> /dev/null

00   19  *  *  2-7   /shell/newfillogbak.sh

2 三方插件xtrabackup增量备份

yum -y install perl-Time-HiRes   perl-DBD-MySQL

rpm  -ivh    percona-xtrabackup-2.1.6-702.rhel6.x86_64.rpm

增量备份/增量恢复命令  xtrabackup_56

备份过程中不锁库表

 

备份时只备份表记录,不备份表结构。

 

使用xtrabackup_56增量备份时,必须有一次完整备份,这样再备份时,才能知道哪些数据是新产生的。

 

xtrabackup:C程序,支持InnoDB/XtraDB

 

xtrabackup_56  <选项>

选项

--backup                    备份数据

--prepare   准备恢复数据                  

--target-dir=目录名                   备份目录

--datadir=数据库目录                 备份的源文件

--incremental-basedir=目录名   增量备份时,指定上一次备份文件存储的目录

--incremental-dir=目录名   准备恢复数据时,指定使用那个备份目录下的数据做恢复

 

1001    5

xtrabackup_56   --backup   --datadir=/var/lib/mysql   --target-dir=/onedir

 

2002   7

xtrabackup_56   --backup   --datadir=/var/lib/mysql  --target-dir=/new1   --incremental-basedir=/onedir

 

3003   10

xtrabackup_56   --backup   --datadir=/var/lib/mysql  --target-dir=/new2  --incremental-basedir=/new1

 

mysql > delete from  testdb.a;

               drop table  testdb.a;

增量恢复

1 、准备恢复数据

xtrabackup_56  --prepare  --datadir=/var/lib/mysql   --target-dir=/onedir

 

xtrabackup_56  --prepare  --datadir=/var/lib/mysql   --target-dir=/onedir    --incremental-dir=/new1

 

xtrabackup_56  --prepare  --datadir=/var/lib/mysql   --target-dir=/onedir    --incremental-dir=/new2

 

2、被备份文件拷贝回数据库目录下对应的位置

cp  /onedir/testdb/a.ibd  /var/lib/mysql/testdb/

3、重启数据库服务器  service  mysql restart

 

xtrabackup工作过程

lsn   日志序列号

 

 

/var/lib/mysql/

ibdata1

ib_logfile0

ib_logfile1

 

ibdata1

ibdata1.delta

ibdata1.meta

 

xtrabackup_checkpoints  

xtrabackup_logfile

 

a.ibd

a.ibd.delta    a.ibd.meta


本文标题:mysql数据库备份
分享URL:http://azwzsj.com/article/jidhip.html