# 二进制日志常用命令
>[success]MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文>件,其主要作用有两个:
>* 数据回复
>* 主从数据库。用于slave端执行增删改,保持与master同步。
## 1. 开启binary log功能
需要修改mysql的配置文件`my.ini`,添加一句log_bin = mysql_bin即可
~~~
[mysqld]
......
log_bin = mysql_bin
......
~~~
如图:
![](https://box.kancloud.cn/5529637e6c956b45d54551c0acbb2d48_733x226.png)
>log_bin是生成的bin-log的文件名,后缀则是6位数字的编码,从000001开始,按照上面的配置,生成的文件则为:
mysql_bin.000001
mysql_bin.000002
配置保存以后重启mysql的服务器。
## 2. 查看bin-log是否开启,
~~~
msyql > show variables like '%bin%'
~~~
如图:
![](https://box.kancloud.cn/e44e0246071170bd838ad69aa47484e7_668x377.png)
## 3. 查看bin日志文件
~~~
# 查看当前日志文件
msyql > show master status;
# 查看所有日志文件
msyql > show master logs;
# 查看所有日志文件
msyql > show binary logs;
~~~
如图:
![](https://box.kancloud.cn/b967202358a2151dd037b7452aaf0143_654x157.png)
## 4. 启用新的日志文件,一般备份完数据库后执行
~~~
msyql > flush logs
~~~
![](https://box.kancloud.cn/030884ac85c8ebcffd4bb292556f1f38_665x153.png)
## 5. 清空现有的所用bin-log
~~~
msyql > reset master
~~~
![](https://box.kancloud.cn/afe8ea841d30280df188d84af1bb51e5_661x218.png)
## 6. 查看产生的binary log
~~~
msyql > show binlog events in 'mysql_bin.000001'
# 为了排序美观,可以使用如下命令
msyql > show binlog events in 'mysql_bin.000001'\G
~~~
![](https://box.kancloud.cn/a64c9b4b3e2231e9e2cda57956d8b0b0_1196x408.png)
![](https://box.kancloud.cn/03db1312617baaba1368748d2fe6c987_621x456.png)
## 7. 删除bin-log
~~~
## 删除指定文件之前的日志文件
msyql > purge binary logs to 'mysql_bin.000001';
~~~
![](https://box.kancloud.cn/87858b9445799fa496ed3fd3a3a95c62_470x434.png)
## 8. mysqlbinlog 工具的使用
>[danger]该工具可以导出日志文件对应的sql脚本,也可以使用它来直接恢复数据。同时,也可以使用它他查看指定时间段或者位置的日志记录,便于分析日志。
常用命令:
~~~
/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/var/mysql-bin.000012 --database=[数据库名] --start-datetime='2018-07-20 00:00:01' --stop-datetime='2018-07-24 23:59:59' > sql.sql
~~~
>[danger]该命令也可以不导出到文件,直接查看内容。一般用于筛选分的日志从而找出有用的数据。
### 扩展-mysqlbinlog 更多用法
#### 1、直接进行恢复
~~~
mysqlbinlog /usr/local/mysql/data/mysql_bin.000001 | mysql -u root -p
~~~
#### 2、按位置进行恢复 主要参数[–stop-position –start-position]
~~~
mysqlbinlog –stop-position=368312 –start-position=368315 /usr/local/mysql/data/mysql_bin.000001 | mysql -u root -p
~~~
这里的位置可以通过读取binlog文件进行查看,不过这个也必须自己知道进行了那些操作。后面说如果看到的文件都是乱码或者看不到真正sql的问题
#### 3、按时间点进行恢复 主要参数 [–stop-datetime –start-datetime]
~~~
mysqlbinlog –stop-datetime=”2005-04-20 9:59:59” –start-datetime=”2005-04-20 10:01:00” /usr/local/mysql/data/mysql_bin.000001 | mysql -u root -p
~~~
时间点恢复跟位置恢复道理一样,也必须知道具体操作的时间和要恢复到什么时间
#### 4、不同的方式进行恢复
1、如果是登录到了mysql并且binlog也是在一台服务器上,一般binlog的目录会在mysql安装目录下data文件下那么就可以直接进行恢复
这种情况可以直接在mysql下执行命令
2、如果是只拿到了binlog文件,并且是线下的服务器需要先尝试数据正确后再导入生产的
这种情况可以先把binlog文件输出到你制定的sql文件如:
~~~
mysqlbinlog /usr/local/mysql/data/mysql_bin.000001 > /tmp/mysql.sql
~~~
这样的输出有可能是看不到任何有价值的sql如果想看到标准的sql可以使用
~~~
mysqlbinlog –base64-output=DECODE-ROWS -v /usr/local/mysql/data/mysql_bin.000001 > /tmp/mysql.sql
~~~
- 前言
- PHP获取服务器信息
- PHP中的常用函数-新手必备知识
- 日期时间相关的函数
- 时区设置
- time函数
- strtotime 时间戳
- date函数
- mktime函数
- 联合使用 date() 和 mktime()
- PHP数据类型相关的函数
- PHP数组相关的函数
- array函数
- 数组的排序
- sort()和rsort()函数
- asort()和arsort()函数
- ksort()和krsort()函数
- array_multisort()函数
- array_reverse函数
- 数组的遍历
- 数组中新增和删除元素
- 数组头部插入和删除元素
- 数组尾部插入和删除元素
- 删除数组中重复的元素
- 删除数组中指定的元素
- 数组的合并
- 随机/打乱已知数组
- range函数
- 数组去除重复
- PHP常用功能函数
- URL地址处理函数
- post/get请求
- PHP字符串相关的函数
- PHP文件系统
- PHP正则表达式
- 正则表达式语法规则
- POSIX扩展的正则表达式函数
- 查找字串函数
- 替换字符串函数
- Perl兼容的正则表达式函数
- PHP中类的应用
- 中文编码
- 关于stdClass
- 变量相关函数
- unset
- PHP数值相关的函数
- 数值取整
- 开发工具与开发环境使用技巧
- sublime
- 常用插件
- Atom
- 常用插件
- 常见问题
- Visual Studio Code
- vscode常用插件
- 编程推荐字体
- MAC下开发常识
- MAC下的常用设置
- MAC下的常用开发工具
- MAC下XAMMP的常见问题
- Apache配置基础
- PhpStrom
- php中的常见问题
- 文件上传相关问题
- API接口中常见问题
- 关于缓冲区问题
- PHP中注意事项
- 条件判断
- PHP文件管理模块
- 文件管理源码
- 文件管理的常用函数
- 文件管理中文乱码处理
- 自定义功能函数
- 文件下载
- PHP常用头信息定义汇总
- 常见PHP网页木马
- 加密算法
- 1. Base58可逆加密
- 2. AES加密/解密
- mysql数据库操作
- 命令行操作Mysql常用令行-查询
- 命令行操作Mysql常用令行-操作
- Mysql使用中的技巧
- 在线数据库管理中常用命令
- sql show命令
- mysql数据库的备份与恢复
- 二进制日志介绍
- 二进制日志常用命令
- ThinkPHP
- 数据迁移
- 常见问题
- 验证码问题
- API接口中的异常处理
- API接口安全
- 解决跨域问题
- 自定义实用功能函数