shell脚本批量导出MYSQL数据库日志/按照最近N天的形式导出二进制日志[连载之构建百万访问量电子商务网站]...
作者:Jimmy Li
关键词:网站,电子商务,Shell,自动备份,异地备份
------[连载之电子商务系统架构]访问量超过100万的电子商务网站技术架构
连接:http://jimmyli.blog.51cto.com/3190309/676378访问量超过100万的电子商务网站技术架构
从二进制日志读取语句的工具。在二进制日志文件中包含的执行过的语句的日志可用来帮助从崩溃中恢复。
1.错误日志: -log-error
2.查询日志: -log
3.慢查询日志: -log-slow-queries
4.更新日志: -log-update
5.二进制日志: -log-bin
这里讨论的是MYSQL二进制日志的导出、导入;MYSQL二进制日志完整备份,增量备份。
默认情况下,所有日志创建于mysqld数据目录中,或者手工指定/etc/my.cnf [mysqld] 设置段的选项设置。
# 在[mysqld] 中輸入
Python |
|
在my.cnf这个文件中加一行(Windows为my.ini)。
[mysqld]
log-bin=mysqlbin-log #添加这一行就ok了=号后面的名字自己定义吧
然后我们可以对数据库做简单的操作后到mysql数据文件所在的目录来看binlog文件
[root@jimmyli mysql]# ll
-rw-rw---- 1 mysql mysql 813255 Nov 25 18:14 mysqlbin-log.000001
看到这个类似的文件,证明搞定了。
二、查看二进制日志文件用mysqlbinlog命令
mysql>show variables like 'log_%';
怎样知道当前的日志
mysql> show master status;
显示二進制日志数目
mysql> show master logs;
看二进制日志文件用mysqlbinlog
shell>mysqlbinlog mail-bin.000001
或者shell>mysqlbinlog mail-bin.000001 | tail 9000
查看二进制日志文件最后(倒数)9000行的SQL日志记录
三、shell脚本批量导出MYSQL数据库日志
shell |
|
四、自动本地导出MYSQL二进制日志,按天备份
或:
shell> mysqlbinlog hostname-bin.[0-9]* | mysql
shell> mysqlbinlog hostname-bin.*[0-9] > bin.txt
如果你需要先修改含语句的日志,还可以将mysqlbinlog的输出重新指向一个文本文件。
(例如,想删除由于某种原因而不想执行的语句)。编辑好文件后,将它输入到mysql程序并执行它包含的语句。
五、讨论如果MySQL服务器上有多个要执行的二进制日志,安全的处理方法。
它还有在看见给定日期和时间的事件后停止或启动的选项。这样可以使用--stop-datetime选项进行点对点恢复(例如,能够说“将数据库前滚动到今天10:30 AM的位置”)。
如果MySQL服务器上有多个要执行的二进制日志,安全的方法是在一个连接中处理它们。下面是一个说明什么是不安全的例子:
shell> mysqlbinlog hostname-bin.000002 | mysql -u root
shell> mysqlbinlog hostname-bin.000002 >> /tmp/statements.sql
shell> mysql -e "source /tmp/statements.sql"
六、其他查看MYSQL日志的相关命令
+---------------+-----------+
| Log_name | File_size |
+---------------+-----------+
| binlog.000044 | 471894871 |
| binlog.000045 | 267061 |
+---------------+-----------+
2 rows in set (0.00 sec)
2. 做了几次操作后,它就记录了下来。
3. 用mysqlbinlog 工具来显示记录的二进制结果,然后导入到文本文件,为了以后的恢复。
C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqlbinlog --start-position=4 --sto
4. 导入结果到MYSQL中进行数据恢复。
mysql>show variables like 'log_%';
怎样知道当前的日志
mysql> show master status;
显示二進制日志数目
mysql> show master logs;
看二进制日志文件用mysqlbinlog
shell>mysqlbinlog mail-bin.000001
或者shell>mysqlbinlog mail-bin.000001 | tail 9000
查看二进制日志文件最后(倒数)9000行的SQL日志记录
附录:
应这样调用mysqlbinlog:
shell> mysqlbinlog [options] log-files...例如,要想显示二进制日志binlog.000003的内容,使用下面的命令:
shell> mysqlbinlog binlog.0000003输出包括在binlog.000003中包含的所有语句,以及其它信息例如每个语句花费的时间、客户发出的线程ID、发出线程时的时间戳等等。
通常情况,可以使用mysqlbinlog直接读取二进制日志文件并将它们用于本地MySQL服务器。也可以使用--read-from-remote-server选项从远程服务器读取二进制日志。
当读取远程二进制日志时,可以通过连接参数选项来指示如何连接服务器,但它们经常被忽略掉,除非你还指定了--read-from-remote-server选项。这些选项是--host、--password、--port、--protocol、--socket和--user。
还可以使用mysqlbinlog来读取在复制过程中从服务器所写的中继日志文件。中继日志格式与二进制日志文件相同。
·
---help,-?
显示帮助消息并退出。
·
---database=db_name,-d db_name
只列出该数据库的条目(只用本地日志)。
·
--force-read,-f
使用该选项,如果mysqlbinlog读它不能识别的二进制日志事件,它会打印警告,忽略该事件并继续。没有该选项,如果mysqlbinlog读到此类事件则停止。
·
--hexdump,-H
在注释中显示日志的十六进制转储。该输出可以帮助复制过程中的调试。在MySQL 5.1.2中添加了该选项。
·
--host=host_name,-h host_name
获取给定主机上的MySQL服务器的二进制日志。
·
--local-load=path,-l pat
为指定目录中的LOAD DATA INFILE预处理本地临时文件。
·
--offset=N,-o N
跳过前N个条目。
·
--password[=password],-p[password]
当连接服务器时使用的密码。如果使用短选项形式(-p),选项和 密码之间不能有空格。如果在命令行中--password或-p选项后面没有 密码值,则提示输入一个密码。
·
--port=port_num,-P port_num
用于连接远程服务器的TCP/IP端口号。
·
--position=N,-j N
不赞成使用,应使用--start-position。
·
--protocol={TCP | SOCKET | PIPE | -position
·
--read-from-remote-server,-R
从MySQL服务器读二进制日志。如果未给出该选项,任何连接参数选项将被忽略。这些选项是--host、--password、--port、--protocol、--socket和--user。
·
--result-file=name, -r name
将输出指向给定的文件。
·
--short-form,-s
只显示日志中包含的语句,不显示其它信息。
·
--socket=path,-S path
用于连接的套接字文件。
·
--start-datetime=datetime
从二进制日志中第1个日期时间等于或晚于datetime参量的事件开始读取。datetime值相对于运行mysqlbinlog的机器上的本地时区。该值格式应符合DATETIME或TIMESTAMP数据类型。例如:
shell> mysqlbinlog --start-datetime="2004-12-25 11:25:56" binlog.000003该选项可以帮助点对点恢复。
·
--stop-datetime=datetime
从二进制日志中第1个日期时间等于或晚于datetime参量的事件起停止读。关于datetime值的描述参见--start-datetime选项。该选项可以帮助及时恢复。
·
--start-position=N
从二进制日志中第1个位置等于N参量时的事件开始读。
·
--stop-position=N
从二进制日志中第1个位置等于和大于N参量时的事件起停止读。
·
--to-last-logs,-t
在MySQL服务器中请求的二进制日志的结尾处不停止,而是继续打印直到最后一个二进制日志的结尾。如果将输出发送给同一台MySQL服务器,会导致无限循环。该选项要求--read-from-remote-server。
·
--disable-logs-bin,-D
禁用二进制日志。如果使用--to-last-logs选项将输出发送给同一台MySQL服务器,可以避免无限循环。该选项在崩溃恢复时也很有用,可以避免复制已经记录的语句。注释:该选项要求有SUPER权限。
·
--user=user_name,-u user_name
连接远程服务器时使用的MySQL用户名。
·
--version,-V
显示版本信息并退出。
还可以使用--var_name=value选项设置下面的变量:
·
open_files_limit
指定要保留的打开的文件描述符的数量。
·
--hexdump选项可以在注释中产生日志内容的十六进制转储:
shell> mysqlbinlog --hexdump master-bin.000001上述命令的输出应类似十六进制转储:
出处:http://jimmyli.blog.51cto.com/Jimmy Li Blog 。欢迎朋友一起交流,讨论。扣扣:柒⑥柒陆叁⑤叁伍
转载于:https://blog.51cto.com/jimmyli/901948
shell脚本批量导出MYSQL数据库日志/按照最近N天的形式导出二进制日志[连载之构建百万访问量电子商务网站]...相关推荐
- shell脚本自动备份MySQL数据库
脚本如下: #!/bin/bash #数据库IP dbserver='127.0.0.1' #数据库用户名 dbuser='root' #数据密码 dbpasswd='123456' #数据库,如有多 ...
- phpmyadmin 导出mysql_PhpMyAdmin创建/导入/导出MySQL数据库教程[图文]
内容提要 PhpMyAdmin是网站管理员必须懂得使用的程序,很多新手都不会操作,笔者将图文演示使用PhpMyAdmin创建.导入.导出MySQL数据库的全过程. 一.创建MySQL用户及数据库 注: ...
- phpmyadmin创建/导入/导出mysql数据库教程_PhpMyAdmin创建/导入/导出MySQL数据库教程[图文]...
内容提要 PhpMyAdmin是网站管理员必须懂得使用的程序,很多新手都不会操作,笔者将图文演示使用PhpMyAdmin创建.导入.导出MySQL数据库的全过程. 一.创建MySQL用户及数据库注:一 ...
- 使用Python3编写脚本一键备份MySQL数据库
假设,MySQL的连接信息如下: host: 192.168.1.4 port: 3306 user: root password: mypassword 现在,我们需要对这台服务器上的数据库进行备份 ...
- Linux从mysql中读取数据_linux shell中读写操作mysql数据库
本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...
- 蛙蛙推荐:利用WMI脚本批量恢复SQLSERVER数据库
转载原文: 蛙蛙推荐:利用WMI脚本批量恢复SQLSERVER数据库 蛙蛙推荐:利用WMI脚本批量恢复SQLSERVER数据库 问题提出 蛙蛙求助:以编程的方式还原sqlserver数据库问题 我有一 ...
- 用shell脚本实现定时备份数据库
1.备份数据库的方法 可以使用命令查看 ls /usr/local/mysql/bin 这个mysqldump就是系统内置的用来备份数据库的工具. 2.实现方法 ①先随便进入一个位置创建一个目录 ② ...
- mysqldump导入导出mysql数据库
mysqldump导入导出mysql数据库 mysqldump导入导出mysql数据库 2011-02-21 16:33 数据库的基本导入\导出的命令 是 mysqldump 和 source 在li ...
- 织梦数据库改mysql前缀_织梦快速批量修改MYSQL数据库表前缀与表名实例操作
这篇文章主要为大家详细介绍了织梦快速批量修改MYSQL数据库表前缀与表名实例操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. 我们在安装织梦系统的时候,有一次 ...
最新文章
- 【行业报告】基于社交图谱关系的反欺诈产品应用——青云
- 用MediaInfo获取音视频信息
- 已知p是一个指向类a的数据成员m的指针_第三十八章、结构体指针、单向链表简介...
- BDTC 2019 | 七个开发者能干多大的事?​
- 软件测试 | APP测试 —— Appium 自动化测试框架的初识与学习要领
- python是什么类型的语言-Python是什么?简单了解pythonp-入门
- ZOJ1457 || HDU1016 素数环
- go语言项目如何引用依赖Github上的开源项目
- PCL 显示一只小白兔和Eigen矩阵
- 亚马逊:贝佐斯没有闹钟
- 如何避免gradle插件下载:Gradle、Android Plugin、Build Tools
- mtk sensor 驱动调试
- PlutoSDR软件无线电平台带宽破解
- editorMd插件的使用总结(包括开启图片上传及拖拉粘贴上传图片)
- 微信小程序弹窗提示:wx.showToast、wx.showModal、wx.showLoading的使用场景与实现
- html输入后面消失,excel输入减号为什么会消失
- python 输出数据到excel设置超链接及格式设置
- 三分搜索--hdu2241 考研路茫茫——早起看书
- 太酷了!用200个LED做一个智能手表(开源)
- 软件测试 | 测试开发 | 测试人生 | 00后0经验应届毕业生拿下2线城市15W offer,好励志~
热门文章
- 在组件中获取Application
- Ubuntu安装MyEclise16 过程差不多
- [翻译] KGModal
- [转]Mac OS X 下部分Android手机无法连接adb问题之解决方案
- Resources$NotFoundException
- mysql 8.0 ~ 安装
- Windows下安装MongoDB
- SaltStack配置管理之Gains与State测试
- Adobe MasterCollection CS5 试用版下载链接
- UVA 11732 - strcmp() Anyone?(Trie)