IPv6 in Drizzle, soon in MySQL?

hingo's picture

Earlier today I posted a Drizzle white paper we've been working on: Drizzle and IPv6.

We hope to publish more such white papers in the future, and focusing on features and architectures that are unique to Drizzle (altogether, or, as in this case, at least with regard to other MySQL forks). The IPv6 support was a nice feature to start with, since it is quite a simple thing on the one hand, but otoh it is (surprisingly) still a distinguishing feature that the family of "classic MySQL" forks don't have. Of course, it is also timely both because a) the IPV6 column type is new for Drizzle 7.1 and b) it was developed as part of Google Summer of Code 2011, and we are now approved for GSoC 2012 so it is a nice showcase for a new batch of students what can be done.

But while IPv6 is perhaps a small detail in all the things an RDBMS does, it also nicely captures the vision of Drizzle to be modern and fresh. The IPv6 networking support was implemented early on in 2008 as part of this agenda. It's perhaps not as grand of a project than massively modularizing the code base or removing mutexes in a quest to scale better on multiple cores, but it's one thing.

At the same time, it's not such a big deal. I don't expect lots of people to migrate en masse to Drizzle because it has support for IPv6 networking, when at the same time they might actually be needing features it lacks - from stored procedures to HandlerSocket, just to list an example each of both old school and trendy MySQL features. I fully believe MySQL will not have a problem implementing IPv6 when the world really, I mean really, needs it. So it's more just something to highlight the Drizzle personality than anything else.

In fact, showcasing new features and approaches may be Drizzle's biggest contribution to the MySQL space - at least to this day. In the case of IPv6 it's rather obvious that one day everyone will have to support it.

Update: It seems MySQL 5.5 does indeed support IPv6 networking, it's just not documented anywhere. See comments for handwaving. (It does not invalidate the point of this blog though, which was precisely that sooner or later the classic MySQL forks will fill also this gap, just like the ones I'm listing next.)

If we think of other recent advancements along the Percona-MariaDB axis, I can think of:

  • Fixing InnoDB group commit. In Drizzle this just went away due to redesigning replication in a way that it doesn't do XA anymore (the binary log is inside InnoDB). Percona Server and MariaDB now have a fix created by Kristian Nielsen and MySQL 5.6 will ship with a different fix to the same problem (I believe it is done by Mats Kindahl).
  • Pluggable authentication, e.g. LDAP authentication. It was in Drizzle a long time ago (in fact, only recently Daniel Nichter re-introduced something that resembles the familiar MySQL way). This Autumn Oracle published closed source modules for MySQL pluggable authentication, followed immediately by open source releases from Percona and MariaDB. Btw, Drizzle's approach still goes further. On the classic MySQL side the native authentication still takes the role of a proxy to all other alternatives (you still need to CREATE USER, essentially LDAP just becomes a way to sync your password) while in Drizzle all authentication alternatives are created equal. If you choose LDAP then users are created in LDAP only, there will be no user tables at all.
  • Thread pool. Well, in fact Drizzle doesn't have a thread pool as far as I know, instead the refactoring work was focused on enabling good scalability to hundreds of client connections by really removing the locking that degrades performance. Also announced during last Autumn, and now first available in MariaDB 5.5 beta, the classic MySQL camp takes the approach of a thread pool. It's a bit of cheating really, as it doesn't clean up the locking issues MySQL has when going beyond 32 client connections, but instead it just acts as a gate keeper and makes sure only 32 (or another low number) threads are running inside MySQL at any given time. Cheating or not but apparently it works, so the end user should be happy nevertheless.

These were just a few examples I could think of where Drizzle is proud to have been "leading the way" but all the other MySQL forks nowadays provide a similar feature - hence there really isn't a big competitive advantage one way or another. It's more about different "personalities" or "spirit" between the projects which derive from their respective goals.

Speaking of Google Summer of Code, I got the email that Drizzle is accepted for this year again! We seem to be one of the 19 projects that don't yet appear on the 2012 GSoC listing, but hopefully by tomorrow you can already see us there. Meanwhile, if you're a student and interested, we have a wiki page with some information and project ideas.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Anonymous friend's picture

MySQL 5.5 has IPV6

MySQL 5.5 has IPV6 support....

hingo's picture

If that's true, why isn't it

If that's true, why isn't it documented anywhere? (http://dev.mysql.com/doc/refman/5.6/en/server-options.html#option_mysqld...)

Peter Laursen's picture

release notes document it

Ther are several notes about ipv6 here http://dev.mysql.com/doc/refman/5.5/en/news-5-5-3.html - including

"MySQL now supports IPv6 connections to the local host, using the address ::1. For example:

shell> mysql -h ::1

The address ::1 can be specified in account names in statements such as CREATE USER, GRANT, and REVOKE. For example:
mysql> CREATE USER 'bill'@'::1' IDENTIFIED BY 'secret';
mysql> GRANT SELECT ON mydb.* TO 'bill'@'::1';

The default set of accounts created during MySQL installation now includes an account for 'root'@'::1'."

and

"As part of the fix for this bug, a new build option --disable-ipv6 has been introduced. Compiling MySQL with this option causes all IPv6-specific code in the server to be ignored."

But I am not able to locate what (if something) happened before 5.5.3. And agree that docs generally does not seem to reflect this.

BTW: it works whne connecting to mySQL 5.5.20 on my WIn7 laptop:

C:\Program Files\MySQL\MySQL Server 5.5\bin>ping ::1

Pinger ::1 med 32 byte data:
Svar fra ::1: tid<1ms
Svar fra ::1: tid<1ms
Svar fra ::1: tid<1ms
Svar fra ::1: tid<1ms

Ping-statistikker for ::1:
Pakker: Sendt = 4, modtaget = 4, tabt = 0 (0% tab),
Beregnet tid for rundtur i millisekunder:
Minimum = 0ms, Maksimum = 0ms, Gennemsnitlig = 0ms

C:\Program Files\MySQL\MySQL Server 5.5\bin>mysql -h ::1 -uroot -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.5.20 MySQL Community Server (GPL)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

hingo's picture

Yes, I saw that one, but

Yes, I saw that one, but localhost? Really? I mean 127.0.0.1 is the one address that IPv4 space will not run out of :-)

But others have pointed out and I verified that a MySQL 5.5 client indeed seems to understand also other IPv6 addresses than just localhost. It was lazy of me not to test (I did test a 5.1 client that happened to be available) but otoh this is probably the first time MySQL documentation is not covering something I needed to know. I've really come to trust it blindly over the years.

Henrik Ingo: IPv6 in Drizzle, soon in MySQL? | Weez.com's picture

Pingback

[...] read more [...]

Ramesh's picture

Regarding the ipv6 cmpliance for MySql 5.0

Please comment whether MySql 5.0 supports the ipv6 or not

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Use [fn]...[/fn] (or <fn>...</fn>) to insert automatically numbered footnotes.
  • Allowed HTML tags: <h1> <h2> <h3> <h4> <p> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <br> <sup> <div> <blockquote> <pre> <img>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically. (Better URL filter.)

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.