workshop tecnico: mysql group replication in action day milano... · mysql group replication in...

17
Partita IVA e Codice Fiscale: 12938200156 C.C.I.A.A. Milano n.1599095 Registro Imprese 12938200156 Capitale Sociale € 2.418.433,00 i.v. Sede Legale e Unità Operativa Via Alfredo Campanini, 6 20124 Milano Tel: +39 02.66.732.1 – Fax: +39 02.66.732.300 Unità Operativa Via Cristoforo Colombo, 163 00147 Roma Tel: +39 06.9826.9600 – Fax: +39 06.9826.9680 Mirko Conte, Senior Architect Oracle MySQL Day Milano, 12 Ottobre 2017 Workshop tecnico: MySQL Group Replication in action

Upload: others

Post on 20-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

Partita IVA e Codice Fiscale: 12938200156C.C.I.A.A. Milano n.1599095Registro Imprese 12938200156Capitale Sociale € 2.418.433,00 i.v.

Sede Legale e Unità Operativa

Via Alfredo Campanini, 620124 MilanoTel: +39 02.66.732.1 – Fax: +39 02.66.732.300

Unità Operativa

Via Cristoforo Colombo, 16300147 RomaTel: +39 06.9826.9600 – Fax: +39 06.9826.9680

Mirko Conte, Senior ArchitectOracle MySQL Day Milano, 12 Ottobre 2017

Workshop tecnico:MySQL Group Replication in action

Page 2: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

2

Agenda

Dall'istanza singola al cluster: esplorazione di alcune tecniche di HA conle repliche, standard e GR a confronto.

● Ambiente: MySQL + applicazione demo

● Creiamo istanze slave con repliche standard e gestiamo il failover

● Trasformiamo le repliche in Group Replication

● Introduciamo InnoDB Cluster

Page 3: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

3

Software: MySQL + applicazione

● MySQL 5.7.19

● MySQL Router 2.1.4

● MySQL Shell 1.0.10

● MySQL Enterprise Backup 4.1.0

● MySQL Utilities 1.6.5

● Apache 2.4.6 + PHP 5.4.16 (Oracle Linux 7.4)

● Wordpress 4.8.2

Page 4: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

4

Configurazioni: MySQL + applicazione

Configurazioni

● /etc/my.cnf

● /var/www/html/wp-config.php

Page 5: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

5

Architettura repliche standard

M S

S

R

mgr1 mgr2

mgr3

R

M

S

X

App + Router

DBmgr1 mgr2

mgr3

mgr4 mgr4

Page 6: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

6

Creiamo istanze slave con repliche standard (1/2)

● my.cnf

report-host=host

report-port=port

server-id=id

log-binbinlog-format=ROWenforce-gtid-consistency=ONgtid-mode=ONmaster-info-repository=TABLErelay-log-info-repository=TABLElog-slave-updates=ON

Page 7: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

7

Creiamo istanze slave con repliche standard (2/2)

● Provisioning dati con MEB:

mysqlbackup --skip-binlog --backup-dir=path backup-and-apply-log

mysqlbackup --backup-dir=path copy-back

(implicito --login-path=client)

meta/backup_gtid_executed.sql

● Read-only

● Configurazione replica:

mysqlreplicate --master=conn-info --slave=conn-info --rpl-user=user:pwd

Page 8: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

8

Configuriamo router e mysqlfailover

● Configurazione router: /etc/mysqlrouter/mysqlrouter.conf

[routing:failover]bind_address = 127.0.0.1:6446destinations = host1:port,host2:port

mode = read-write

● mysqlfailover

mysqlfailover --master=conn-info --slaves=conn-info,conn-info,... --candidates=conn-info,... --daemon=start --failover-mode=elect--log=/var/log/mysqlfailover.log --pidfile=/var/run/mysqlfailover --exec-post-failover=script

Page 9: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

9

Failover

● Monitoraggio failover:

/var/log/mysqlfailover.log

/var/log/mysqlrouter/mysqlrouter.log

Page 10: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

10

Post failover: ricostruire la replica

● Stop mysqlfailover:

pkill -9 mysqlfailoverrm -f /var/run/mysqlfailoverSET sql_log_bin=0; DROP TABLE IF EXISTS mysql.failover_console;

● Tentiamo il riallineamento del nodo principale tramite replica dal master:

mysqlreplicate --master=conn-info --slave=conn-info –rpl-user=user:pwd

● Invertiamo i ruoli con mysqlrpladmin, in caso di “errant transactions” ilnodo dovrà essere allineato con backup e restore:

mysqlrpladmin --master=conn-info –slaves=conn-info,conn-info,... --new-master=conn-info --demote-master switchover

Page 11: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

11

Architettura Group Replication

R RApp + Router

DB

Xmgr1 mgr2 mgr3

mgr4

mgr1 mgr2 mgr3

mgr4

Page 12: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

12

Requisiti della Group Replication

Requisiti e limitazioni:

● Richiesto storage engine InnoDB

● Richieste primary keys esplicite

● Network Performance e Ipv4

● Binary log formato ROW (non supportato checksum)

● Non adatto a very large transactions

● Con multi-primary: gap locks, table locks, named locks, DDL + DML concorrenti,foreign keys con cascading constraints, possibilità di abort al commit peroptimistic execution

Page 13: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

13

Convertiamo a Group Replication (1/2)

● my.cnf

binlog_checksum=NONEtransaction_write_set_extraction=XXHASH64disabled_storage_engines=MyISAM,BLACKHOLE,FEDERATED,CSV,ARCHIVEloose-group_replication_group_name="uuid"loose-group_replication_start_on_boot=OFFloose-group_replication_local_address="host:port"loose-group_replication_group_seeds="host:port,host:port,host:port"loose-group_replication_bootstrap_group=OFFloose-group_replication_single_primary_mode=OFF

● Nota: opzione disabled_storage_engines unica non dinamica, nonnecessaria

Page 14: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

14

Convertiamo alla Group Replication (2/2)

● Configuriamo i nodi:

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

CREATE USER user IDENTIFIED BY 'password';GRANT REPLICATION SLAVE ON *.* TO user;CHANGE MASTER TO MASTER_USER='user', MASTER_PASSWORD='password' FORCHANNEL 'group_replication_recovery';

● Attiviamo la GR sul primo nodo:

SET GLOBAL group_replication_bootstrap_group=ON;START GROUP_REPLICATION;SET GLOBAL group_replication_bootstrap_group=OFF;

● Altri nodi: START GROUP_REPLICATION;

Page 15: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

15

Configuriamo router

● /etc/mysqlrouter/mysqlrouter.conf

[routing:failover]bind_address = 127.0.0.1:6446destinations = mgr1,mgr2,mgr3mode = read-write

Page 16: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

16

Convertiamo a InnoDB Cluster

● Convertiamo GR a InnoDB Cluster:

mysqlsh --uri root:password@host:port --no-wizardvar cluster = dba.createCluster('clustername', {adoptFromGR: true})

mysqlrouter --bootstrap root:password@host --user=mysqlrouter –-force

● Passiamo da replica standard a InnoDB Cluster:

dba.configureLocalInstance('root@localhost:3306', {password:'password',mycnfPath:'/etc/my.cnf'})

var cluster=dba.createCluster('clustername')cluster.addInstance('root:password@host:port')

mysqlrouter --bootstrap root:password@host --user=mysqlrouter –-force

Page 17: Workshop tecnico: MySQL Group Replication in action Day Milano... · MySQL Group Replication in action. 2 Agenda Dall'istanza singola al cluster: esplorazione di alcune tecniche di

Sede Legale e Unità Operativa

Via Alfredo Campanini, 620124 MilanoTel: +39 02.66.732.1 – Fax: +39 02.66.732.300

Unità Operativa

Via Cristoforo Colombo, 16300147 RomaTel: +39 06.9826.9600 – Fax: +39 06.9826.9680

Grazie per l’attenzione!