- 浏览: 1149079 次
- 性别:
- 来自: 火星郊区
博客专栏
-
OSGi
浏览量:0
文章分类
- 全部博客 (695)
- 项目管理 (48)
- OSGi (122)
- java (79)
- Vaadin (5)
- RAP (47)
- mysql (40)
- Maven (22)
- SVN (8)
- 孔雀鱼 (10)
- hibernate (9)
- spring (10)
- css (3)
- 年审 (6)
- ant (1)
- jdbc (3)
- FusionCharts (2)
- struts (4)
- 决策分析 (2)
- 生活 (10)
- 架构设计 (5)
- 破解 (2)
- 狼文化 (4)
- JVM (14)
- J2EE (1)
- 应用服务器 (1)
- 我的链接 (5)
- 数学 (2)
- 报表 (1)
- 百科 (6)
- Flex (7)
- log4j (2)
- PHP (1)
- 系统 (2)
- Web前端 (7)
- linux (6)
- Office (1)
- 安全管理 (5)
- python (2)
- dom4j (1)
- 工作流 (3)
- 养生保健 (4)
- Eclipse (8)
- 监控开发 (1)
- 设计 (3)
- CAS (1)
- ZK (41)
- BluePrint (3)
- 工具 (1)
- SWT (7)
- google (2)
- NIO (1)
- 企业文化 (2)
- Windoes (0)
- RCP (7)
- JavaScript (10)
- UML (1)
- 产品经理 (2)
- Velocity (10)
- C (1)
- 单元测试 (1)
- 设计模式 (2)
- 系统分析师 (2)
- 架构 (4)
- 面试 (2)
- 代码走查 (1)
- MongoDB (1)
- 企业流程优化 (1)
- 模式 (1)
- EJB (1)
- Jetty (1)
- Git (13)
- IPV6 (1)
- JQuery (8)
- SSH (1)
- mybatis (10)
- SiteMesh (2)
- JSTL (1)
- veloctiy (1)
- Spring MVC (1)
- struts2 (3)
- Servlet (1)
- 权限管理 (1)
- Java Mina (1)
- java 系统信息 (6)
- OSGi 基础 (3)
- html (1)
- spring--security (6)
- HTML5 (1)
- java爬虫搜索 (1)
- mvc (3)
最新评论
-
Tom.X:
http://osgia.com/
将web容器置于OSGi框架下进行web应用的开发 -
chenyuguxing:
你好, 为什么我的bundle export到felix工程中 ...
在Apache Felix中运行bundle -
string2020:
<niceManifest>true</ni ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
MYSQL主从复制(replication)采用 RBR 模式后,binlog的格式为"ROW",能解决很多原先出现的主键重复问题。
在一个繁忙的master db server上,binlog日志文件增长速度很快,如果不定时清除,硬盘空间很快就会被充满。
设置自动清理mysql binlog日志,配置my.cnf:
expire_logs_days = 10
在运行时修改:
show binary logs;
show variables like '%log%';
set global expire_logs_days = 10;
清除之前可以采用相应的备份策略。
手动删除10天前的mysql binlog日志:
PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY);
show master logs;
MASTER和BINARY是同义词。
一般情况下,推荐使用MIXED
binlog的复制。http://dev.mysql.com/doc/refman/5.1/en/open-bugs-general.html中
的说明:Replication uses query-level logging: The master writes the executed
queries to the binary log. This is a very fast, compact, and efficient
logging method that works
perfectly in most cases.
附:关于MYSQL复制的几种模式
以下转自http://steven1981.itpub.net/post/7967/485747
从 MySQL 5.1.12 开始,可以用以下三种模式来实现:
– 基于SQL语句的复制(statement-based replication, SBR),
– 基于行的复制(row-based replication, RBR),
– 混合模式复制(mixed-based replication, MBR)。
相应地,binlog的格式也有三种:STATEMENT,ROW,MIXED。 MBR 模式中,SBR 模式是默认的。
在运行时可以动态改动 binlog的格式,除了以下几种情况:
. 存储流程或者触发器中间
. 启用了NDB
. 当前会话试用 RBR 模式,并且已打开了临时表
如果binlog采用了 MIXED 模式,那么在以下几种情况下会自动将binlog的模式由 SBR 模式改成 RBR 模式。
. 当DML语句更新一个NDB表时
. 当函数中包含 UUID() 时
. 2个及以上包含 AUTO_INCREMENT 字段的表被更新时
. 行任何 INSERT DELAYED 语句时
. 用 UDF 时
. 视图中必须要求运用 RBR 时,例如建立视图是运用了 UUID() 函数
设定主从复制模式:
log-bin=mysql-bin
#binlog_format="STATEMENT"
#binlog_format="ROW"
binlog_format="MIXED"
也可以在运行时动态修改binlog的格式。例如
mysql> SET SESSION binlog_format = 'STATEMENT';
mysql> SET SESSION binlog_format = 'ROW';
mysql> SET SESSION binlog_format = 'MIXED';
mysql> SET GLOBAL binlog_format = 'STATEMENT';
mysql> SET GLOBAL binlog_format = 'ROW';
mysql> SET GLOBAL binlog_format = 'MIXED';
两种模式各自的优缺点:
SBR 的优点:
历史悠久,技能成熟
binlog文件较小
binlog中包含了所有数据库修改信息,可以据此来审核数据库的安全等情况
binlog可以用于实时的还原,而不仅仅用于复制
主从版本可以不一样,从服务器版本可以比主服务器版本高
SBR 的缺点:
不是所有的UPDATE语句都能被复制,尤其是包含不确定操作的时候。
调用具有不确定因素的 UDF 时复制也可能出疑问
运用以下函数的语句也不能被复制:
* LOAD_FILE()
* UUID()
* USER()
* FOUND_ROWS()
* SYSDATE() (除非启动时启用了 –sysdate-is-now 选项)
INSERT … SELECT 会产生比 RBR 更多的行级锁
复制须要执行 全表扫描(WHERE 语句中没有运用到索引)的 UPDATE 时,须要比 RBR 请求更多的行级锁
对于有 AUTO_INCREMENT 字段的 InnoDB表而言,INSERT 语句会阻塞其他 INSERT 语句
对于一些复杂的语句,在从服务器上的耗资源情况会更严重,而 RBR 模式下,只会对那个发生变化的记录产生影响
存储函数(不是存储流程 )在被调用的同时也会执行一次 NOW() 函数,这个可以说是坏事也可能是好事
确定了的 UDF 也须要在从服务器上执行
数据表必须几乎和主服务器保持一致才行,否则可能会导致复制出错
执行复杂语句如果出错的话,会消耗更多资源
RBR 的优点:
任何情况都可以被复制,这对复制来说是最安全可靠的
和其他大多数数据库系统的复制技能一样
多数情况下,从服务器上的表如果有主键的话,复制就会快了很多
复制以下几种语句时的行锁更少:
* INSERT … SELECT
* 包含 AUTO_INCREMENT 字段的 INSERT
* 没有附带条件或者并没有修改很多记录的 UPDATE 或 DELETE 语句
执行 INSERT,UPDATE,DELETE 语句时锁更少
从服务器上采用多线程来执行复制成为可能
RBR 的缺点:
binlog 大了很多
复杂的回滚时 binlog 中会包含大量的数据
主服务器上执行 UPDATE 语句时,所有发生变化的记录都会写到 binlog 中,而 SBR 只会写一次,这会导致频繁发生 binlog 的并发写疑问
UDF 产生的大 BLOB 值会导致复制变慢
不能从 binlog 中看到都复制了写什么语句(加密过的)
当在非事务表上执行一段堆积的SQL语句时,最好采用 SBR 模式,否则很容易导致主从服务器的数据不一致情况发生
另外,针对系统库 mysql 里面的表发生变化时的处理准则如下:
如果是采用 INSERT,UPDATE,DELETE 直接操作表的情况,则日志格式根据 binlog_format 的设定而记录
如果是采用 GRANT,REVOKE,SET PASSWORD 等管理语句来做的话,那么无论如何 都采用 SBR 模式记录。
注:采用 RBR 模式后,能处理很多原先出现的主键重复问题。实例:
对于insert into db_allot_ids select * from db_allot_ids 这个语句:
在BINLOG_FORMAT=STATEMENT 模式下:
BINLOG日志信息为:
—————————————–
BEGIN
/*!*/;
# at 173
#090612 16:05:42 server id 1 end_log_pos 288 Query thread_id=4 exec_time=0 error_code=0
SET TIMESTAMP=1244793942/*!*/;
insert into db_allot_ids select * from db_allot_ids
/*!*/;
—————————————–
在BINLOG_FORMAT=ROW 模式下:
BINLOG日志信息为:
—————————————–
BINLOG '
hA0yShMBAAAAMwAAAOAAAAAAAA8AAAAAAAAAA1NOUwAMZGJfYWxsb3RfaWRzAAIBAwAA
hA0yShcBAAAANQAAABUBAAAQAA8AAAAAAAEAAv/8AQEAAAD8AQEAAAD8AQEAAAD8AQEAAAA=
'/*!*/;
—————————————–
清理日志步骤
1. 查找日志档案
mysql> show binary logs;
+----------------+-----------+
| Log_name | File_size |
+----------------+-----------+
| ablelee.000001 | 150462942 |
| ablelee.000002 | 125 |
| ablelee.000003 | 106 |
+----------------+-----------+
2. 删除 bin-log( 删除 ablelee.000003 之前的而没有包含 ablelee.000003)
mysql> purge binary logs to 'ablelee.000003';
Query OK, 0 rows affected (0.16 sec)
3. 查询结果 ( 现在只有一条记录了 .)
mysql> show binlog events\G
*************************** 1. row ***************************
Log_name: ablelee.000003
Pos: 4
Event_type: Format_desc
Server_id: 1
End_log_pos: 106
Info: Server ver: 5.1.26-rc-log, Binlog ver: 4
1 row in set (0.01 sec)
(ablelee.000001 和 ablelee.000002 已被删除 )
mysql> show binary logs;
+----------------+-----------+
| Log_name | File_size |
+----------------+-----------+
| ablelee.000003 | 106 |
+----------------+-----------+
1 row in set (0.00 sec)
( 删除的其它格式运用 !)
PURGE {MASTER | BINARY} LOGS TO 'log_name'
PURGE {MASTER | BINARY} LOGS BEFORE 'date'
用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除,这样被给定的日志成为第一个。
例如:
PURGE MASTER LOGS TO 'mysql-bin.010';
PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00';
清除
3
天前的
binlog
PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);
BEFORE
变量的
date
自变量可以为
'YYYY-MM-DD
hh:mm:ss'
格式。
MASTER
和
BINARY
是同义词。
如果您有一个活性的从属服务器,该服务
器当前正在读取您正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。不过,如果从属服务器是休止的,并且您碰巧清理了其想要读取
的日志之一,则从属服务器启动后不能复制。当从属服务器正在复制时,本语句可以安全运行。您不需要停止它们。
要清理日志,需按照以下步骤:
1.
在每个从属服务器上,使用
SHOW SLAVE STATUS
来检查它正在读取哪个日志。
2.
使用
SHOW MASTER LOGS
获得主服务器上的一系列日志。
3.
在所有的从属服务器中判定最早的日志。这个是目标日志。如果所有的从属服务器是更新的,这是清单上的最后一个日志。
4.
制作您将要删除的所有日志的备份。(这个步骤是自选的,但是建议采用。)
5.
清理所有的日志,但是不包括目标日志
发表评论
-
MySQL中GBK与UTF-8的区别
2013-02-11 17:53 1600在MySQL中,如果数据库只需要支持一般中文,数据量很大,性 ... -
MySQL中Utf8_general_ci 和 utf8_unicode_ci的区别
2013-02-11 17:51 1251对中、英文来说没有实质的差别。 utf8_gener ... -
Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,NUM
2012-11-09 11:13 7451SHOW VARIABLES LIKE 'coll%'; ... -
修改MySQL字符编码
2012-11-07 08:24 1007修改编码其实是为了支持中文~ 1. 编译级别。由于缺乏 ... -
INNER LEFT RIGHT JOIN
2012-09-07 10:35 1145CREATE TABLE `a` ( `a1` VARC ... -
MySQL设置字符集为UTF8(Windows版)
2012-08-07 08:40 8922Windows版MySQL设置字符集全部为utf8的方式 ... -
【绿色MySQL设置技巧】
2012-07-07 21:31 12151. mysql 远程连接数据 ... -
查询表Y中数据不存在与表X中的数据使用Left JOIN
2012-06-26 12:39 1102看看我写的对不对,查询接着显示表Y中的数据8,4,p 表X有 ... -
mysql 性能优化方案
2012-04-28 17:18 1024网上有不少mysql 性能优 ... -
自增序列产生器的实现思路
2012-04-28 11:45 934l 需求 u 实现MySQL自带的字段值自动增 ... -
InnoDB引擎表的主键选型
2012-04-28 11:41 1427【导读】 MySQL采用开放可插入式存储引擎架构,提供 ... -
数据库设计范式
2012-04-14 11:05 1012数据库设计三范式 第一范式(1NF):数据库表中的字段都是单一 ... -
11 条重要的数据库设计规则
2012-04-14 11:03 992在你开始阅读这篇文章 ... -
11 步教你选择最稳定的 MySQL 版本
2012-04-01 19:59 1106MySQL开源数据库有多个重要分支,目前拥有的分支分别为:My ... -
连接MySQL数据库生成JavaBean
2012-03-28 08:28 9390做网站时,感觉数据库的设计比较重要,当花了很多时间设计好数据库 ... -
MySQL 分区
2012-03-06 10:31 1208MYSQL 存储过程,定义告 ... -
POWERDESIGNER 教程
2012-02-26 12:03 1479一)概念数据模型 目标 : 本文主要介绍Powe ... -
powerdesigner 使用的十五个问题
2012-02-24 14:22 1327PowerDesigner的主要作用一般还是数据库建模,并生成 ... -
数据库设计原则
2012-02-21 07:41 1030原始单据与实体之间的关系 可以是一对一、一对多、多对多的关 ... -
修改mysql root的密码
2012-01-20 08:38 1006mysql> UPDATE mysql. ...
相关推荐
这些配置分别设置了日志格式、日志路径、日志清理时间、单个日志文件的最大大小、binlog缓存大小和最大binlog缓存大小。更改后,需要重启MySQL服务以使配置生效,或者可以直接动态调整相关系统变量。 在实际操作中...
本文将详细介绍两种清理Binlog日志的方法:手动清理和通过设置过期时间自动清理,并提供具体的操作步骤及注意事项。 #### 方法一:手动清理Binlog ##### 清理前的准备工作 1. **确定当前正在使用的Binlog文件:**...
#### 方法二:手动删除binlog日志文件 这种方法涉及到直接删除文件系统中的日志文件。首先需要通过以下命令查看当前存在的日志文件: ```bash ls /var/lib/mysql/ ``` 找到需要删除的日志文件后,可以直接通过 `...
MySQL数据库的binlog日志是二进制形式的记录文件,主要用于记录数据库所有的更改...手动清理和设置自动过期清理都是有效的方法,但是在执行操作前一定要做好相应的备份和确认工作,以免造成数据丢失或主从复制故障。
本文将深入讲解如何正确清理MySQL的binlog日志,确保数据的安全性和系统的稳定运行。 首先,查看MySQL的binlog日志列表,可以通过以下SQL命令实现: ```sql mysql> show binary logs; ``` 这条命令会显示所有已...
总结来说,`mysql手动删除BINLOG的方法`涉及到的关键知识点包括: - MySQL的二进制日志(BINLOG)的作用与重要性 - 使用`PURGE`命令删除二进制日志的三种方式 - 删除日志的注意事项,如数据恢复和主从复制的影响 - ...
自动清理方法可以通过修改配置文件和在 MySQL 内设置参数来实现,例如设置 expire_logs_days 参数来指定日志保留的天数。手动清理方法可以通过执行 PURGE 命令来清理指定的bin-log 文件或清理某个时间点之前的所有...
- **错误告警日志 (Error log)**:记录MySQL服务器启动、运行时错误和警告信息,通常会定期滚动,无需手动清理。 - **通用查询日志 (General query log)**:记录所有客户端发送到服务器的SQL语句,不包括COM_*命令...
这可以通过设置`expire_logs_days`参数实现,或者手动删除不再需要的binlog文件。 - 开启binlog的步骤通常包括在MySQL配置文件中添加相关设置,并重启MySQL服务。 7. **其他相关操作**: - 要从binlog恢复数据,...
自动清理是通过设置binlog的过期时间让系统自动删除过时的binlog文件,如设置expire_logs_days参数。 综上所述,这份学习笔记详细地覆盖了MySQL运维的各个方面,从基础概念、数据类型、数据库操作、安全加固、实例...
为了保证MySQL服务的安全运行,建议手动创建MySQL用户和用户组,并设置相应的权限。 - **创建MySQL用户及用户组:** - `groupadd mysql`:创建名为mysql的用户组。 - `useradd -g mysql -d /home/mysql mysql`:...
- 删除文件:手动清理MySQL安装目录及相关的配置文件,确保完全移除所有残留。 9. **文档支持**: - 安装和卸载文档:提供的文档应该详细介绍了如何进行安装和卸载的步骤,遇到问题时可参考这些指南。 以上就是...
- relay_log_purge参数:在主从服务器上都需要设置为0,关闭中继日志自动清理功能,以允许故障转移时手动控制日志的清理。 知识点6:创建MHA工作目录和配置文件 MHA需要一个工作目录用于存放脚本和日志文件。在指定...
手动启动重做日志进程,使用`innodb_force_recovery`变量,其值从1到6,逐级提高以尝试更激进的恢复方法。但要注意,设置大于2的值可能会导致数据丢失。 六、清理未完成的事务 在恢复过程中,需要确保所有未提交的...
因此,可以手动删除旧的二进制日志文件,以释放空间: 1. 登录MySQL: ```bash /usr/local/mysql/bin/mysql -u root -p ``` 输入MySQL的root用户的密码。 2. 在MySQL命令行界面中,使用`reset`命令重置数据库...
- `expire_logs_days`:自动清理旧binlog的天数。 - `binlog-do-db` 和 `binlog-ignore-db`:指定哪些数据库应被记录或忽略在binlog中。 5. **Semi-sync复制** Semi-sync复制是MySQL的一个增强功能,它确保至少...
这种工具通常可以帮助用户自动或手动清理和调整日志大小,避免手动干预的复杂性。 8. **源码和工具**:对于开发人员,了解数据库系统的源码可以深入理解日志工作原理,而工具则提供方便快捷的解决方案。有时,...