使用LVM快照进行数据库备份

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用LVM快照进行数据库备份相关的知识,希望对你有一定的参考价值。

mysql> show global varibable like ‘%log%‘;

sql_log_bin 是否记录二进制日志

mysql> set sql_log_bin=off; 临时关闭二进制日志


mysql> show master status;查看二进制日志

mysql> show binlog events in ‘mysql-bin.000001‘; 查看指定二进制文件内容


还原数据库时先关闭二进制文件

mysql> set sql_log_bin=off; 

mysql> \. /root/students.sql


mysqldump

 --database DB1,DB2,...

 --all-databases


MyISAM:温备份

 --lock-all-tables

 --lock-tables


InnoDB:热备份

  --single-transaction

  

  --flush-logs

  --events 备份事件

  --routines存储过程和存储函数

  --triggers触发器

  

  --master-data{0|1|2}


逻辑备份:

   1.浮点数据丢失精度

   2.备份出来的数据可能比原数据大,压缩以后可大大节省空间

   3.不适合对大数据库做完全备份

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

对InnoDB:温备

mysql> flush tables with read lock ;

等待后台同步到数据文件后

show engine innodb status; 查看后台数据同步情况 Ibuf:


mvcc,repeatable-read 多版本并发控制

      --single-transaction



此还原不写入2进制日志:

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

select * into outfile ‘/tmp/t1.txt‘ from t1; 备份

create table t1s like t1;先创建一张表结构相同的空表

load data infile ‘/tmp/t1.txt‘into table t1s;还原

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


# mysqlbinlog ‘/mydata/data/mysql-bin.00001‘

#at 605

# mysqlbinlog --start-position=605  /mydata/data/mysql-bin.00001 > /root/a.sql 从605开始到结束 从新执行一遍 并保存下来


create table tutors like  tutor; 创建一张新表

truncte table tutor;清空表里的数据


set sql_log_bin=0; 关闭二进制日志

# source /root/a.sql;  恢复


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


几乎热备: LVM 

  snapshot:

  

  前提:

     1.数据文件要在逻辑卷上

     2.此逻辑卷所在卷组必须有足够空间使用快照卷

     3.数据文件和事务日志要在同一个卷上


  步骤:

     1.打开会话施加读锁名锁定所有表;

       mysql> flush tables  with read lock;

       mysql> flush logs;

     2.通过另一个终端,保存二进制日志文件及相关位置信息;

       $ mysql -uroot -p -e `show master status\G` >  /path/to/master.info

     3.创建快照卷

       #lvcreate -L # -s -p r -n LV_NAME /path/to/source_lv

     4.释放锁

        mysql> unlock tables;

     5.挂载快照卷,备份

        mount

         cp

     6.删除快照卷

     7.增量备份二进制日志 


load data infile ‘/tmp/tutor.txt‘ info table tutors;

start transaction 启动事务

use jiaowu;

desc tuors;

insert into tutors (Tname) value (‘stu001‘);



select @@tx_isolation; 查看隔离级别


commit;提交事务


flush tables with read lock; 刷新表,并以只读方式锁表

执行完以后

flush logs;刷新日志


show master status; 确保当前二进制文件信息的位置


# mysql -e  ‘show master status\G‘ > /backup/master-`date +%F`.info 


创建快照卷,只读,大小50M

# lvcreate -L 50M -s -p r -n mydata-snap /dev/myvg/mydata


unlock tables;释放锁


mount /dev/myvg/mydata/mydata-snap /mnt -o ro 挂载


mkdir /backup/full-backup-2016-10-21/

[[email protected] data]# cp -a ./* /backup/full-backup-2016-10-21

umount /mnt

lvremove --force /dev/myvg/mydata-snap 删除快照

删除备份文件里的二进制日志


cat /backup/master-2016-10-21.info


事件挂文件了 就要基于事件来做限定

mysqlbinlog --start-datetime=‘2016-10-21 11:10:10‘ mysql-bin.00003 mysql-bin.00004 > /backup/incremental-`date +%F-%H-%M-%S`.sql;


[[email protected] data]# rm -rf ./* 删除数据

# cp -a /backup/full-backup-2016-10-21/* /mydata/data


# server mysqld start


mysql > set sql_log_bin=0

mysql > soure /backup/incremental -...





本文出自 “运维成长路” 博客,谢绝转载!

以上是关于使用LVM快照进行数据库备份的主要内容,如果未能解决你的问题,请参考以下文章

数据库热备份神器 - XtraBackup

mysql 备份工具简介

Mysql数据库理论基础之十三 ---- LVM逻辑卷快照备份

LVM逻辑卷管理

备份MySQL数据库

Mysql备份系列--lvm-snapshot备份mysql数据(全量+增量)操作记录