mirror of
https://github.com/HanXHX/ansible-mysql.git
synced 2026-04-09 13:42:10 +07:00
Replication OK (transfert from another git repo)
This commit is contained in:
49
tests/README.md
Normal file
49
tests/README.md
Normal 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
64
tests/gen.pl
Executable 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
1
tests/group_vars/default
Normal file
@@ -0,0 +1 @@
|
||||
mysql_origin: 'default'
|
||||
1
tests/group_vars/mariadb
Normal file
1
tests/group_vars/mariadb
Normal file
@@ -0,0 +1 @@
|
||||
mysql_vendor: 'mariadb'
|
||||
21
tests/group_vars/master
Normal file
21
tests/group_vars/master
Normal 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
1
tests/group_vars/mysql
Normal file
@@ -0,0 +1 @@
|
||||
mysql_vendor: 'mysql'
|
||||
1
tests/group_vars/percona
Normal file
1
tests/group_vars/percona
Normal file
@@ -0,0 +1 @@
|
||||
mysql_vendor: 'percona'
|
||||
9
tests/group_vars/slave
Normal file
9
tests/group_vars/slave
Normal 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 :
|
||||
1
tests/group_vars/upstream
Normal file
1
tests/group_vars/upstream
Normal file
@@ -0,0 +1 @@
|
||||
mysql_origin: 'upstream'
|
||||
1
tests/host_vars/jessie-default-mariadb-slave
Normal file
1
tests/host_vars/jessie-default-mariadb-slave
Normal file
@@ -0,0 +1 @@
|
||||
his_master: '192.168.200.22'
|
||||
1
tests/host_vars/jessie-default-mysql-slave
Normal file
1
tests/host_vars/jessie-default-mysql-slave
Normal file
@@ -0,0 +1 @@
|
||||
his_master: '192.168.200.16'
|
||||
1
tests/host_vars/jessie-upstream-mariadb-slave
Normal file
1
tests/host_vars/jessie-upstream-mariadb-slave
Normal file
@@ -0,0 +1 @@
|
||||
his_master: '192.168.200.18'
|
||||
1
tests/host_vars/jessie-upstream-percona-slave
Normal file
1
tests/host_vars/jessie-upstream-percona-slave
Normal file
@@ -0,0 +1 @@
|
||||
his_master: '192.168.200.20'
|
||||
1
tests/host_vars/wheezy-default-mysql-slave
Normal file
1
tests/host_vars/wheezy-default-mysql-slave
Normal file
@@ -0,0 +1 @@
|
||||
his_master: '192.168.200.10'
|
||||
1
tests/host_vars/wheezy-upstream-mariadb-slave
Normal file
1
tests/host_vars/wheezy-upstream-mariadb-slave
Normal file
@@ -0,0 +1 @@
|
||||
his_master: '192.168.200.12'
|
||||
1
tests/host_vars/wheezy-upstream-percona-slave
Normal file
1
tests/host_vars/wheezy-upstream-percona-slave
Normal file
@@ -0,0 +1 @@
|
||||
his_master: '192.168.200.14'
|
||||
12
tests/import1.sql
Normal file
12
tests/import1.sql
Normal 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
6
tests/import2.sql
Normal 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");
|
||||
|
||||
@@ -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:
|
||||
- ../../
|
||||
|
||||
Reference in New Issue
Block a user