Any time you can get two for the price of one (a “2Fer”), you’re
ahead of the game. By implementing our shared cache as a separate
tier, you get (1) improved performance and (2) storage
flexibility…a 2Fer.
What do I mean by storage flexibility? It means you can use
enterprise storage, cloud storage or PC-based storage. Other
shared-disk cluster databases require high-end enterprise storage
like a NAS or SAN. This requirement was driven by the need
for:
1. High-performance storage
2. Highly available storage
3. Multi-attach, or sharing data from a single volume of LUN
across multiple nodes in the cluster.
Quite simply, you won’t see other shared-disk clustering
databases using cloud storage or PC-based storage. However, the
vast majority of MySQL users rely on PC-based storage, and most
are not willing to pay the big bucks for high-end storage.
ScaleDB’s Cache …
Getting closer to some serious MySQL Cluster NDB API development on Windows, we still need a decent development environment, and as for myself, I like the ability to have a self-contained environment for this, at least contained within one computer, so that I can develop when on the road. So this means I have to use Windows as a Server anyway, right, if I am developing Windows applications? Well, not necessarily, there is always the option of using a VM, such as VirtualBox or something. But I really do prefer to use the native Windows environment for this, which has a few issues.
As I have said before, I do prefer Linux / Unix as a Server platform. But in this case, Windows will only be a development server, which is different. And if you want to use Windows as a production server, well as I have said before, that is fine too, although not my cup of tea,
But running MySQL Cluster on Windows as of version 7.1.4b of MySQL Cluster is …
[Read more]The bug I talked about a little while ago has now also had the fix I wrote committed to the mysql-trunk 5.5.6-m3 repository.
[Read more]Protecting information in databases and possibility to restore databases in case of need is the highest priority task in many companies. But not all DBMSs have built-in tools for data protection (tools to backup and restore databases). And MySQL is one of such DBMSs.
Making database backups is one of the most important things in the process of administrating MySQL databases, because some critical data loss can be irreplaceable.
The task of making daily mysql backup can be solved with the help of the backup database function of dbForge Studio for MySQL. To use it, you should setup backup in the wizard manually and schedule making backups.
To open the Database Backup wizard, you should choose Database → Backup Database from the main menu. …
[Read more]Connector/J has long provided an effective means to distribute read/write load across multiple MySQL server instances for Cluster or master-master replication deployments, but until version 5.1.13, managing such deployments frequently required a service outage to redeploy a new configuration. Given that ease of scaling out by adding additional MySQL Cluster (server) instances is a key element in that product offering, which is also naturally targeted at deployments with very strict availability requirements, we had to add support for online changes of this nature. It’s also critical for online upgrades – the other option is to take a MySQL Cluster server instance down hard, which loses any in-process transactions and generates application exceptions, if any application is trying to use that particular server instance.
Mark Matthews and I first …
[Read more]In a previous blog post, I wrote about Connector/J’s failover policies, I described three triggers which cause Connector/J to re-balance (potentially selecting a new physical connection to another host):
- At transaction boundaries (transactions are explicitly committed or rolled back)
- A communication exception (SQL State starting with “08″) is encountered
- When a SQLException matches conditions defined by user, using the extension points defined by the loadBalanceSQLStateFailover, loadBalanceSQLExceptionSubclassFailover or loadBalanceExceptionChecker properties.
Those conditions fit most needs very well, but there are situations where people are running with auto-commit enabled (no explicit transaction commit or rollback), and the end result is that Connector/J never …
[Read more]In posts on June 30 and July 6, we explained how implementing the commands “replace into” and “insert ignore” with TokuDB’s fractal trees data structures can be two orders of magnitude faster than implementing them with B-trees. Towards the end of each post, we hinted at that there are some caveats that complicate the story a little. In this post, we explain one of the complications: the calculation of affected rows.
MySQL returns the number of rows affected by a “replace” or “insert” statement to the client. For the “replace” statement, the number of affected rows is defined to be the sum of the number of rows …
[Read more]I was asked to write a blog post about MySQL High Availability at Yahoo, particularly for writes. Our standard practice is not particularly high-tech, but we've been using it for over 4 years now and it has become a company-wide standard with a few exceptions. Let me start by saying that at Yahoo! we consider a datacenter as a Single Point of Failure (SPoF). We build and manage many of our own datacenters, and we still don't assume they are invulnerable. How many people can attest to the fact that however to configure your racks, how many redundant switches, power supplies, drives, etc. you buy, if your leased datacenter has power or network issues, you are at their mercy.
I have started seriously using PHP 5.3 recently due to it finally
making it into Portage. (Gentoo really isn't full of
bleeding edge packages people.) I have used mysqlnd a little here
and there in the past, but until it was really coming to my
servers I did not put too much time into it.
What is mysqlnd?
mysqlnd is short for MySQL Native Driver. In short, it is a
driver for MySQL for PHP that uses internal functions of the PHP
engine rather than using the externally linked libmysqlclient
that has been used in the past. There are two reasons for this.
The first reason is licensing. MySQL is a GPL project. The GPL
and the PHP License don't play well together. The second is
better memory management and hopefully more performance. Being a
performance junky, this is what peaked my interests. Enabling
mysqlnd means it is used by the older MySQL extension, the newer
MySQLi extension and the MySQL PDO …
In this chapter we discuss timeouts which can lead to
"MySQL server has gone away" and "Lost
connection to MySQL server" errors.
Extract here is short, because there are a lot of code quotes which I can not properly format here.
Chapter 9. Misterious vanishing of the server.
Often this looks like:
$php phpconf2009_3.php
string(26) "MySQL server has gone away"
Code:
Rest of the chapter is here