mysql数据库备份

时间:2021-10-06 03:21:00

数据库备份

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增量备份时,必须有一次完整备份,这样再备份时,才能知道哪些数据是新产生的。

 

xtrabackupC程序,支持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


本文出自 “13262050” 博客,请务必保留此出处http://13272050.blog.51cto.com/13262050/1962624