Replication
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. [...]
环境:centos 5 mysql 5主从复制报错: [ERROR] Slave SQL: Error ‘Duplicate entry ‘…’ for key ‘PRIMARY” on query. Default database: ‘blog’. Query: ‘insert into tb_article_peak(…) values(…’)’, Error_code: 1062 stop slave; desc tb_article_peak; select * from tb_article_peak where peak_id>=’…’; delete tb_article_peak where peak_id>=’…’; start slave; 复制恢复正常。 过一段时间又报错,间隔从几小时到几天不等。 不解。 只好把读写都集中到master db上。 但不应是mysql replication 的问题,因为新的数据产生量很大,如果复制有问题,不会间隔几天才报错。 最后终于找到原因: 某一段代码把连接池弄反,写时调用了读的连接,写到了slave db上。所以产生Duplicate entry。
近期评论