Mysql数据库日志,备份及回滚操作

一、打开二进制日志配置 :

在Windows系统下,对mysql的my.ini的log-bin等进行配置目录位置时,假设要将log-bin的日志配置到D盘的mysqllog的文件为binlog。则可以如下配置 :

[mysqld]

log-bin="D:\mysqllog/binlog"  注意:在这里的最后一个路径采用的是"/"而不是Windows文件系统的“\"

二、二进制日志处理:

1、查看

采用Mysqlbinlog.exe。可以在安装目录的Server里的Bin目录下找到。

查看: cmd> mysqlbinlog.exe filename (添加 --database [databasename] 可以查看某个特定的数据库的sql日志)

2、暂停日志记录

mysql> SET SQL_LOG_BIN=0/1  设置为0:表示暂停记录;否则为1;

3、删除二进制日志

mysql> RESETMASTER;  (注意,将删除全部,要小心!!!!)

mysql> PURGE MASTER LOGS TO filename.number: 删除编号小于number的日志;

mysql> PURGE MASTER LOGS BEFORE ‘yyyy-mm-dd hh:MM:ss‘ : 删除日志前的日志;

4、刷新日志,使得当前的日志编号增加一

采用MysqlAdmin.exe. 可以在安装目录的Server里的Bin目录下找到。

如当前的服务器的日志文件为: binlog.000002

则执行: cmd> mysqladmin -u root -p flush-logs    :输入密码

执行之后,在二进制日志目录下会增加一个新的日志文件: binlog.000003。此后,服务器的新日志将会写到binlog.000003。

此做法很适合于增量备份时使用。

三、数据库备份与还原

采用mysqldump.exe. 可以在安装目录的Server里的Bin目录下找到。

1、完全备份:

cmd> mysqldump -u root -p test > test.sql   :输入密码  将会备份数据库名为test的数据库到mysqldump.exe所在的目录的test.sql文件。

2、完全备份整个服务器的数据库,并刷新日志文件:

刷新日志文件的目的:告诉服务器将日志写到新的日志文件,为此,将来进行的备份就不用再进行完全备份了,只需要备份新的日志文件。实现”增量备份“

cmd> mysqldump -u root -p --flush-logs   执行之后将会生成更多的新的日志文件。如备份3个数据库时,会再生成3个日志文件。因为3个数据库的备份是被看成3个不同的事务执行的。因此,加上:--single-transaction 标记之后,将作为一个事务。因此,只会增加一个日志文件。

3、还原操作:

注意:由于一般情况下,系统的二进制日志是打开的,因此,执行还原时,会将还原的sql代码同样写入到日志。当显然,这些代码并不一定是需要存在的。因此,可以用暂停二进制日志的方式进行避免,但是,我在测试时,发现采用:SET SQL_LOG_BIN=0并不能做到。因此,可以采用以下的做法:

1)、刷新一个日志文件: cmd> mysqladmin -u root -p flush-logs. (这个文件用于存放还原时产生的日志,而不会影响原来的日志)

2)、执行还原一个数据库:test:cmd> mysql  -u -root -p < test.sql;

3)、再将”增量“的日志执行到数据库test(要小心,不要执行其他数据库的二进制日志):

cmd>  mysqlbinlog log.number | mysql -u root -p test 。

可以加入--database [name]的参数,指定只选择增量还原某个数据库的sql。如针对 test数据库:

cmd> mysqlbinlog log.number --database test | mysql -u root -p test

4)、在此过程生成的日志文件可以考虑删除。因为是原来的数据。

时间: 2024-10-29 19:08:50

Mysql数据库日志,备份及回滚操作的相关文章

记录一次Spring boot 搭建框架连接Mysql数据库注解事务不回滚的故障

搭建了一个新框架,使用了spring boot 替换以简化原来繁杂的spring配置,使用Spring注解管理事务,持久层使用mybatis. 连接mysql数据库完成项目的过程中发现不支持事务,因为用的新框架自己本身也不是很了解,刚开始一直以为是自己的框架搭建的有问题, 后来发现是mysql数据库引擎的问题 解决方案 MyISAM不支持事物,InnoDB支持事物 先检查你的mysql版本 ,mysql 4.0系列之前是不支持事务的.    SELECT VERSION(); 检查你的数据库支持

使用 xtrabackup 进行MySQL数据库物理备份

0. xtrabackup的功能 能实现的功能: 非阻塞备份innodb等事务引擎数据库. 备份myisam表会阻塞(需要锁). 支持全备.增量备份.压缩备份. 快速增量备份(xtradb,原理类似于oracle:tracking 上次备份之后发生修改的page.). percona支持归档redo log的备份. percona5.6+支持轻量级的backup-lock替代原来重量级的FTWRL,此时即使备份非事务引擎表也不会阻塞innodb的DML语句了. 支持加密备份.流备份(备份到远程机

Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁

Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: import pymysql # 导入py模块 conn= pymysql.connect("数据库ip","用户","密码","数据库" ) # 打开数据库连接 cursor.execute("SELECT VERSI

mysqldump常用于MySQL数据库逻辑备份

mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump file] 上述命令将指定数据库备份到某dump文件(转储文件)中,比如: mysqldump -uroot -p123 test > test.dump 生成的test.dump文件中包含建表语句(生成数据库结构哦)和插入数据的insert语句. B. --opt 如果加上--opt参数则生成的du

使用LVM快照实现对mysql数据库的备份

数据库备份有多种方法,今天介绍下使用lvm的快照功能完成对mysql数据库的备份.lvm在对数据进行备份的时候可以提供近乎热备的方式,它的工作机制是这样的:在某一时刻对数据库所在目录创建快照卷,由此,通过快照卷访问的数据就是保存快照那一刻时的数据,而后将快照卷中的数据拷贝至其他目录即可,之所以称他为近乎热备是因为在创建快照的时候需要对数据库施加读锁,在这期间数据库不能进行写操作. 使用lvm备份数据库的前提  1,数据文件必须在lv中 2,此逻辑卷所在的卷组必须有足够的空间使用快照卷 3, 数据

Git撤销&amp;回滚操作

开发过程中,你肯定会遇到这样的场景: 场景一: 糟了,我刚把不想要的代码,commit到本地仓库中了,但是还没有做push操作! 场景二: 彻底完了,刚线上更新的代码出现问题了,需要还原这次提交的代码! 场景三: 刚才我发现之前的某次提交太愚蠢了,现在想要干掉它! 撤销 上述场景一,在未进行git push前的所有操作,都是在"本地仓库"中执行的.我们暂且将"本地仓库"的代码还原操作叫做"撤销"! 情况一:文件被修改了,但未执行git add操作

jenkins实现生产环境部署文件的回滚操作

由于dotnet项目的生产环境环境部署工具比较少,所以我使用jenkins作为生产环境的自动化部署工具. 既然有回滚操作,那么就会有部署操作:要实现回滚,先要实现部署的操作,我在jenkins搭建了一键从测试环境发布到正式环境的工具,部署的大致思路如下(详细的操作点这里,有详细节点配置和部署配置): 前提:安装jenkins的环境为master,每一个生产环境为slave,slave是实时连接到master的. 1.测试环境上使用了CCNET进行每次的代码变更编译部署,在测试环境上进行编译的版本

好记性不如烂笔头25-JAVA处理数据库事务(3) - 事务回滚点

在具体的工作中,有的事情需要被保持,不需要回滚,有的工作需要回滚,而这些逻辑,可以通过手动设置事务的回滚点. 1.用JAVA处理数据库事务的事务回滚点的准备 要有一个能够访问数据库的应用.下面的示例都基于ORACLE进行. create table ffm_account( id int primary key , name varchar(32), money int ); 测试数据: insert into ffm_account(id,name,money)values(1,'A',100

mysql数据库的优化、恢复等操作

1.当你的自增id主键很大时,你想让id重新到1开始自增                    请输入: truncate table 表名; 2.当你的数据库损坏时,你别慌先试试这条命令是否可以帮助你      请输入: repair table 表1,表2- 3.当你的数据表中含有varchar.text等并进行多次删除添加等操作, 会产生好多碎片空间,这回浪费资源,需要进行数据表的优化, 则可以重获碎片空间