This article will explain how continual replication sync checking works, how to test and make the procedure non-blocking, benchmarks from the real world, issues we encountered along the way, and finally Pythian’s procedure of setting up continual replication sync in a new environment.
Following up on my threat of last week, I released Test::Wrapper on CPAN. If you read my previous blog entry, you know that one of the big gotchas of the wrapping gymnastics I was doing was that it was utterly #@$%$# up Test::Builder’s internal states. Thus, at that point, it was either run TAP tests, or use Test::Wrapper, but don’t do both at the same time. Not the most God-awful limitation ever, perhaps, but still not very cool. Since then, I’ve taken a second look at the problem, and realized that this limitation can not only be overcome, but in a surprisingly easy manner.
Emerson wrote: “Foolish consistency is the hobgoblin of small minds”. I love this quote, because it allows me to announce a presentation titled “7 Sins of Concurrency” and then show up with only 5. There are places where consistency is indeed foolish, while other times I wish for more consistency. Here is a nice story that illustrates both types of consistency, or lack of.
I wanted to get examples of some of the extra information that the Percona server has in its INFORMATION_SCHEMA metadata, and in doing so, I stumbled across an interesting MySQL bug/feature/point — INFORMATION_SCHEMA tables (which are actually system views) are case sensitive when used in comparisons:
I was happily minding my business today, until I got sight of Tim’s tweet bemoaning the fact that Test::Difference tests can’t easily be used outside of a test harness. Darn him, that’s exactly the kind of happy little puzzle I can’t resist. So I began to think about it. Of course, the Right Solution is probably to add alternative non-TAP-tied functions to the test modules themselves. But what if you just want to quickly leverage the module’s functionality without having to re-arrange its innards? Well, most test modules use Test::Builder, so there’s surely ways to twist that to our advantage. After a hour or two of hacking, I think I got one.
If you are, you might like the little greasemonkey script (available on userscript.org and github) that I churned. The script finds the AUTHORS/CONTRIBUTORS section of POD pages on http://search.cpan.org and add Gravatar pictures where it finds author email addresses. The picture on the right is an example of what it does to the main Catalyst CONTRIBUTORS section.
Inspired, but not completely satisfied with Camelia, the Perl 6 mascot, Sebastian Riedel came up with a new set of butterfly logos for the Perl 5/6 family. Very purty, methinks, very purty indeed.
For the 4th Extremely Large Databases Conference. I am interested in any MySQL folks planning to attend (I would expect Tokutek to be represented, and maybe even the Calpont folks). Most of this is directly from an e-mail I received from Jacek Becla, who had a keynote at the 2008 MySQL User Conference and Expo. If you also received this e-mail, please feel free to skip ahead to my viewpoints on the various Oracle conferences (or just skip altogether).
A little hacking happened to decouple the core engine from its Apache roots, and XML::XPathScript was born. That module served me quite well throughout the years, but for some time now I’ve had this plan of doing a clean rewrite patiently sitting on my back-burner. This week I had a smashing staycation, and thanks to a very understanding wife, I was able to indulge in the necessary hacking sessions to get the ground work done. The result is not on CPAN yet, but can be perused on GitHub. As an example is worth a thousand pages of documentation, let’s say that you want to turn the piece of docbook-ish xml
I think Michael Stonebraker overshot the target In a 2007 paper titled, “The End of an Architectural Era”. Why is this The End? According to Michael Stonebraker “current RDBMS code lines, while attempting to be ‘one size fits all’ solution, in face, excel at nothing. Hence, they are 25 years old legacy code lines that should be retired in favor of a collection of ‘from scratch’ specialized engined”.