MySQL-Binlog

数据库学习之十:mysql日志管理

家住魔仙堡 提交于 2020-05-09 10:08:29
十、mysql日志管理 课程大纲 1、MySQL日志类型简介 2、MySQL错误日志配置及查看 3、MySQL binlog介绍及管理实战 4、MySQL 慢查询日志设置及管理实战 1、日志的类型简介 mysql> show variables like '%log_error%';在配置文件中指定错误日志位置。 mysql> show variables like '%gen%'; 一般日志查询 二进制日志,记录修改记录。 日志文件 选项 文件名 程序 表名称 错误 --log-error host_name.err N/A 常规 --general_log host_name.log,general_log N/A 慢速查询 --slow_query_log --long_query_time host_name-slow. log,slow_log mysqldumpslow 二进制 --log-bin --expire-logs-days host_name-bin.000001 mysqlbinlog 审计 --audit_log--audit_log_file... audit.log N/A 2、MySQL错误日志配置及查看 错误日志: 配置方法: [mysqld] log-error=/data/mysql/mysql.log 查看配置方式: mysql> show

MySQL之 Mysqldump导出数据库

ぐ巨炮叔叔 提交于 2020-05-05 13:50:32
参数大全 参数说明 -- all-databases , -A 导出全部数据库。 mysqldump - uroot - p -- all-databases -- all-tablespaces , -Y 导出全部表空间。 mysqldump - uroot - p -- all-databases --all-tablespaces -- no-tablespaces , -y 不导出任何表空间信息。 mysqldump - uroot - p -- all-databases --no-tablespaces -- add-drop-database 每个数据库创建之前添加drop数据库语句。 mysqldump - uroot - p -- all-databases --add-drop-database -- add-drop-table 每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用 -- skip-add-drop-table取消选项) mysqldump - uroot - p -- all-databases (默认添加drop语句) mysqldump - uroot - p -- all-databases –skip-add-drop-table (取消drop语句) -- add-locks 在每个表导出之前增加LOCK

实测两款SQL回滚工具

匆匆过客 提交于 2020-05-01 17:18:02
第一个:binlog2sql 软件版本要求: Python 2.7, 3.4+ MySQL 5.6, 5.7 下载地址: https://github.com/danfengcao/binlog2sql 缺点:不支持8.0 优点:不需把binlog下载到本地,即可生成回滚SQL 使用方法: python /opt/software/binlog2sql/binlog2sql/binlog2sql.py -h172.18.54.93 -P3308 -udba -p'123456' -dtest -tt1 --start-file='mysql-bin.000016' --start-datetime='2020-04-29 17:40:00' --stop-datetime='2020-04-29 17:44:00' -B --back-interval 0 注意:使用的时候带上--back-interval 0 否则导入回滚SQL的时候,每1000条SQL会sleep 1秒,这里有点坑。 第二个:myflash 软件要求:美团点评用C语言开发,需要安装gcc,glib2 下载地址:git clone https://github.com/Meituan-Dianping/MyFlash.git 该工具通过解析v4版本的binlog,完成回滚操作。相对已有的回滚工具

Mysql如何在删库后可以不用跑路

浪尽此生 提交于 2020-05-01 14:38:44
我一直在想,地球上这么多程序员,应该有很多人在团队做项目的时候,出过很大的错误,比如说不小心删了库,活动福利字段多写了个零导致全服务器玩家领到数倍奖励,听了沙雕群友的话执行 rm -rf 命令。 记得有一本专门调侃的书,叫《Mysql从入门到删库跑路》,各种能人异士。 所以掌握如何在数据库被删之后进行恢复,是很重要的。 MySQL删除数据有很多种方式,你可以删除一条数据,可以删除一张表,也可以删除一整个库,还有就是你在 rm -rf 删除磁盘的时候直接把MySQL相关的所有文件都给删了。 删除行 如果你使用delete命令删除了一行数据,可以使用Flashback工具通过闪回来恢复数据。 如果你使用过git,应该知道它有一个很有用的命令, Revert ,回到之前的状态。 对于数据库也是类似,我们的每一步操作其实都是记录在binlog中的,要恢复一条数据,只需要按照binlog中的操作记录进行回滚。 对于binlog中DELETE的操作,回滚就会执行与之对应的INSERT操作。 同理,INSERT的回滚是DELETE。 UPDATE的回滚,是交换前后SET和WHERE的值,这个请思考一下UPDATE语句的WHERE和SET作用。 原始: UPDATE test . user SET id =3, name ='antz' WHERE id =3 AND name ='uhl';

MySQL 完整备份和增量备份

倾然丶 夕夏残阳落幕 提交于 2020-05-01 04:55:51
MySQL完全备份与恢复 随着自动化办公与电子商务的不断扩展,企业对于信息系统的依赖性越来越重要,而数据库在信息系统中担任着非常重要的角色。尤其一些对数据库可靠性要求非常高的行业,例如银行,证券,电信等,如果发生意外宕机或数据丢失,其损失是非常重要的。为此数据库管理员必须针对具体的业务要求定制详细的数据库备份与灾难恢复的策略,并通过模拟故障对每种可能的情况进行严格的测试。而保障数据的可靠性。 数据备份的重要性 备份的主要目的是灾难恢复,备份还可以测试应用,回滚数据修改,查询历史数据,审计等。我们将从生产运维的角度了解备份恢复的分类与方法。 在企业中数据的价值至关重要,数据保障了企业的业务的运行,因此数据的安全性及可靠性是运维的重中之重,任何数据的丢失都有可能会对企业产生严重的后果。造成数据丢失的原因如下: ● 程序错误 ● 人为错误 ● 运算失败 ● 磁盘故障 ● 灾难(如火灾、地震)和盗窃 二、数据库备份的类型 从物理与逻辑的角度:备份可以分为物理备份和逻辑备份 物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。物理备份又可分为 脱机备份(冷备份 )和 联机备份(热备份) 。这种类型的备份适用于出现问题时需要快速恢复的大型重要数据库。 1、冷备份:是在关闭数据库的时候进行的 2、热备份:数据库处于运行状态,这种备份方法依赖于数据库的日志文件

07 : mysql备份恢复(1)

一曲冷凌霜 提交于 2020-05-01 04:55:36
注意: mysql不同引擎备份方法不同。我们先来回忆一下和备份有关的知识点。 1、存储引擎 (1)InnoDB(默认使用引擎,也是企业常用的) 热备 独立表空间(每个表一个表空间) redo:重做日志,用来前滚 undo:回滚日志,用来回滚(未提交的事务) 行级别锁,基于索引来实现的,GAP锁 支持事务。 (2)MyISAM 温备 三个文件构成 表级锁 2、二进制日志 (1)记录的是什么? DDL、DCL这些种类语句,记录的就是操作语句 DML:他记录的已提交的事务日志,并支持多种格式记录(row、statement、mixed) (2)事件 开始位置(at xxx) 结束为止(下一个at) 一个事务,有多个事件做成(begin到commit) (3)截取二进制日志 1、分析二进制日志 找到要截取日志的开始位置(start-position)和结束位置(stop-position) mysqlbinlog --base64-output=decode=rows -vvv 2、截取日志 mysqlbinlog -d test --start-position=xxx --stop-position=xxx ----------------------------------------------------------------------- MySLQL备份 1、备份是为了什么

Mysql 通过binlog日志恢复数据

前提是你 提交于 2020-05-01 04:55:15
Binlog日志,即binary log,是二进制日志文件,有两个作用,一个是增量备份,另一个是主从复制,即主节点维护一个binlog日志文件,从节点从binlog中同步数据,也可以通过binlog日志来恢复数据 1,登录mysql查看binlog日志的状态,输入show variables like ‘%log_bin%’;查看binlog为off关闭状态 2,开启mysql binlog日志,进入mysql配置文件(vi /etc/my.cnf) 在mysqld区域内添加如下内容,①server-id = 1(单个节点id) ②log-bin= /var/lib/mysql/mysql-bin(位置一般和mysql库文件所在位置一样) ③expire_logs_days = 10(表示此日志保存时间为10天), 重启mysqld ,再次查看binlog日志开启状态为ON 3,Binlog日志包括两类文件;第一个是二进制索引文件(后缀名为.index),第二个为日志文件(后缀名为.00000*),记录数据库所有的DDL和DML(除了查询语句select)语句事件 4,查看所有binlog日志文件列表:show master logs; 5,查看最后一个binlog日志的编号名称及其最后一个操作事件pos结束点的值:show master status; 6,Flush logs

MySQL数据备份之逻辑备份工具mysqldump

孤人 提交于 2020-05-01 04:47:38
#前言:我们知道对数据进行备份很重要,出现非正常操作可以进行对数据进行恢复,下面我们就来使用一下mysql数据库自带的一个逻辑备份工具mysqldump 1.简单概述 #mysqldump:mysql数据自带的一个备份命令 #语法格式: mysqldump -u用户名 -p 数据库名 > 备份的文件名 #mysqldump逻辑备份的工作原理 1 、mysqldump命令备份数据的过程,实际是把数据从mysql库里以逻辑的sql语句形式直接输出或生成备份文件的过程 2 、恢复的时候就是把sql语句在数据库里面执行一遍的过程 #mysqldump帮助文档 [root@ctos3 ~]# mysqldump --help > 1 .txt [root@ctos3 ~]# cat 1 .txt mysqldump Ver 10.13 Distrib 5.7 . 29 , for Linux (x86_64) Copyright (c) 2000 , 2020 , Oracle and/ or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/ or its affiliates. Other names may be trademarks of

mysql通过mysqldump实现备份,脚本编写

妖精的绣舞 提交于 2020-05-01 04:47:12
每日三点同步mysql备份任务 crontab -e 0 3 * * * sh /home/shell/mysql_bakup.sh >> /dev/null 2>&1 mysqldump备份简单脚本 #!/bin/bash /usr/local/mysql/bin/mysqldump -uroot -pmingquan0211 --all-databases --routines --events --triggers | gzip > /home/shell/mysql_bakup/mysql_bakup_`date '+%Y-%m-%d'`.sql.gz find /home/shell/mysql_bakup -mtime +30 -name "*.gz" -exec rm -rf {} \; --triggers 同时导出触发器。该选项默认启用,用 --skip-triggers 禁用它。 --routines,-R 导出存储过程以及自定义函数 --quick,-q 该选项在导出大表时很有用,它强制 MySQLdump 从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。 . MySQLdump增量备份配置 执行增量备份的前提条件是MySQL打开binlog日志功能,在my.cnf中加入 log-bin=/opt/Data/MySQL-bin “log

安全的web服务器——使用mysqldump和mysqlbinlog实现MySQL全量与增量备份

孤者浪人 提交于 2020-05-01 03:48:14
1.环境 系统是Deepin15.6,数据库的版本号是: Server version: 5.7 . 18 - 1 (Debian) 数据库引擎是:InnoDB。如何查看数据库版本和数据库引擎呢? 终端登录MySQL数据库命令行的时候,就可以看见数据库版本。 登录数据库后,使用如下命令: show engines; 它会显示很多数据库引擎,其中,显示YES的指本数据库支持的引擎,显示default的是本数据库默认的引擎。 也可以用如下命令: show variables like ' %storage_engine% ' ; 来显示数据库引擎。 2.全量备份 全量备份很简单,备份的命令是: #--databases,指定数据库 #--flush-logs,产生新的日志文件,binlog文件,这个在后面的增量备份有讲到过 #--delete-master-logs,删掉原来的日志文件,binlog文件 #DumpFile是要备份的目标文件 mysqldump -uroot -p123456 --databases wordpressdb --flush-logs --delete-master-logs --single-transaction > $DumpFile 恢复的命令是在MySQL命令行中执行的,要先手动创建一个数据库,然后再use这个数据库: mysql> source