数据库的备份与恢复 mysqldump+binlog方式

实验说明:

(1)mysqldump:逻辑备份工具,适用于所有存储引擎,可用于温备,能实现完全备份,部分备份;对InnoDB存储引擎支持热备;

binlog:二进制日志

二进制日志也叫作变更日志,主要用于记录修改数据或有可能引起数据改变的mysql语句,并且记录了语句发生时间、执行时长、操作的数据等等。所以说通过二进制日志可以查询mysql数据库中进行了哪些变化。一般大小体积上限为1G

(2)本次实验使用备份方式:完全备份+增量备份。

(3)musqldump命令的语法格式

mysqldump [OPTIONS] database [tables]:备份单个库,或库指定的一个或多个表

mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]:备份一个或多个库

mysqldump [OPTIONS] --all-databases [OPTIONS]:备份所有库

其他选项

-x, --lock-all-tables:锁定所有表

-l, --lock-tables:锁定备份的表

--single-transaction:启动一个大的单一事务实现备份

-C, --compress:压缩传输

-E, --events:备份指定库的事件调度器

-R, --routines:备份存储过程和存储函数

--triggers:备份触发器

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

0:不记录

1:记录CHANGE MASTER TO语句;此语句未被注释

2:记录为注释语句

-F,--flush-logs:锁定表之后执行flush logs命令

1、安装数据库

centos6:  yum  install mysql

centos7:  yum  install mariadb

2、开启二进制日志

在配置文件修改

vim  /etc/my.cnf

[mysqld]

log-bin=bin-log  添加改行,采用相对路径,真实存储路径为/var/lib/mysql/下

3、启动服务

systemctl start mariadb

ls /var/lib/mysql

会看到bin-log.000001 文件

每次重启mysql服务或运行mysql> flush logs;都会生成一个新的二进制日志文件,这些日志文件的number会不断地递增。除了生成上述的文件外还会生成一个为filename.index(bin-log.index)的文件。这个文件中存储所有二进制日志文件的清单又称为二进制文件的索引。

4、登入数据库并创建需要备份的数据库

mysql -uroot -p

(1)建立数据库

create database mariadb

(2)建立表

use mariadb

create table table1(id int ,name char(20));

show tables;查看是否创建表成功

(3)插入数据

insert into table1  values (1,‘one‘);

insert into table1  values (2,‘two‘);

insert into table1  values (3,‘three‘);

insert into table1  values (4,‘for‘);

查看是否插入数据到表中

select * from table1

5、进行完整备份

(1)创建要备份的目录

mkdir /backup

(2)备份

mysqldump --databases mariadb --lock-all-tables --lock-tables  --flush-log --master-data=2 >/backup/`date +%F-%T`-all.sql

(3) 查看是否备份成功

ls  /backup

6、向表中插入数据,进行增量备份

(1)查看 当前使用的二进制文件及所处位置

show master status;

(2)插入数据

insert into table1 values (5,five);

7、增量备份

(1)查看二进制日志

mysqlbinlog /var/lib/mysql/bin-log.000002

选择备份的位置

插入数据前,即完全备份的位置在245

插入数据后,位置在418

说明:整个事务一般以BEGIN开头到COMMIT结束,注意一定要看清,很容易出错。

(2)进行增量备份

mysqlbinlog --start-position=245 --stop-position=418 /var/lib/mysql/bin-log.000002 > /backup/`date +%F-%T`-add.sql

ls /backup

 8、继续插入数据,在没备份的情况下删除数据库,模拟误操作

inset into table1 values (6,‘six‘);

drop  database mariadb;

9、不要慌张

10、备份未备份的操作

    由于最后我们没有备份就删除了数据库,所以我们首先需要保护最后的二进制日志,查看删除操作之前的position值

mysqlbinlog /var/lib/mysql/bin-log.000002

所以备份位置从结束位置在643

mysqlbinlog  --start-position=445  --stop-position=643 /var/lib/mysql/bin-log.000002 > /backup/`date +%F-%T`-add.sql

一定不要备份误删除的位置,不然恢复后,又被删除,就恢复不了。

11、恢复数据库

mysql < /backup/2017-11-16-14\:24\:31-all.sql 先恢复完全备份

mysql < /backup/2017-11-16-14\:53\:33-add.sql  恢复第一个增量备份

mysql < /backup/2017-11-16-15\:13\:23-add.sql  恢复最后备份

12、登录数据库查看

数据恢复成功。数据位置为完全正确。

时间: 2024-10-10 05:57:28

数据库的备份与恢复 mysqldump+binlog方式的相关文章

mysql备份与恢复 mysqldump+binlog xtrabackup

数据备份的方式: 物理备份:拷贝存放库和表文件的目录  cp  tar 逻辑备份:备份创建库和表插入记录时的sql语句 数据备份策略: 完整备份:备份数据库服务器上的所有库.所有表. 差异备份:备份自完整备份后,生成的新数据. 增量备份:备份自上一次备份后,生成的新数据. 完整备份+差异备份 完整备份+增量备份 mysqldump 做完整备份 mysqldump  -hser_ip  -uusername  -ppassword  数据名 > 目录/x.sql 数据库备份文件以.sql结尾 [[

mysqldump+binlog的备份与恢复

数据备份类型 按业务划分:可分为完全备份,增量备份,差异备份. 完全备份:就是对整个数据库的数据和数据结构进行备份,好处是很直观,容易被人理解.不足之处:由于每天都对系统进行完全备份,因此在备份数据中大量是重复的,这些重复数据占用空间,增加成本,备份量大,所需时间长. 增量备份:就是每次备份的数据只是相当于上一次备份后增加和修改过的数据.优点:没有重复的数据,节省空间,缩短备份时间.缺点:发生灾难时,恢复数据麻烦.另外这种备份的可靠性也差,在这种备份下,各备份数据间的关系就像链子一样,一环套一环

mysqldump使用方法(MySQL数据库的备份与恢复)

#mysqldump --help 1.mysqldump的几种常用方法: (1)导出整个数据库(包括数据库中的数据) mysqldump -u username -p dbname > dbname.sql (2)导出数据库结构(不含数据) mysqldump -u username -p -d dbname > dbname.sql (3)导出数据库中的某张数据表(包含数据) mysqldump -u username -p dbname tablename > tablename.

第四章:MySQL数据库的备份与恢复

目录 1. 备份数据的意义 2. 数据库备份... 1 2.1 备份单个数据库练习多种参数使用... 1 2.1 mysqldump的工作原理... 8 .3. 数据库备份实践... 9 3.1 备份多个库... 9 3.2 分库备份... 10 3.3 备份单表及分表备份... 11 3.4 备份多个表... 13 3.5 备份数据库表结构(不包含数据)... 13 3.6 备份表中数据... 14 3.7 小结... 15 3.8 刷新binlog的参数... 15 3.9 mysqldum

mysql数据库的备份与恢复

假定我们的目标数据库是 test, 表是 user.假定mysql的用户名和密码均为 root. 备份与恢复所用的程序分别是mysql软件包提供的 mysqldump 命令和 mysql 命令.思想很简单,就是通过mysqldump将数据库的内容导出为sql语句组成的文件,恢复的时候再将该sql文件丢给mysql去执行. mysql的man手册中提到了三种方式:           shell> mysqldump [options] db_name [tbl_name ...]        

MySQL数据库的备份与恢复的三种方法

MySQL数据库的备份与恢复的三种方法 1.利用mysqldump实现从逻辑角度完全备份mysql,配合二进制日志备份实现增量备份 2.利用lvs快照从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份 3.利用percona公司的xrabackup实现完全热备份与增量热备份 实验环境:RHEL5.8 ,SElinux关闭,MySQL是tar包初始化安装版本5.5.28 一.测试环境准备 1.1 mysql的安装就不说了,见http://laoguang.blog.51cto.com

MariaDB数据库的备份与恢复

MariaDB数据库的备份与恢复 前提条件: 开启二进制日志:二进制日志可用于数据库恢复时使用,建议二进制日志与数据库数据分开存放. 开启二进制日志的方法: [ [email protected]~]# vim /etc/my.cnf [mysqld] log_bin=/data/binary-log/mariadb-bin 注:日志会存放在/data/binary-log目录下,文件名为mariadb-bin.000001下 mysqldump 逻辑备份工具,适用所有存储引擎,温备:支持完全或

MySQL数据库备份的几种方式

MySQL备份的几种方式 最近一直想写点博客,但是不知道写什么,感觉自己最近的知识没有什么增加,今天想到了一篇可以写的博客.以前试过根据data文件夹备份MySQL,但是从来没有成功过,前几天帮助朋友还原MySQL,终于成功的将备份的data文件夹还原成功了. MySQL数据库算是常用的数据库中最好使用的数据库了,对于备份的操作也不例外.所以今天分享一下MySQL数据库的备份的几种方式. 方式一:使用命令行的方式. 命令行的方式较为快捷,只需要在命令行中使用mysqldump命令即可,默认情况下

hibernate动态创建数据库表名几种方式

数据库中数据量很大, 但又不可以删除时同时又要优化程序检索数据时间. 答:方式有很多比如 创建数据库表分区,创建索引, 存储过程等; 我这里采用动态创建数据库表的方式. 完全可以在不创建表分区情况下实行分表管理 例如 日志记录表 将日期(yyyy-MM)作为默认表后缀动态追加, 例如 文章发布表 将用户名作为后缀名进行动态追加 ; 动态创建数据库表的方式要具体问题具体分析, 比如JDBC中直接使用create table 表名_dynamicStr(...); 文章发布系统 dynamicStr