https://github.com/lefred/percona-cluster
Percona XtraDB Cluster test
https://github.com/lefred/percona-cluster
Last synced: over 1 year ago
JSON representation
Percona XtraDB Cluster test
- Host: GitHub
- URL: https://github.com/lefred/percona-cluster
- Owner: lefred
- Created: 2012-01-13T21:48:11.000Z (over 14 years ago)
- Default Branch: master
- Last Pushed: 2014-02-07T14:47:25.000Z (over 12 years ago)
- Last Synced: 2025-03-27T09:52:06.227Z (over 1 year ago)
- Language: Puppet
- Homepage: http://www.percona.com/software/percona-xtradb-cluster/
- Size: 381 KB
- Stars: 32
- Watchers: 9
- Forks: 13
- Open Issues: 1
-
Metadata Files:
- Readme: Readme.rst
Awesome Lists containing this project
README
Percona XtraDB Cluster : Vagrant & pupppet recipes
**************************************************
This Vagrant setup can be used to deploy and test Percona XtraDB Cluster (Percona Server with Galera - http://www.percona.com/software/percona-xtradb-cluster) in
VirtualBox.
The puppet code illustrates the latest improvement of PXC since version 5.5.31-23.7.5
(http://www.percona.com/doc/percona-xtradb-cluster/release-notes/Percona-XtraDB-Cluster-5.5.31-23.7.5.html):
* bootstrap the cluster
* use extended Xtrabackup features during SST
Puppet recipes can also be used without Vagrant
Requirements
============
You need :
* a Centos 6 x86_64 box to use with Vagrant. (64 bit is mandatory if you use compression for xtrabackup stream, and you don't want to compile qpress by yourself)
* VirtualBox - https://www.virtualbox.org/
* a working Vagrant environment - http://vagrantup.com/
* an Internet connection for the VM's
If you don't have a Centos 6 base box, you can download mine at https://dl.dropboxusercontent.com/u/11697684/centos63.box
This box includes puppet, firewall is disabled and has a nice motd ;)
How to use it ?
===============
Once you have your requirements ready, it's very easy to deploy your boxes::
$ git clone https://github.com/lefred/percona-cluster.git
$ cd percona-cluster
$ vagrant up
This will deploy the 3 machines: percona1, percona2 and percona3.
And this is all !
These recipes also install GLB (Galera Load Balancer) on percona1.
You can read more on shinguz's post : http://www.fromdual.com/mysql-and-galera-load-balancer
.. note:: Starting MySQL on percona2 and percona3 takes a lot of time as the sleep delay of the init script has been increased during SST.
Details about the new functionalities
=====================================
bootstrap the cluster
---------------------
Since PXC 5.5.31, it's now possible to bootstrap the cluster (http://www.percona.com/doc/percona-xtradb-cluster/manual/bootstrap.html) using
*bootstrap-pxc* instead of *start* as command for the init script. Read this for more information related on how it had to be done before:
http://www.mysqlperformanceblog.com/2013/01/29/how-to-start-a-percona-xtradb-cluster/
With this puppet code, we define in *site.pp* the node we want to use to bootstrap the cluster (percona1 in this case)::
class {
'percona::cluster':
bootstrap => True
}
If you use these puppet recipes in production, I recommend you to set *bootstrap* to **True** only when needed.
SST integration with Xtrabackup 2.1
-----------------------------------
Since PXC 5.5.31 it's alo possible to use the new xbstream options for Xtrabackup.
In the current environment, SST is performed by Xtrabackup in 2 parallel threads and compressed. (It's also possible to crypt it).
To achieve that, some easy additions to my.cnf are needed. So this is what I added in the template (*modules/percona/templates/cluster/my.cnf.erb*)::
[sst]
streamfmt=xbstream
[xtrabackup]
compress
compact
parallel=2
compress-threads=2
rebuild-threads=2
But it is also **mandatory** to have *qpress* (http://www.quicklz.com/) installed and the MySQL datadir must be empty (which is currently very boring, see
https://bugs.launchpad.net/percona-xtrabackup/+bug/1193240).
There are 2 puppet classes performing these actions:
* class qpress
* class percona::cluster::xbstream
This is what you should see in mysql's error log if it worked as expected::
OO
WSREP_SST: [INFO] Streaming with xbstream (20130627 13:05:20.991)
WSREP_SST: [INFO] xbstream requires manual cleanup of data directory before SST - lp:1193240 (20130627 13:05:20.998)
...
WSREP_SST: [INFO] Proceeding with SST (20130627 13:05:54.335)
WSREP_SST: [INFO] Removing existing ib_logfile files (20130627 13:05:54.340)
WSREP_SST: [INFO] Index compaction detected (20130627 13:05:54.348)
WSREP_SST: [INFO] Rebuilding with 2 threads (20130627 13:05:54.356)
WSREP_SST: [INFO] Compressed qpress files found (20130627 13:05:54.364)
WSREP_SST: [INFO] Removing existing ibdata1 file (20130627 13:05:54.370)
WSREP_SST: [INFO] Decompression with 1 threads (20130627 13:05:54.375)
How to setup the environment
============================
These are the step to run to be able to setup everything you need.
VirtualBox
----------
On RedHat/CentOS/Fedora...
::
# yum install virtualbox
On Ubuntu/Debian
::
# apt-get install virtualbox
Vagrant
-------
I use Ruby gem to install Vagrant::
# gem install vagrant
Import the base box
...................
::
# wget https://dl.dropboxusercontent.com/u/11697684/centos63.box
# vagrant box add centos63 centos63.box
# rm centos63.box (if you don't need a copy)