ITP: Percona XtraBackup - hot backup utility for MySQL

2013-07-01 Thread Stewart Smith
Hi!

I'm Stewart and I work for Percona. One of the things I'm currently
working on is ensuring all our free and open source software projects
are packaged for all the major linux distributions - including my
beloved Debian.

We're wanting to have Percona XtraBackup be part of Debian. Percona
XtraBackup is an online backup tool for MySQL, MariaDB, Percona Server
and Percona XtraDB Cluster. In the near future, we will also wanting our
packages for Percona Server and Percona XtraDB Cluster to be part of
Debian.

There is an open bug for Percona XtraBackup packaging:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=620824

We are going to make "upload release to Debian" be part of our release
process. We tend to make a new minor bugfix release (i.e. 2.1.x) every
2-3 months and a new major release every 12 (2.0 in April 2012, 2.1 in
May 2013). We want to be an active and involved upstream.

There have been a couple of issues with our source tarballs and build
procedure that I've had to fix up before proposing that Percona
XtraBackup be included. I've made changes on top of our 2.1.3 release
that mean we now generate source tarballs that do not require an
active internet connection to build.

I've put up source tarball and packaging for unstable up at:
http://www.percona.com/downloads/TESTING/XtraBackup/xtrabackup-2.1.3/release-2.1.3/610/source/

All future releases will produce tarballs like this, so they'll be in a
more normal area of our downloads site - I'll also get one up in an
official place for the current 2.1.3 release.

I (and we, the rest of Percona) would really appreciate any
review/comments/suggestions on this packaging - we're really keen to
have Percona XtraBackup be in the Debian archives.

Why is the tarball so big and why did it require an internet connection?
Well, XtraBackup uses *part* of the MySQL code (actually, mostly parts
of InnoDB) to help it read InnoDB pages from disk and back them up
safely. It also uses part of the code to replay REDO logs to prepare a
backup before it can be restored. Due to various not-that-interesting
reasons (all of which we do consider bugs) we currently produce
different binaries for different MySQL versions (hence linking in code
From different MySQL versions).

It's important to note that we patch the InnoDB code inside MySQL to
make it usable by xtrabackup and that we cannot just use the MySQL code
already shipped in Debian for this without creating a nightmare for
the Debian MySQL packaging team, the security team and ourselves (it's
generally non-trivial to port this patch to new versions).

There should never be any security implications of linking against this
(not always up to date) MySQL code as we only use it to read (and write)
files to local disk.

Questions:

1) We have a transitional package called 'xtrabackup' that was (prior to
   2.0) the package name was in our own APT repositories. Does it make
   sense to keep this in the Debian packaging?

2) We have trademarks. We've tried to come up with a trademark policy
   that makes everybody happy (well, as happy as you can be when you're
   dealing with trademark law).
   It's at:
   http://www.percona.com/doc/percona-xtrabackup/2.1/trademark-policy.html
   We believe this should satisfy any requirements of Linux
   distributions, but if there's any concerns, don't hesitate to ask.

3) Supported architectures. We see x86-64, x86 and very, very rarely,
   SPARC. I'd say that both people running XtraBackup on a non-x86
   architecture are happy, but I'm pretty sure there's not even that
   many. While XtraBackup may compile (or even run) on other
   architectures, it currently makes approximately zero business sense
   for us to spend any time on it - although we're happy to take
   patches.

   Given this, how much "works and passes tests on all archs" is
   required to have packages accepted?

4) We plan on continuing to provide our own repositories as well and are
   wanting to not diverge in packaging from our repos and what's in
   Debian. Any tips/tricks are very welcome - we have "build debian
   packages" as part of or continuous integration efforts and plan to
   soon have "run the whole test suite on those packages" as part of it.


Thanks in advance for the feedback!
-- 
Stewart Smith


pgpsxgLsSmZt7.pgp
Description: PGP signature


Re: ITP: Percona XtraBackup - hot backup utility for MySQL

2013-07-02 Thread Stewart Smith
Paul Wise  writes:
> On Tue, Jul 2, 2013 at 2:41 PM, Stewart Smith wrote:
>
>> I'm Stewart and I work for Percona. One of the things I'm currently
>> working on is ensuring all our free and open source software projects
>> are packaged for all the major linux distributions - including my
>> beloved Debian.
>
> Since you are part of upstream, please review our upstream guide and
> the links in the external advice section:
>
> http://wiki.debian.org/UpstreamGuide

Thanks for the pointer. It appears that we're pretty good on most things
mentioned there and some things we've got plans to address.

>> There is an open bug for Percona XtraBackup packaging:
>> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=620824
>
> Since you intend to package it, you should retitle this bug to intent
> to package and set yourself as the owner of it:
>
> http://www.debian.org/devel/wnpp/#l3
> http://www.debian.org/Bugs/server-control#retitle
> http://www.debian.org/Bugs/server-control#owner

Done.

>> I've put up source tarball and packaging for unstable up at:
>> http://www.percona.com/downloads/TESTING/XtraBackup/xtrabackup-2.1.3/release-2.1.3/610/source/
>
> I'm unable to unpack the source package:
>
> $ dpkg-source -x percona-xtrabackup_2.1.3-610-1.dsc
> dpkg-source: warning: extracting unsigned source package
> (percona-xtrabackup_2.1.3-610-1.dsc)
> dpkg-source: error: File ./percona-xtrabackup_2.1.3-610.orig.tar.gz
> has size 39459 instead of expected 141074103

I'll investigate this first thing in the morning (it's getting late),
although it looks as though the tar.gz didn't fully download (yes, it's
really 135MB)

> You may want to run some commands from the source tree after a build:
>
> http://wiki.debian.org/HowToPackageForDebian#Check_points_for_any_package

I think there's some good ideas here that we can add to our CI
infrastructure. I don't think there's anything that would be considered
a blocker though.

> Also, I encourage you to sign your Debian packages and also your
> upstream tarballs using OpenPGP keys. Here are some best practices for
> OpenPGP:
>
> https://we.riseup.net/riseuplabs+paow/openpgp-best-practices

Yep, we typically do this. We use a key for the company rather than our
individual ones for our current repositories. Is this an acceptable
approach for packages going into Debian? Or should we just have the few
individuals sign it if they're involved?

>> Why is the tarball so big and why did it require an internet connection?
>> Well, XtraBackup uses *part* of the MySQL code (actually, mostly parts
>> of InnoDB)
>
> An alternative to including the MySQL InnoDB code might be to
> build-depend on mysql-source-5.5, unpack and patch it during the build
> process and add Built-Using: mysql-5.5 (= $version) to the resulting
> binary package.

We'd need to depend on very specific 5.1, 5.5 and 5.6 versions of both
MySQL and Percona Server (which isn't yet packaged) and we'd also have
to patch it.

Our short/medium term plan is to do away with having multiple server
source trees and binaries. We instead plan to just make a modified MySQL
branch where we just include the needed (modified) source. In an ideal
world the needed code would be buildable as a library and we'd get the
needed patches upstream. It is not an ideal world however :(


>> 1) We have a transitional package called 'xtrabackup' that was (prior to
>>2.0) the package name was in our own APT repositories. Does it make
>>sense to keep this in the Debian packaging?
>
> Seems reasonable to include it if you really want to. There seem to be
> more folks using percona-xtrabackup than xtrabackup though:

I'm not really attached either way... It appears that it may not be
worth having it. I'll defer to the experts on this one.

>> 2) We have trademarks. We've tried to come up with a trademark policy
>>that makes everybody happy (well, as happy as you can be when you're
>>dealing with trademark law).
>>It's at:
>>http://www.percona.com/doc/percona-xtrabackup/2.1/trademark-policy.html
>>We believe this should satisfy any requirements of Linux
>>distributions, but if there's any concerns, don't hesitate to ask.
>
> I'd suggest mailing debian-legal about this question but based on the
> trademark policy it appears that Debian would have to rename percona
> if we wanted to add a security patch in stable?

I'll bring it up there. We would see that as simply a patch that's
needed for that version to be included in that Os and thus not an issue.

> You may want to listen to this FOSDEM talk entitled 'How to Share a 

Re: ITP: Percona XtraBackup - hot backup utility for MySQL

2013-07-02 Thread Stewart Smith
Vincent Bernat  writes:
>  ❦  2 juillet 2013 09:20 CEST, Paul Wise  :
>
>>> Why is the tarball so big and why did it require an internet connection?
>>> Well, XtraBackup uses *part* of the MySQL code (actually, mostly parts
>>> of InnoDB)
>>
>> An alternative to including the MySQL InnoDB code might be to
>> build-depend on mysql-source-5.5, unpack and patch it during the build
>> process and add Built-Using: mysql-5.5 (= $version) to the resulting
>> binary package.
>
> The problem is that it should Build-Depends on Percona MySQL which is
> not yet available in Debian. I think the first step would be to provide
> Percona MySQL packages. Currently, it seems that there is no easy way to
> provide packages as alternative to MySQL but maybe work has already
> started with MariaDB.

It would need to build-depend on specific MySQL and Percona Server
versions (which end up being on-disk compatible with various MariaDB
versions).

We're working on getting Percona Server ready to be included too, but
we'd be going for the current Percona Server versions not the ones we
patch heavily to then build XtraBackup with.

But, the main problem is that we need to patch the InnoDB source to build
XtraBackup and the patch isn't trivial to port to the latest versions
(and there's usually no benefit in doing so).

It's better to think of XtraBackup patching and including the parts of
InnoDB it needs and for reasons that are largely historical it's
multiple binaries for multiple versions of InnoDB.

Our short/medium term goal is to stop doing this and actually just have
one set of InnoDB code from the most recent MySQL/Percona Server version
and one XtraBackup binary that works on all server versions.

In an ideal world there'd be some library we could link against and have
the patches be accepted upstream.. but we're not in an ideal world. This
would make it more like something like xfsprogs which does end up
including some of the same code as the kernel (although we patch InnoDB
while xfsprogs seems to be about at the point where that isn't
necessary).

So while we do understand how it'd be great to build against the source
in mysql-source-5.5, it's just not really feasible to do so and maintain
quality and maintainability. We're hoping that our short/medium term of
just including the patched InnoDB bits we need in our source tree to
mostly solve the problem.

I hope this helps clarify.

-- 
Stewart Smith


pgpocLz_8VZAP.pgp
Description: PGP signature


Re: ITP: Percona XtraBackup - hot backup utility for MySQL

2013-07-02 Thread Stewart Smith
Paul Wise  writes:
> On Tue, Jul 2, 2013 at 7:35 PM, Stewart Smith wrote:
>
>> I'll investigate this first thing in the morning (it's getting late),
>> although it looks as though the tar.gz didn't fully download (yes, it's
>> really 135MB)
>
> Looks like your tarball is named incorrectly (tar.gz instead of
> orig.tar.gz) and your website returns a HTTP 302 code (redirect) and
> some HTML for the orig.tar.gz URL rather than a 404.

I'll ensure our process includes putting the tarball up named
correctly. The tarball in that directory should be the right one when
named correctly though (unless I brain-farted and got it wrong :)

>> Yep, we typically do this. We use a key for the company rather than our
>> individual ones for our current repositories. Is this an acceptable
>> approach for packages going into Debian? Or should we just have the few
>> individuals sign it if they're involved?
>
> It is a reasonable approach for upstream tarballs. Uploads to Debian
> need to be signed by one of the keys in the developer keyring or a
> subkey of one of those keys.

My guess is the reasonable thing to do is ensure that a few of us have
keys in the keyring then so that there's some redundancy (after all, we
have to let people take vacation :)

>> We'd need to depend on very specific 5.1, 5.5 and 5.6 versions of both
>> MySQL and Percona Server (which isn't yet packaged) and we'd also have
>> to patch it.
>>
>> Our short/medium term plan is to do away with having multiple server
>> source trees and binaries. We instead plan to just make a modified MySQL
>> branch where we just include the needed (modified) source. In an ideal
>> world the needed code would be buildable as a library and we'd get the
>> needed patches upstream. It is not an ideal world however :(
>
> I see, maybe you have chosen the way of least pain.

We try to :)

>> I'm not really attached either way... It appears that it may not be
>> worth having it. I'll defer to the experts on this one.
>
> Maybe ask your userbase if they need it?

I'll reach out through our support org. I suspect we'd be fine
without it.

>> I'll bring it up there. We would see that as simply a patch that's
>> needed for that version to be included in that Os and thus not an issue.
>
> The danger is if that approach to interpretation if the policy were to
> change.

Okay. I'll bring it up on debian-devel and see if we need changes (it
just means I probably get to talk trademark law more... which is
generally something I try to avoid :)

>> It's certainly something we may be interested at looking at... I guess
>> we'll see what the buildds say :)
>>
>> We do have a test suite. It does (of course) depend on having server
>> binaries around to run backup and restore with. Our CI infrastructure
>> currently uses just binary tarballs of various server versions, but this
>> probably isn't ideal for Debain so we'll have to come up with another
>> solution. One thing to consider is that (like MySQL) running the test
>> suite takes a non-trivial amount of time.
>
> Please do enable the test suite for Debian builds and run them with
> the binaries built during the build process.

The problem we'll have to solve is running against MySQL (and Percona
Server) versions... and I'm not sure the best way to wrangle that (we
probably have to fix a bug or two in the test suite to ensure it works
against an installed binary - we currently download binary tarballs and
run against them).


-- 
Stewart Smith


pgpftxrCZEIR9.pgp
Description: PGP signature


Bug#718227: ITP: percona-playback -- A tool for replaying captured database server load

2013-07-28 Thread Stewart Smith
Package: wnpp
Severity: wishlist
Owner: stewart.sm...@percona.com

Percona Playback is a tool for replaying the captured load of one database
server against another in the most realistic way possible. Captured load can
come in the form of MySQL slow query logs or tcpdump capture.
It's multithreaded, modular and configurable to allow for flexibility and
future extension.

http://www.percona.com/doc/percona-playback/
http://www.percona.com/downloads/Percona-Playback/

Daily source packages for unstable:
http://jenkins.percona.com/view/Playback/job/percona-playback-trunk-dpkg-source/debian_distribution=unstable,label_exp=sbuild/

Daily binary packages for unstable:
http://jenkins.percona.com/view/Playback/job/percona-playback-trunk-dpkg/architecture=i386,debian_distribution=unstable,label_exp=sbuild/
http://jenkins.percona.com/view/Playback/job/percona-playback-trunk-dpkg/architecture=amd64,debian_distribution=unstable,label_exp=sbuild/

I'm intending to package the 0.7 release, which, since I'm in control of
upstream, makes packaging for Debian easier and will incorporate any
changes needed to be packaged.

-- 
Stewart Smith


pgpRyuykOArrx.pgp
Description: PGP signature


Bug#718228: ITP: qpress -- Utility for manipulating quicklz archives

2013-07-28 Thread Stewart Smith
Package: wnpp
Severity: wishlist
Owner: stewart.sm...@percona.com

From http://www.quicklz.com/ :

QuickLZ is the world's fastest compression library, reaching 308 Mbyte/s
per core. It can be used under a commercial license if such has been
acquired or under GPL 1, 2 or 3 where anything released into public must
be open source.
- Simple to use and easy to integrate. Get done in minutes and continue 
developing!
- Streaming mode for optimal compression ratio of small packets down to 200 - 
300 bytes in size.
- Auto-detection and fast treatment of incompressible data.


Note: I'm working with upstream to fix a few issues with how they
distribute the quicklz source that makes it a bit hard to package.

-- 
Stewart Smith


pgp4GOoYMhc1B.pgp
Description: PGP signature


Re: Bits from the Release Team (Jessie freeze info)

2013-10-22 Thread Stewart Smith
Steven Chamberlain  writes:
> On 21/10/13 16:42, Niels Thykier wrote:
>> I would love for us to have an automated system to give us a
>> "weather-report" on the toolchain for each architecture.  It would be
>> nice both for us to see how ports are doing and for porters to spot and
>> fix problems early.
>
> That sounds a lot like the purpose of Jenkins[0], but I'm not sure if
> it's exactly suitable.  It seems a little heavy, that someone could more
> easily be able to script some cron jobs for a task than learn how to
> use it.

It's actually a pretty low barrier to entry, if you know what commands
you need to run, it's pretty easy to get started with jenkins (create
job, have it execute shell commands, write shell in box, hit build).

I'd say that it's about 10 times more likely you'll get it right in
Jenkins before you get it right in cron.

> And Jenkins isn't available yet on all arches;  some ports may not have
> hardware powerful enough to run it.  Maybe that doesn't matter - a
> single Jenkins instance might be able to launch jobs via remote shells
> to other boxes, running the actual test suite there, or maybe just to
> fetch, analyse and report on the resulting log files.

Jenkins can have slaves on remote hosts, via SSH. It runs a small java
app there, so as long as the arch has a JVM then you're pretty right.

-- 
Stewart Smith


pgpK9r2igtQxx.pgp
Description: PGP signature


Re: Bits from the Release Team (Jessie freeze info)

2013-10-23 Thread Stewart Smith
Geert Uytterhoeven  writes:
> On Wed, Oct 23, 2013 at 12:36 AM, Stewart Smith
>  wrote:
>> Jenkins can have slaves on remote hosts, via SSH. It runs a small java
>> app there, so as long as the arch has a JVM then you're pretty right.
>
> For whatever definition of small. I've seen it consuming 1 GiB of
> memory...

with 'm68k' in your email address your definition of small is likely
much different than my "many years in large scale databases" small :)

That being said... I haven't recently seen a slave jenkins java process
more than one or two hundred mb.

This is (of course) absolutely insane, as is the 4-6GB jenkins master
process. However, dollars per GB of memory is suitably low that it's not
worth me fixing it, instead it just sits there annoying me as it could
undoubtedly be better


-- 
Stewart Smith


pgpYLYPIugD_P.pgp
Description: PGP signature


Re: [debian-mysql] MySQL.. no.. _I_ need your help!

2013-10-27 Thread Stewart Smith
Clint Byrum  writes:
> I am asking you, the Debian developers, to step up and help. I am
> basically unable to contribute more than an hour a month now. There is a
> new round of secret CVE bugs to fix, and some old bugs that need to be
> handled. I think my October hour is about to be available, so I might
> be able to address those, but after that, if I don't get any more help,
> I'm done.
>
> What can you do to help?
>
> - Raise your hand and say you'll help

I'm currently putting effort into getting Percona Server packages able
to be included and after that work is done, will be focusing on having
less variation between them and the MySQL packages, hopefully improving
everything as part of that effort. So this is a somewhat raised hand :)

-- 
Stewart Smith


pgphYjRKjv0J5.pgp
Description: PGP signature