SlideShare a Scribd company logo
1 of 50
Galera

Cluster

Schema Upgrades
Seppo Jaakola
Codership
Agenda
●

Schema Upgrades in Synchronous Cluster

●

DDL Classification

●

Schema Backwards Compatibility

●

Alternatives for Schema Upgrades
●
●
●
●
●

●

TOI
RSU / desync
wsrep_desync / wsrep_on method
Dropping Node for DDL
pt-online-schema-change

Summary
www.codership.com
2
Schema Upgrades
Applications have evolution, and there will be needs to
change database schema in new application revisions
With 24/7 online requirements, the schema upgrade must
happen while the system is online
Synchronous database cluster, requires that all active
nodes must have same data
–

Note that schema may differ, as long as data content is logically same

We need to figure out way(s) to roll schema upgrades in
online cluster with minimal disruption for the service

www.codership.com
3
What is DDL?
SQL statements can be classified in several classes:
DML Data Manipulation Language
–

Transactional data manipulations

–

SELECT, INSERT, UPDATE...

DDL Data Definition Language
–

CREATE..., DROP..., ALTER...

DCL Data Control Language
–

GRANT, REVOKE

TCL Transaction Control Language
…
http://en.wikibooks.org/wiki/MySQL/Language/Definitions:_what_are_DDL,_DML_and_DQL%3F
www.codership.com
4
DML vs DDL
But the bottom line is division between transactional and nontransactional statements:

Transactional SQL
–

All DML on InnoDB

–

NON Transactional SQL

Can be rolled back

●

Not possible to rollback

–

●

DDL, DCL..., DML on non
transactional SE

–

●

–

Requires up-front locking

Galera uses optimistic concurrency control, and depends on possibility to rollback a
conflicting operation
Only transactional SQL can be replicated through Galera transactional replication
For others (DDL, DCL...), we either have to skip replication or use up-front locking
www.codership.com
5
DML vs DDL
Notes on some DDL:
TRUNCATE
–

is DDL!

–

Is fast to execute, but nevertheless has some impact

OPTIMIZE, REPAIR, ANALYZE
–

Table admin commands are now replicated

CREATE / DROP INDEX
–

Hold MDL on affected table, and can stall the
replication

www.codership.com
6
Schema Backward Compatibility
Backward Compatibility

App v1

MySQL
Schema v1

App v1

Schema
Upgrade

MySQL
Schema v2

App
Upgrade

App v2

MySQL
Schema v2

Old application version
must be able to use the
new schema
www.codership.com
9
Backward Compatibility

App v1

MySQL
Schema v1

App
Upgrade

App v2

MySQL
Schema v1

App v2

Schema
Upgrade

MySQL
Schema v2

New application version
must be able to use the
old schema
www.codership.com
10
Backwards Compatibility
New/old application should be able to use both old and
new schema
Application should be backwards compatible
ROW replication between old and new schema should be
possible
Schema change should be backwards compatible

www.codership.com
11
App Backwards Compatibility
New/old application should be able to use both old and
new schema
–

New application can have compatibility mode to detect the version of
underlying database

–

If old app cannot use new schema, the old app must connect to one
node only, which will be the last to upgrade

Dropping tables or columns can be a problem
–

But drops can be done delayed: e.g. in v2 -> v3 upgrade, obsolete v1
elements can be dropped as neither v2 or v3 app will use them any
more

www.codership.com
12
ROW Replication Compatibility
MySQL guarantees ROW replication event compatibility
with some limitations
Newer MySQL versions tolerate more variation between
source and target tables, check out this page for latest
status:
http://dev.mysql.com/doc/refman/5.6/en/replication-features-differing-tables.html
●
●

Source and target can have different number of columns
But columns must be in same order

●

New columns in the end, and must have default values

●

Some data type conversions are also supported
www.codership.com
13
ROW Replication Compatibility

Insert into table-A(col-a,col-b) values (5,7)

col-a

col-b

col-a

Table A

col-b

col-c

Table A

www.codership.com
14
ROW Replication Compatibility

Insert into table-A(col-a,col-b) values (5,7)

col-a

col-b

col-a

col-b

col-c

5

7

5

7

def

Replication

Table A

Table A

www.codership.com
15
STATEMENT Replication
In STATEMENT format, schema compatibility is not an issue
Galera does not currently support STATEMENT replication,
but:
–

Enabling STATEMENT replication is minor task
Consistency is at risk
● Parallel applying must be limited (OFF, Database or Table level)
● STATEMENT replication, in general, is phasing out
Supporting STATEMENT replication for schema upgrades, is one
potential extension we are looking for
●

–

www.codership.com
16
Schema Upgrades in Galera Cluster
Schema Upgrades in Galera
Galera Cluster has two inbuilt methods for DDL replication:
–

TOI – Total Order Isolation

–

RSU – Rolling Schema Upgrade

The method of choice is declared by variable:
wsrep_osu_method = TOI | RSU

Pt-online-schema-change is valid tool for upgrades, these
and other DDL replication alternatives are discussed in
following chapters.

www.codership.com
18
Total Order Isolation
TOI
Total oder Isolation (TOI) is the default DDL replication
method
●

●

●

●

wsrep_osu_method = TOI
“master node” detects DDL at parsing time and sends out replication event
for the SQL statement before even starting the DDL processing
DDL replication happens in STATEMENT format
Every node in the cluster will process the replicated DDL at the same “slot”
in the cluster transaction stream (Total Order)

www.codership.com
20
TOI Replication

ALTER TABLE t1...

Parser
Replication
MySQL

MySQL

Execution

a

Galera
Replication

WS

Seqno
STATEMENT event

G a l e r a R e p l i c a t io n
www.codership.com
21
TOI Replication

ALTER TABLE t1...

Parser

apply

continue

Parser

MySQL

MySQL

Execution

Execution

a

Galera
Replication

WS
Seqno slot
reached
www.codership.com
22
TOI Replication
Pros
–

Strict consistency, all nodes will get same change

–

No worries about schema backwards compatibility

Cons
–

Strict commit order will make every transaction to wait until DDL is
over

Usable, when:
–

DDL is short term

–

Schema change will not be backwards compatible

–

And/or there is maintenance window

Some future work in road map:
–

TOI replication commit order can be relaxed

–

We are working on optimization based on this
www.codership.com
23
Rolling Schema Upgrade
RSU

➢

Rolling Schema Upgrade
wsrep_osu_method=RSU

➢

Will desynchronize the node from replication for the
duration of following DDL command

➢

Incoming replication is buffered

➢

Nothing will be replicated out of the node

➢

When DDL is over, the node will automatically join back
in cluster, and catch up missed transactions from the
buffer

www.codership.com
25
RSU
SET GLOBAL
wsrep_osu_method=RSU
ALTER TABLE t1...

MySQL

MySQL

MySQL

G a l e r a R e p l i c a t io n

a

Galera Replication
www.codership.com
26
RSU

ALTER TABLE

MySQL
MySQL

WS

a

MySQL

WS

Slave queue

Galera Replication
www.codership.com
27
RSU

ALTER TABLE t1...

MySQL

WS

a

MySQL

MySQL

WS

Slave queue

Galera Replication
www.codership.com
28
RSU
Pros
–

DDL will not slow down cluster

–

Automatic re-sync after DDL is over

Cons
–
–

Schema change has to be backwards compatible

–

a

Has global effect, all sessions will be RSU'ed
Only one RSU operation at a time

–

Rolling over cluster is manual operation

www.codership.com
29
wsrep_desync
wsrep_desync
Node can be set to omit flow control by:
mysql> SET GLOBAL wsrep_desync=ON;

A session can be declared to not replicate anything by:
mysql> SET wsrep_on=OFF;
●

●

Running DDL in such a session, will result in local
schema change, and processing of the DDL will not
hold back cluster.
However, all cluster transactions will be replicated to
the node, and if there are conflicts, the DDL will be
aborted.
wsrep_desync+wsrep_on method is good only for
non-confliction operations
www.codership.com
31
wsrep_desync+wsrep_on
SET GLOBAL wsrep_desync=ON;
SET wsrep_on=OFF;
ALTER TABLE t1...

t1

t2

tn

MySQL

a

WS

WS

Slave queue

Galera Replication
www.codership.com
32
wsrep_desync
We are currently working on making better use of
desync mode. The goal is to protect local desynced
transactions from replication aborts.
This way, the DDL will succeed even if there are
conflicts with the cluster. However, cluster replication
will pause at first such conflict and wait until DDL is
complete.
But, this will be future extension, and available in some
of following 3.* release.

www.codership.com
33
Drop a Node for DDL
Dropping Node for DDL
One way to do “manual RSU”, is to drop a node from
cluster and run DDL on the stand-alone node.
Joining the node back must happen through IST, as we
don't want SST to bring back the old schema.
Make sure to protect the node from any production
connections! Load balancers should be configured first to
isolate the node from unwanted connections.
Adjust your gcache size big enough to allow IST after the
DDL is over.

www.codership.com
35
Dropping Node for DDL

Load Balancer

1. configure LB
2. Drop node, e.g.
set global wsrep_cluster_address=gcomm://

MySQL

MySQL

Galera Replication
www.codership.com
36
Dropping Node for DDL

Load Balancer

3. ALTER TABLE t1...

MySQL

MySQL

Galera Replication
www.codership.com
37
Dropping Node for DDL

Load Balancer

4. Join back
set wsrep_cluster_address...

WS

MySQL

WS

IST

MySQL

Galera Replication
www.codership.com
38
Dropping Node for DDL

Load Balancer

5. configure LB

MySQL

MySQL

Galera Replication
www.codership.com
39
pt-online-schema-change
pt-online-schema-change
Tool in Percona Toolkit to run non blocking schema
changes
http://www.percona.com/doc/percona-toolkit/2.2/pt-online-schema-change.html
1. Creates a shadow copy of target table

2. Installs triggers in source table to forward updates to target table
3. Copies source table data in small chunks to target table
4. Renames target table to replace the source table

Pt-osc does not replicate schema changes, but makes it
possible to change schema without interfering with
replication
However, pt-osc requires TOI to be enabled, and TOI
replication will propagate the changes to whole cluster
www.codership.com
41
pt-online-schema-change

updates

t1-new
t1

CREATE similar table
and ALTER

a
www.codership.com
42
pt-online-schema-change

updates

t1-new
t1

a

Install trigger to forward updates
to new table
www.codership.com
43
pt-online-schema-change

updates

t1-new
t1

Copy data in
chunks

a
www.codership.com
44
pt-online-schema-change

updates

t1

t1-new

Copy data in
chunks

a
www.codership.com
45
pt-online-schema-change

updates

t1

t1-old

Rename
tables

a
www.codership.com
46
pt-online-schema-change

updates

t1

Drop old table

a
www.codership.com
47
pt-online-schema-change
Some Caveats:
●

TOI requirement
–
–

●

Pt-osc changes will be run against whole cluster with one go
Could be relaxed, imo

Triggers not supported
–

●

Pt-osc installs new triggers in source table and does not allow any
other triggers to exists in the table

Foreign key support
–

a

Two methods for dealing with FKs

–

Rebuilding child table FK constraint may be needed

–

FK constraint name will be different

www.codership.com
48
Summary
Codership
Schema upgrades require careful planning
➢

Find out backwards compatibility both from application and from ROW
replication perspective

➢

Plan your upgrade process

➢

Rehearse with test cluster

Instant methods:
➢

TOI replication, pt-osc

➢

ROW replication backwards compatibility is not an issue

Rolling methods
➢

RSU, wsrep_desync/wsrep_on, node dropping

➢

Schema backwards compatibility required

www.codership.com
50
Questions?

Thank you for listening!
Happy Clustering :-)

More Related Content

What's hot

My First 100 days with an Exadata (PPT)
My First 100 days with an Exadata (PPT)My First 100 days with an Exadata (PPT)
My First 100 days with an Exadata (PPT)Gustavo Rene Antunez
 
Oracle MAA (Maximum Availability Architecture) 18c - An Overview
Oracle MAA (Maximum Availability Architecture) 18c - An OverviewOracle MAA (Maximum Availability Architecture) 18c - An Overview
Oracle MAA (Maximum Availability Architecture) 18c - An OverviewMarkus Michalewicz
 
How Zalando runs Kubernetes clusters at scale on AWS - AWS re:Invent
How Zalando runs Kubernetes clusters at scale on AWS - AWS re:InventHow Zalando runs Kubernetes clusters at scale on AWS - AWS re:Invent
How Zalando runs Kubernetes clusters at scale on AWS - AWS re:InventHenning Jacobs
 
Oracle Extended Clusters for Oracle RAC
Oracle Extended Clusters for Oracle RACOracle Extended Clusters for Oracle RAC
Oracle Extended Clusters for Oracle RACMarkus Michalewicz
 
Fast Start Failover DataGuard
Fast Start Failover DataGuardFast Start Failover DataGuard
Fast Start Failover DataGuardBorsaniya Vaibhav
 
Ninja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for BeginnersNinja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for BeginnersChang W. Doh
 
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLOlivier DASINI
 
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best PracticesMySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best PracticesKenny Gryp
 
Kernel debug log and console on openSUSE
Kernel debug log and console on openSUSEKernel debug log and console on openSUSE
Kernel debug log and console on openSUSESUSE Labs Taipei
 
Understand oracle real application cluster
Understand oracle real application clusterUnderstand oracle real application cluster
Understand oracle real application clusterSatishbabu Gunukula
 
Oracle GoldenGate 18c - REST API Examples
Oracle GoldenGate 18c - REST API ExamplesOracle GoldenGate 18c - REST API Examples
Oracle GoldenGate 18c - REST API ExamplesBobby Curtis
 
Oracle 12c PDB insights
Oracle 12c PDB insightsOracle 12c PDB insights
Oracle 12c PDB insightsKirill Loifman
 
ProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdf
ProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdfProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdf
ProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdfJesmar Cannao'
 
Advanced RAC troubleshooting: Network
Advanced RAC troubleshooting: NetworkAdvanced RAC troubleshooting: Network
Advanced RAC troubleshooting: NetworkRiyaj Shamsudeen
 
patroni-based citrus high availability environment deployment
patroni-based citrus high availability environment deploymentpatroni-based citrus high availability environment deployment
patroni-based citrus high availability environment deploymenthyeongchae lee
 
FOSDEM 2022 MySQL Devroom: MySQL 8.0 - Logical Backups, Snapshots and Point-...
FOSDEM 2022 MySQL Devroom:  MySQL 8.0 - Logical Backups, Snapshots and Point-...FOSDEM 2022 MySQL Devroom:  MySQL 8.0 - Logical Backups, Snapshots and Point-...
FOSDEM 2022 MySQL Devroom: MySQL 8.0 - Logical Backups, Snapshots and Point-...Frederic Descamps
 
Galera cluster for high availability
Galera cluster for high availability Galera cluster for high availability
Galera cluster for high availability Mydbops
 
Understanding Oracle RAC 12c Internals OOW13 [CON8806]
Understanding Oracle RAC 12c Internals OOW13 [CON8806]Understanding Oracle RAC 12c Internals OOW13 [CON8806]
Understanding Oracle RAC 12c Internals OOW13 [CON8806]Markus Michalewicz
 

What's hot (20)

My First 100 days with an Exadata (PPT)
My First 100 days with an Exadata (PPT)My First 100 days with an Exadata (PPT)
My First 100 days with an Exadata (PPT)
 
Oracle MAA (Maximum Availability Architecture) 18c - An Overview
Oracle MAA (Maximum Availability Architecture) 18c - An OverviewOracle MAA (Maximum Availability Architecture) 18c - An Overview
Oracle MAA (Maximum Availability Architecture) 18c - An Overview
 
How Zalando runs Kubernetes clusters at scale on AWS - AWS re:Invent
How Zalando runs Kubernetes clusters at scale on AWS - AWS re:InventHow Zalando runs Kubernetes clusters at scale on AWS - AWS re:Invent
How Zalando runs Kubernetes clusters at scale on AWS - AWS re:Invent
 
Oracle Extended Clusters for Oracle RAC
Oracle Extended Clusters for Oracle RACOracle Extended Clusters for Oracle RAC
Oracle Extended Clusters for Oracle RAC
 
Fast Start Failover DataGuard
Fast Start Failover DataGuardFast Start Failover DataGuard
Fast Start Failover DataGuard
 
Ninja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for BeginnersNinja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for Beginners
 
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
 
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best PracticesMySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
 
Kernel debug log and console on openSUSE
Kernel debug log and console on openSUSEKernel debug log and console on openSUSE
Kernel debug log and console on openSUSE
 
Understand oracle real application cluster
Understand oracle real application clusterUnderstand oracle real application cluster
Understand oracle real application cluster
 
Oracle GoldenGate 18c - REST API Examples
Oracle GoldenGate 18c - REST API ExamplesOracle GoldenGate 18c - REST API Examples
Oracle GoldenGate 18c - REST API Examples
 
Oracle 12c PDB insights
Oracle 12c PDB insightsOracle 12c PDB insights
Oracle 12c PDB insights
 
MySQL Shell for DBAs
MySQL Shell for DBAsMySQL Shell for DBAs
MySQL Shell for DBAs
 
ProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdf
ProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdfProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdf
ProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdf
 
Advanced RAC troubleshooting: Network
Advanced RAC troubleshooting: NetworkAdvanced RAC troubleshooting: Network
Advanced RAC troubleshooting: Network
 
patroni-based citrus high availability environment deployment
patroni-based citrus high availability environment deploymentpatroni-based citrus high availability environment deployment
patroni-based citrus high availability environment deployment
 
FOSDEM 2022 MySQL Devroom: MySQL 8.0 - Logical Backups, Snapshots and Point-...
FOSDEM 2022 MySQL Devroom:  MySQL 8.0 - Logical Backups, Snapshots and Point-...FOSDEM 2022 MySQL Devroom:  MySQL 8.0 - Logical Backups, Snapshots and Point-...
FOSDEM 2022 MySQL Devroom: MySQL 8.0 - Logical Backups, Snapshots and Point-...
 
Galera Cluster DDL and Schema Upgrades 220217
Galera Cluster DDL and Schema Upgrades 220217Galera Cluster DDL and Schema Upgrades 220217
Galera Cluster DDL and Schema Upgrades 220217
 
Galera cluster for high availability
Galera cluster for high availability Galera cluster for high availability
Galera cluster for high availability
 
Understanding Oracle RAC 12c Internals OOW13 [CON8806]
Understanding Oracle RAC 12c Internals OOW13 [CON8806]Understanding Oracle RAC 12c Internals OOW13 [CON8806]
Understanding Oracle RAC 12c Internals OOW13 [CON8806]
 

Similar to Zero Downtime Schema Changes in Galera Cluster

M|18 Battle of the Online Schema Change Methods
M|18 Battle of the Online Schema Change MethodsM|18 Battle of the Online Schema Change Methods
M|18 Battle of the Online Schema Change MethodsMariaDB plc
 
Extreme Availability using Oracle 12c Features: Your very last system shutdown?
Extreme Availability using Oracle 12c Features: Your very last system shutdown?Extreme Availability using Oracle 12c Features: Your very last system shutdown?
Extreme Availability using Oracle 12c Features: Your very last system shutdown?Toronto-Oracle-Users-Group
 
Oracle Database 12c "New features"
Oracle Database 12c "New features" Oracle Database 12c "New features"
Oracle Database 12c "New features" Anar Godjaev
 
The Apache Cassandra ecosystem
The Apache Cassandra ecosystemThe Apache Cassandra ecosystem
The Apache Cassandra ecosystemAlex Thompson
 
High-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQLHigh-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQLFromDual GmbH
 
MySQL Day Roma - MySQL Shell and Visual Studio Code Extension
MySQL Day Roma - MySQL Shell and Visual Studio Code ExtensionMySQL Day Roma - MySQL Shell and Visual Studio Code Extension
MySQL Day Roma - MySQL Shell and Visual Studio Code ExtensionFrederic Descamps
 
NoCOUG_201411_Patel_Managing_a_Large_OLTP_Database
NoCOUG_201411_Patel_Managing_a_Large_OLTP_DatabaseNoCOUG_201411_Patel_Managing_a_Large_OLTP_Database
NoCOUG_201411_Patel_Managing_a_Large_OLTP_DatabaseParesh Patel
 
Confoo 2021 -- MySQL New Features
Confoo 2021 -- MySQL New FeaturesConfoo 2021 -- MySQL New Features
Confoo 2021 -- MySQL New FeaturesDave Stokes
 
[SSA] 03.newsql database (2014.02.05)
[SSA] 03.newsql database (2014.02.05)[SSA] 03.newsql database (2014.02.05)
[SSA] 03.newsql database (2014.02.05)Steve Min
 
Midwest PHP Presentation - New MSQL Features
Midwest PHP Presentation - New MSQL FeaturesMidwest PHP Presentation - New MSQL Features
Midwest PHP Presentation - New MSQL FeaturesDave Stokes
 
Production Grade Kubernetes Applications
Production Grade Kubernetes ApplicationsProduction Grade Kubernetes Applications
Production Grade Kubernetes ApplicationsNarayanan Krishnamurthy
 
How to Handle your Kubernetes Upgrades
How to Handle your Kubernetes UpgradesHow to Handle your Kubernetes Upgrades
How to Handle your Kubernetes UpgradesCloudOps2005
 
Become a MySQL DBA - Webinars - Schema Changes for MySQL Replication & Galera...
Become a MySQL DBA - Webinars - Schema Changes for MySQL Replication & Galera...Become a MySQL DBA - Webinars - Schema Changes for MySQL Replication & Galera...
Become a MySQL DBA - Webinars - Schema Changes for MySQL Replication & Galera...Severalnines
 
PoC: Using a Group Communication System to improve MySQL Replication HA
PoC: Using a Group Communication System to improve MySQL Replication HAPoC: Using a Group Communication System to improve MySQL Replication HA
PoC: Using a Group Communication System to improve MySQL Replication HAUlf Wendel
 
Pg chameleon, mysql to postgresql replica made easy
Pg chameleon, mysql to postgresql replica made easyPg chameleon, mysql to postgresql replica made easy
Pg chameleon, mysql to postgresql replica made easyFederico Campoli
 
Power-Efficient Programming Using Qualcomm Multicore Asynchronous Runtime Env...
Power-Efficient Programming Using Qualcomm Multicore Asynchronous Runtime Env...Power-Efficient Programming Using Qualcomm Multicore Asynchronous Runtime Env...
Power-Efficient Programming Using Qualcomm Multicore Asynchronous Runtime Env...Qualcomm Developer Network
 
CDC patterns in Apache Kafka®
CDC patterns in Apache Kafka®CDC patterns in Apache Kafka®
CDC patterns in Apache Kafka®confluent
 

Similar to Zero Downtime Schema Changes in Galera Cluster (20)

M|18 Battle of the Online Schema Change Methods
M|18 Battle of the Online Schema Change MethodsM|18 Battle of the Online Schema Change Methods
M|18 Battle of the Online Schema Change Methods
 
Extreme Availability using Oracle 12c Features: Your very last system shutdown?
Extreme Availability using Oracle 12c Features: Your very last system shutdown?Extreme Availability using Oracle 12c Features: Your very last system shutdown?
Extreme Availability using Oracle 12c Features: Your very last system shutdown?
 
Oracle Database 12c "New features"
Oracle Database 12c "New features" Oracle Database 12c "New features"
Oracle Database 12c "New features"
 
The Apache Cassandra ecosystem
The Apache Cassandra ecosystemThe Apache Cassandra ecosystem
The Apache Cassandra ecosystem
 
High-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQLHigh-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQL
 
01 oracle architecture
01 oracle architecture01 oracle architecture
01 oracle architecture
 
MySQL Day Roma - MySQL Shell and Visual Studio Code Extension
MySQL Day Roma - MySQL Shell and Visual Studio Code ExtensionMySQL Day Roma - MySQL Shell and Visual Studio Code Extension
MySQL Day Roma - MySQL Shell and Visual Studio Code Extension
 
NoCOUG_201411_Patel_Managing_a_Large_OLTP_Database
NoCOUG_201411_Patel_Managing_a_Large_OLTP_DatabaseNoCOUG_201411_Patel_Managing_a_Large_OLTP_Database
NoCOUG_201411_Patel_Managing_a_Large_OLTP_Database
 
Confoo 2021 -- MySQL New Features
Confoo 2021 -- MySQL New FeaturesConfoo 2021 -- MySQL New Features
Confoo 2021 -- MySQL New Features
 
OpenShift Multicluster
OpenShift MulticlusterOpenShift Multicluster
OpenShift Multicluster
 
[SSA] 03.newsql database (2014.02.05)
[SSA] 03.newsql database (2014.02.05)[SSA] 03.newsql database (2014.02.05)
[SSA] 03.newsql database (2014.02.05)
 
Midwest PHP Presentation - New MSQL Features
Midwest PHP Presentation - New MSQL FeaturesMidwest PHP Presentation - New MSQL Features
Midwest PHP Presentation - New MSQL Features
 
Production Grade Kubernetes Applications
Production Grade Kubernetes ApplicationsProduction Grade Kubernetes Applications
Production Grade Kubernetes Applications
 
How to Handle your Kubernetes Upgrades
How to Handle your Kubernetes UpgradesHow to Handle your Kubernetes Upgrades
How to Handle your Kubernetes Upgrades
 
Become a MySQL DBA - Webinars - Schema Changes for MySQL Replication & Galera...
Become a MySQL DBA - Webinars - Schema Changes for MySQL Replication & Galera...Become a MySQL DBA - Webinars - Schema Changes for MySQL Replication & Galera...
Become a MySQL DBA - Webinars - Schema Changes for MySQL Replication & Galera...
 
HA with Galera
HA with GaleraHA with Galera
HA with Galera
 
PoC: Using a Group Communication System to improve MySQL Replication HA
PoC: Using a Group Communication System to improve MySQL Replication HAPoC: Using a Group Communication System to improve MySQL Replication HA
PoC: Using a Group Communication System to improve MySQL Replication HA
 
Pg chameleon, mysql to postgresql replica made easy
Pg chameleon, mysql to postgresql replica made easyPg chameleon, mysql to postgresql replica made easy
Pg chameleon, mysql to postgresql replica made easy
 
Power-Efficient Programming Using Qualcomm Multicore Asynchronous Runtime Env...
Power-Efficient Programming Using Qualcomm Multicore Asynchronous Runtime Env...Power-Efficient Programming Using Qualcomm Multicore Asynchronous Runtime Env...
Power-Efficient Programming Using Qualcomm Multicore Asynchronous Runtime Env...
 
CDC patterns in Apache Kafka®
CDC patterns in Apache Kafka®CDC patterns in Apache Kafka®
CDC patterns in Apache Kafka®
 

More from Codership Oy - Creators of Galera Cluster (10)

Choosing between Codership's MySQL Galera, MariaDB Galera Cluster and Percona...
Choosing between Codership's MySQL Galera, MariaDB Galera Cluster and Percona...Choosing between Codership's MySQL Galera, MariaDB Galera Cluster and Percona...
Choosing between Codership's MySQL Galera, MariaDB Galera Cluster and Percona...
 
Running Galera Cluster on Microsoft Azure
Running Galera Cluster on Microsoft AzureRunning Galera Cluster on Microsoft Azure
Running Galera Cluster on Microsoft Azure
 
Taking Full Advantage of Galera Multi Master Cluster
Taking Full Advantage of Galera Multi Master ClusterTaking Full Advantage of Galera Multi Master Cluster
Taking Full Advantage of Galera Multi Master Cluster
 
Using galera replication to create geo distributed clusters on the wan
Using galera replication to create geo distributed clusters on the wanUsing galera replication to create geo distributed clusters on the wan
Using galera replication to create geo distributed clusters on the wan
 
Galera webinar migration to galera cluster from my sql async replication
Galera webinar migration to galera cluster from my sql async replicationGalera webinar migration to galera cluster from my sql async replication
Galera webinar migration to galera cluster from my sql async replication
 
Codership's galera cluster installation and quickstart webinar march 2016
Codership's galera cluster installation and quickstart webinar march 2016Codership's galera cluster installation and quickstart webinar march 2016
Codership's galera cluster installation and quickstart webinar march 2016
 
Introduction to Galera Cluster
Introduction to Galera ClusterIntroduction to Galera Cluster
Introduction to Galera Cluster
 
How to understand Galera Cluster - 2013
How to understand Galera Cluster - 2013How to understand Galera Cluster - 2013
How to understand Galera Cluster - 2013
 
Galera Cluster 3.0 Features
Galera Cluster 3.0 FeaturesGalera Cluster 3.0 Features
Galera Cluster 3.0 Features
 
Introducing Galera 3.0
Introducing Galera 3.0Introducing Galera 3.0
Introducing Galera 3.0
 

Recently uploaded

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 

Recently uploaded (20)

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 

Zero Downtime Schema Changes in Galera Cluster

  • 2. Agenda ● Schema Upgrades in Synchronous Cluster ● DDL Classification ● Schema Backwards Compatibility ● Alternatives for Schema Upgrades ● ● ● ● ● ● TOI RSU / desync wsrep_desync / wsrep_on method Dropping Node for DDL pt-online-schema-change Summary www.codership.com 2
  • 3. Schema Upgrades Applications have evolution, and there will be needs to change database schema in new application revisions With 24/7 online requirements, the schema upgrade must happen while the system is online Synchronous database cluster, requires that all active nodes must have same data – Note that schema may differ, as long as data content is logically same We need to figure out way(s) to roll schema upgrades in online cluster with minimal disruption for the service www.codership.com 3
  • 4. What is DDL? SQL statements can be classified in several classes: DML Data Manipulation Language – Transactional data manipulations – SELECT, INSERT, UPDATE... DDL Data Definition Language – CREATE..., DROP..., ALTER... DCL Data Control Language – GRANT, REVOKE TCL Transaction Control Language … http://en.wikibooks.org/wiki/MySQL/Language/Definitions:_what_are_DDL,_DML_and_DQL%3F www.codership.com 4
  • 5. DML vs DDL But the bottom line is division between transactional and nontransactional statements: Transactional SQL – All DML on InnoDB – NON Transactional SQL Can be rolled back ● Not possible to rollback – ● DDL, DCL..., DML on non transactional SE – ● – Requires up-front locking Galera uses optimistic concurrency control, and depends on possibility to rollback a conflicting operation Only transactional SQL can be replicated through Galera transactional replication For others (DDL, DCL...), we either have to skip replication or use up-front locking www.codership.com 5
  • 6. DML vs DDL Notes on some DDL: TRUNCATE – is DDL! – Is fast to execute, but nevertheless has some impact OPTIMIZE, REPAIR, ANALYZE – Table admin commands are now replicated CREATE / DROP INDEX – Hold MDL on affected table, and can stall the replication www.codership.com 6
  • 8. Backward Compatibility App v1 MySQL Schema v1 App v1 Schema Upgrade MySQL Schema v2 App Upgrade App v2 MySQL Schema v2 Old application version must be able to use the new schema www.codership.com 9
  • 9. Backward Compatibility App v1 MySQL Schema v1 App Upgrade App v2 MySQL Schema v1 App v2 Schema Upgrade MySQL Schema v2 New application version must be able to use the old schema www.codership.com 10
  • 10. Backwards Compatibility New/old application should be able to use both old and new schema Application should be backwards compatible ROW replication between old and new schema should be possible Schema change should be backwards compatible www.codership.com 11
  • 11. App Backwards Compatibility New/old application should be able to use both old and new schema – New application can have compatibility mode to detect the version of underlying database – If old app cannot use new schema, the old app must connect to one node only, which will be the last to upgrade Dropping tables or columns can be a problem – But drops can be done delayed: e.g. in v2 -> v3 upgrade, obsolete v1 elements can be dropped as neither v2 or v3 app will use them any more www.codership.com 12
  • 12. ROW Replication Compatibility MySQL guarantees ROW replication event compatibility with some limitations Newer MySQL versions tolerate more variation between source and target tables, check out this page for latest status: http://dev.mysql.com/doc/refman/5.6/en/replication-features-differing-tables.html ● ● Source and target can have different number of columns But columns must be in same order ● New columns in the end, and must have default values ● Some data type conversions are also supported www.codership.com 13
  • 13. ROW Replication Compatibility Insert into table-A(col-a,col-b) values (5,7) col-a col-b col-a Table A col-b col-c Table A www.codership.com 14
  • 14. ROW Replication Compatibility Insert into table-A(col-a,col-b) values (5,7) col-a col-b col-a col-b col-c 5 7 5 7 def Replication Table A Table A www.codership.com 15
  • 15. STATEMENT Replication In STATEMENT format, schema compatibility is not an issue Galera does not currently support STATEMENT replication, but: – Enabling STATEMENT replication is minor task Consistency is at risk ● Parallel applying must be limited (OFF, Database or Table level) ● STATEMENT replication, in general, is phasing out Supporting STATEMENT replication for schema upgrades, is one potential extension we are looking for ● – www.codership.com 16
  • 16. Schema Upgrades in Galera Cluster
  • 17. Schema Upgrades in Galera Galera Cluster has two inbuilt methods for DDL replication: – TOI – Total Order Isolation – RSU – Rolling Schema Upgrade The method of choice is declared by variable: wsrep_osu_method = TOI | RSU Pt-online-schema-change is valid tool for upgrades, these and other DDL replication alternatives are discussed in following chapters. www.codership.com 18
  • 19. TOI Total oder Isolation (TOI) is the default DDL replication method ● ● ● ● wsrep_osu_method = TOI “master node” detects DDL at parsing time and sends out replication event for the SQL statement before even starting the DDL processing DDL replication happens in STATEMENT format Every node in the cluster will process the replicated DDL at the same “slot” in the cluster transaction stream (Total Order) www.codership.com 20
  • 20. TOI Replication ALTER TABLE t1... Parser Replication MySQL MySQL Execution a Galera Replication WS Seqno STATEMENT event G a l e r a R e p l i c a t io n www.codership.com 21
  • 21. TOI Replication ALTER TABLE t1... Parser apply continue Parser MySQL MySQL Execution Execution a Galera Replication WS Seqno slot reached www.codership.com 22
  • 22. TOI Replication Pros – Strict consistency, all nodes will get same change – No worries about schema backwards compatibility Cons – Strict commit order will make every transaction to wait until DDL is over Usable, when: – DDL is short term – Schema change will not be backwards compatible – And/or there is maintenance window Some future work in road map: – TOI replication commit order can be relaxed – We are working on optimization based on this www.codership.com 23
  • 24. RSU ➢ Rolling Schema Upgrade wsrep_osu_method=RSU ➢ Will desynchronize the node from replication for the duration of following DDL command ➢ Incoming replication is buffered ➢ Nothing will be replicated out of the node ➢ When DDL is over, the node will automatically join back in cluster, and catch up missed transactions from the buffer www.codership.com 25
  • 25. RSU SET GLOBAL wsrep_osu_method=RSU ALTER TABLE t1... MySQL MySQL MySQL G a l e r a R e p l i c a t io n a Galera Replication www.codership.com 26
  • 27. RSU ALTER TABLE t1... MySQL WS a MySQL MySQL WS Slave queue Galera Replication www.codership.com 28
  • 28. RSU Pros – DDL will not slow down cluster – Automatic re-sync after DDL is over Cons – – Schema change has to be backwards compatible – a Has global effect, all sessions will be RSU'ed Only one RSU operation at a time – Rolling over cluster is manual operation www.codership.com 29
  • 30. wsrep_desync Node can be set to omit flow control by: mysql> SET GLOBAL wsrep_desync=ON; A session can be declared to not replicate anything by: mysql> SET wsrep_on=OFF; ● ● Running DDL in such a session, will result in local schema change, and processing of the DDL will not hold back cluster. However, all cluster transactions will be replicated to the node, and if there are conflicts, the DDL will be aborted. wsrep_desync+wsrep_on method is good only for non-confliction operations www.codership.com 31
  • 31. wsrep_desync+wsrep_on SET GLOBAL wsrep_desync=ON; SET wsrep_on=OFF; ALTER TABLE t1... t1 t2 tn MySQL a WS WS Slave queue Galera Replication www.codership.com 32
  • 32. wsrep_desync We are currently working on making better use of desync mode. The goal is to protect local desynced transactions from replication aborts. This way, the DDL will succeed even if there are conflicts with the cluster. However, cluster replication will pause at first such conflict and wait until DDL is complete. But, this will be future extension, and available in some of following 3.* release. www.codership.com 33
  • 33. Drop a Node for DDL
  • 34. Dropping Node for DDL One way to do “manual RSU”, is to drop a node from cluster and run DDL on the stand-alone node. Joining the node back must happen through IST, as we don't want SST to bring back the old schema. Make sure to protect the node from any production connections! Load balancers should be configured first to isolate the node from unwanted connections. Adjust your gcache size big enough to allow IST after the DDL is over. www.codership.com 35
  • 35. Dropping Node for DDL Load Balancer 1. configure LB 2. Drop node, e.g. set global wsrep_cluster_address=gcomm:// MySQL MySQL Galera Replication www.codership.com 36
  • 36. Dropping Node for DDL Load Balancer 3. ALTER TABLE t1... MySQL MySQL Galera Replication www.codership.com 37
  • 37. Dropping Node for DDL Load Balancer 4. Join back set wsrep_cluster_address... WS MySQL WS IST MySQL Galera Replication www.codership.com 38
  • 38. Dropping Node for DDL Load Balancer 5. configure LB MySQL MySQL Galera Replication www.codership.com 39
  • 40. pt-online-schema-change Tool in Percona Toolkit to run non blocking schema changes http://www.percona.com/doc/percona-toolkit/2.2/pt-online-schema-change.html 1. Creates a shadow copy of target table 2. Installs triggers in source table to forward updates to target table 3. Copies source table data in small chunks to target table 4. Renames target table to replace the source table Pt-osc does not replicate schema changes, but makes it possible to change schema without interfering with replication However, pt-osc requires TOI to be enabled, and TOI replication will propagate the changes to whole cluster www.codership.com 41
  • 42. pt-online-schema-change updates t1-new t1 a Install trigger to forward updates to new table www.codership.com 43
  • 47. pt-online-schema-change Some Caveats: ● TOI requirement – – ● Pt-osc changes will be run against whole cluster with one go Could be relaxed, imo Triggers not supported – ● Pt-osc installs new triggers in source table and does not allow any other triggers to exists in the table Foreign key support – a Two methods for dealing with FKs – Rebuilding child table FK constraint may be needed – FK constraint name will be different www.codership.com 48
  • 49. Codership Schema upgrades require careful planning ➢ Find out backwards compatibility both from application and from ROW replication perspective ➢ Plan your upgrade process ➢ Rehearse with test cluster Instant methods: ➢ TOI replication, pt-osc ➢ ROW replication backwards compatibility is not an issue Rolling methods ➢ RSU, wsrep_desync/wsrep_on, node dropping ➢ Schema backwards compatibility required www.codership.com 50
  • 50. Questions? Thank you for listening! Happy Clustering :-)