Replication OK (transfert from another git repo)

This commit is contained in:
Emilien Mantel
2015-08-11 10:22:58 +02:00
parent 7eed88df04
commit 16b105786b
31 changed files with 527 additions and 64 deletions

49
tests/README.md Normal file
View File

@@ -0,0 +1,49 @@
About tests
===========
IMPORTANT
---------
- DO NOT `vagrant up`! My Vagrantfile provides 14 VMs (256MB each)...
- Each slave communicate to his master. You can't mix jessie and wheezy or mysql and mariadb.
- This tests uses my [MySQL role](https://github.com/HanXHX/ansible-mysql).
Tests
-----
- vagrant up the master
- vagrant up the slave
Wait master fully installed before run slave.
Example:
```
sudo ansible-galaxy install HanXHX.mysql
vagrant up jessie-upstream-mariadb-master
vagrant up jessie-upstream-mariadb-slave
```
Supported platforms
-------------------
- Debian Wheezy
- Debian Jessie
Supported MySQL vendors
-----------------------
- MariaDB 10.0 (from Debian Jessie or MariaDB repository)
- MySQL 5.5 (from Debian repositories)
- Percona Server 5.6 (from Percona Repository)
About MySQL 5.6
---------------
You can get MySQL 5.6 for Debian with [Dotdeb](https://www.dotdeb.org) with my [Dotdeb role](https://github.com/HanXHX/ansible-debian-dotdeb). I give no support with this version (pull-request accepted). It can work but without GTID.
About MariaDB 10.1
------------------
When the application is considered stable, I'll support this version.

64
tests/gen.pl Executable file
View File

@@ -0,0 +1,64 @@
#!/usr/bin/perl
#
# This script generates ansible test config for Vagrant
#
use strict;
use warnings;
use Socket;
my @a = (
"wheezy-default-mysql-master",
"wheezy-default-mysql-slave",
"wheezy-upstream-mariadb-master",
"wheezy-upstream-mariadb-slave",
"wheezy-upstream-percona-master",
"wheezy-upstream-percona-slave",
"jessie-default-mysql-master",
"jessie-default-mysql-slave",
"jessie-upstream-mariadb-master",
"jessie-upstream-mariadb-slave",
"jessie-upstream-percona-master",
"jessie-upstream-percona-slave",
"jessie-default-mariadb-master",
"jessie-default-mariadb-slave",
);
my $start_ip = '192.168.200.10';
my $iip = ip2long($start_ip);
my $tmp_ip = 0;
foreach my $n (@a)
{
my @data = split(/-/, $n);
printf(
'["%s", "deb/%s-amd64", "%s", [%s]],' . "\n",
$n,
$data[0],
long2ip($iip),
join(',', map { sprintf('"%s"', $_) } @data)
);
if($data[-1] eq 'slave')
{
open(FILE, '>', "host_vars/$n");
printf FILE (qq/his_master: '%s'\n/, $tmp_ip);
close(FILE);
}
open(FILE, '>', "group_vars/" . $data[2]);
printf FILE (qq/mysql_vendor: '%s'\n/, $data[2]);
close(FILE);
$tmp_ip = long2ip($iip);
$iip++;
}
sub ip2long {
return unpack("l*", pack("l*", unpack("N*", inet_aton(shift))));
}
sub long2ip {
return inet_ntoa(pack("N*", shift));
}

1
tests/group_vars/default Normal file
View File

@@ -0,0 +1 @@
mysql_origin: 'default'

1
tests/group_vars/mariadb Normal file
View File

@@ -0,0 +1 @@
mysql_vendor: 'mariadb'

21
tests/group_vars/master Normal file
View File

@@ -0,0 +1,21 @@
# Master must listen for replication
mysql_bind_address: '0.0.0.0'
# Master durability
mysql_sync_binlog: '1'
mysql_innodb_flush_log_at_trx_commit: '1'
mysql_databases:
- 'testrepl'
- 'norepl'
mysql_users:
- name: 'replication'
password: '1a2b3c'
priv: '*.*:"REPLICATION SLAVE"'
host: '%'
mysql_replication_master: true
mysql_replication_slave: false
mysql_server_id: 1
# vim: set ft=yaml :

1
tests/group_vars/mysql Normal file
View File

@@ -0,0 +1 @@
mysql_vendor: 'mysql'

1
tests/group_vars/percona Normal file
View File

@@ -0,0 +1 @@
mysql_vendor: 'percona'

9
tests/group_vars/slave Normal file
View File

@@ -0,0 +1,9 @@
mysql_replication_master: false
mysql_replication_slave: true
mysql_replication_user: 'replication'
mysql_replication_password: '1a2b3c'
mysql_replication_host: '{{ his_master }}'
mysql_server_id: 2
mysql_slave_ignore_db: ['norepl']
# vim: set ft=yaml :

View File

@@ -0,0 +1 @@
mysql_origin: 'upstream'

View File

@@ -0,0 +1 @@
his_master: '192.168.200.22'

View File

@@ -0,0 +1 @@
his_master: '192.168.200.16'

View File

@@ -0,0 +1 @@
his_master: '192.168.200.18'

View File

@@ -0,0 +1 @@
his_master: '192.168.200.20'

View File

@@ -0,0 +1 @@
his_master: '192.168.200.10'

View File

@@ -0,0 +1 @@
his_master: '192.168.200.12'

View File

@@ -0,0 +1 @@
his_master: '192.168.200.14'

12
tests/import1.sql Normal file
View File

@@ -0,0 +1,12 @@
CREATE TABLE IF NOT EXISTS `user` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`email` varchar(255) default NULL,
PRIMARY KEY (`id`)
) AUTO_INCREMENT=1;
INSERT IGNORE INTO `user` (`id`,`email`) VALUES (1,"tellus.Suspendisse.sed@gravida.edu"),(2,"Nulla.tempor@nonsapienmolestie.edu"),(3,"a.odio@eu.org"),(4,"adipiscing.ligula.Aenean@augueeu.com"),(5,"id.enim.Curabitur@dictumeleifendnunc.org"),(6,"est.mollis.non@laoreetlectus.net"),(7,"fringilla@mollisduiin.edu"),(8,"amet@lacusQuisquepurus.co.uk"),(9,"elementum.dui@pellentesque.org"),(10,"dictum.eu.placerat@dolorQuisque.com");
INSERT IGNORE INTO `user` (`id`,`email`) VALUES (11,"vitae.dolor@rutrumnon.net"),(12,"semper@mattis.co.uk"),(13,"tincidunt.congue.turpis@placerateget.co.uk"),(14,"ornare.sagittis.felis@vitaesemper.ca"),(15,"luctus@sapien.ca"),(16,"tellus.id.nunc@necluctus.net"),(17,"quis.pede.Praesent@posuereenim.co.uk"),(18,"quis@metusvitaevelit.com"),(19,"in.sodales@velarcu.net"),(20,"et@sagittisplacerat.net");
INSERT IGNORE INTO `user` (`id`,`email`) VALUES (21,"aliquam@atpretium.co.uk"),(22,"cursus@sapienmolestie.edu"),(23,"ornare.Fusce@pede.ca"),(24,"at@estac.co.uk"),(25,"sed@risusodioauctor.ca"),(26,"sit.amet.consectetuer@necorciDonec.com"),(27,"Nulla@infaucibus.co.uk"),(28,"tempus.scelerisque@utlacusNulla.com"),(29,"pellentesque.a@nostraper.com"),(30,"libero.et.tristique@Nunclaoreet.co.uk");
INSERT IGNORE INTO `user` (`id`,`email`) VALUES (31,"dolor.sit.amet@Donecelementum.net"),(32,"ornare@massanonante.ca"),(33,"quam.elementum@semper.net"),(34,"Duis.ac.arcu@Integermollis.com"),(35,"magna.Sed.eu@magnaPraesent.co.uk"),(36,"Mauris.eu.turpis@mattis.ca"),(37,"ornare.facilisis.eget@urna.net"),(38,"Sed.diam.lorem@fringilla.co.uk"),(39,"pellentesque.Sed.dictum@Donec.edu"),(40,"faucibus.Morbi@nuncid.com");
INSERT IGNORE INTO `user` (`id`,`email`) VALUES (41,"ullamcorper@at.co.uk"),(42,"nec.ante.blandit@utcursus.edu"),(43,"diam.vel.arcu@egestasFuscealiquet.com"),(44,"ridiculus@musAeneaneget.com"),(45,"ad@turpisvitaepurus.ca"),(46,"ultrices.posuere.cubilia@purusMaecenas.net"),(47,"luctus@libero.org"),(48,"mi@elitNulla.com"),(49,"elementum@ipsumdolorsit.edu"),(50,"orci@Donec.co.uk");

6
tests/import2.sql Normal file
View File

@@ -0,0 +1,6 @@
INSERT IGNORE INTO `user` (`id`,`email`) VALUES (51,"vulputate.eu.odio@elitdictumeu.net"),(52,"Sed.eu@erosnec.edu"),(53,"magna@interdum.co.uk"),(54,"ornare.libero.at@Proin.net"),(55,"turpis@aneque.org"),(56,"ut.eros.non@Duisrisusodio.com"),(57,"Pellentesque.ultricies.dignissim@malesuada.edu"),(58,"vel.nisl@mifringilla.net"),(59,"dui@laoreet.com"),(60,"vitae@Suspendissedui.net");
INSERT IGNORE INTO `user` (`id`,`email`) VALUES (61,"turpis@Curabituregestasnunc.co.uk"),(62,"arcu@enim.co.uk"),(63,"consectetuer.rhoncus.Nullam@dolordolortempus.co.uk"),(64,"sem@felisadipiscingfringilla.net"),(65,"aliquet.metus.urna@a.net"),(66,"Fusce.fermentum.fermentum@variusNam.com"),(67,"dolor@velnisl.ca"),(68,"et.netus@Duisrisusodio.edu"),(69,"malesuada@purus.edu"),(70,"gravida.sagittis@pulvinararcuet.ca");
INSERT IGNORE INTO `user` (`id`,`email`) VALUES (71,"et.eros.Proin@Cras.co.uk"),(72,"eleifend.nunc.risus@metuseu.edu"),(73,"pede.Nunc@Phasellusnulla.net"),(74,"vitae.sodales.at@ipsumdolor.edu"),(75,"nunc.sed.pede@aliquetlobortisnisi.co.uk"),(76,"consectetuer@nonenim.ca"),(77,"ultrices@tinciduntvehicula.co.uk"),(78,"Nullam.enim.Sed@Morbiaccumsan.com"),(79,"auctor@Phasellus.net"),(80,"enim.Etiam@interdum.com");
INSERT IGNORE INTO `user` (`id`,`email`) VALUES (81,"sapien.Cras.dolor@consectetuer.com"),(82,"malesuada.fames.ac@feugiattelluslorem.edu"),(83,"risus@vestibulum.co.uk"),(84,"Nunc@Duisgravida.ca"),(85,"ornare.egestas@sitamet.edu"),(86,"Proin.ultrices@senectus.ca"),(87,"ligula@magna.edu"),(88,"orci.tincidunt.adipiscing@sed.com"),(89,"et@venenatis.edu"),(90,"leo.Cras.vehicula@eteuismod.org");
INSERT IGNORE INTO `user` (`id`,`email`) VALUES (91,"consequat.auctor.nunc@utsemNulla.net"),(92,"nec.leo@orci.com"),(93,"Nulla@atvelit.edu"),(94,"tempor.augue.ac@eleifend.edu"),(95,"fermentum.risus.at@penatibusetmagnis.edu"),(96,"id.erat.Etiam@porttitortellus.edu"),(97,"amet.metus.Aliquam@mus.co.uk"),(98,"dolor.tempus.non@risus.org"),(99,"vulputate.posuere.vulputate@purus.ca"),(100,"inceptos@pede.edu");

View File

@@ -1,29 +1,39 @@
---
- hosts: upstream_mariadb
vars:
mysql_origin: 'upstream'
mysql_vendor: 'mariadb'
roles:
- ../../
- hosts: all
pre_tasks:
- local_action: shell ssh-add $HOME/.vagrant.d/insecure_private_key
become: no
changed_when: false
tasks:
- apt: pkg={{ item }} state=present update_cache=yes cache_valid_time=3600
with_items:
- strace
- vim
- get_url: >
url=https://raw.githubusercontent.com/HanXHX/ansible-debian-bootstrap/master/files/bashrc
dest=/root/.bashrc
force=yes
- hosts: debian_mariadb
vars:
mysql_origin: 'default'
mysql_vendor: 'mariadb'
- hosts: master
roles:
- ../../
tasks:
- copy: src=import1.sql dest=/tmp/import1.sql
register: c
- mysql_db: name={{ item }} state=import target=/tmp/import1.sql
with_items: ['testrepl', 'norepl']
when: c.changed
- hosts: debian_mysql
vars:
mysql_origin: 'default'
mysql_vendor: 'mysql'
- hosts: slave
roles:
- ../../
tasks:
- copy: src=import2.sql dest=/tmp/import2.sql
delegate_to: "{{ his_master }}"
register: c
- mysql_db: name={{ item }} state=import target=/tmp/import2.sql
with_items: ['testrepl', 'norepl']
delegate_to: "{{ his_master }}"
when: c.changed
- hosts: upstream_percona
vars:
mysql_origin: 'upstream'
mysql_vendor: 'percona'
roles:
- ../../