SlideShare a Scribd company logo
1 of 50
Download to read offline
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

Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
Wars of MySQL Cluster ( InnoDB Cluster VS Galera ) Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
Wars of MySQL Cluster ( InnoDB Cluster VS Galera ) Mydbops
 
Galera Cluster - Node Recovery - Webinar slides
Galera Cluster - Node Recovery - Webinar slidesGalera Cluster - Node Recovery - Webinar slides
Galera Cluster - Node Recovery - Webinar slidesSeveralnines
 
MariaDB MaxScale
MariaDB MaxScaleMariaDB MaxScale
MariaDB MaxScaleMariaDB plc
 
Replication Troubleshooting in Classic VS GTID
Replication Troubleshooting in Classic VS GTIDReplication Troubleshooting in Classic VS GTID
Replication Troubleshooting in Classic VS GTIDMydbops
 
Case Study: MySQL migration from latin1 to UTF-8
Case Study: MySQL migration from latin1 to UTF-8Case Study: MySQL migration from latin1 to UTF-8
Case Study: MySQL migration from latin1 to UTF-8Olivier DASINI
 
How to Manage Scale-Out Environments with MariaDB MaxScale
How to Manage Scale-Out Environments with MariaDB MaxScaleHow to Manage Scale-Out Environments with MariaDB MaxScale
How to Manage Scale-Out Environments with MariaDB MaxScaleMariaDB plc
 
Build Low-Latency Applications in Rust on ScyllaDB
Build Low-Latency Applications in Rust on ScyllaDBBuild Low-Latency Applications in Rust on ScyllaDB
Build Low-Latency Applications in Rust on ScyllaDBScyllaDB
 
Mastering PostgreSQL Administration
Mastering PostgreSQL AdministrationMastering PostgreSQL Administration
Mastering PostgreSQL AdministrationCommand Prompt., Inc
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PGConf APAC
 
Optimizing MariaDB for maximum performance
Optimizing MariaDB for maximum performanceOptimizing MariaDB for maximum performance
Optimizing MariaDB for maximum performanceMariaDB plc
 
M|18 Architectural Overview: MariaDB MaxScale
M|18 Architectural Overview: MariaDB MaxScaleM|18 Architectural Overview: MariaDB MaxScale
M|18 Architectural Overview: MariaDB MaxScaleMariaDB plc
 
Cassandra vs. ScyllaDB: Evolutionary Differences
Cassandra vs. ScyllaDB: Evolutionary DifferencesCassandra vs. ScyllaDB: Evolutionary Differences
Cassandra vs. ScyllaDB: Evolutionary DifferencesScyllaDB
 
Megastore: Providing scalable and highly available storage
Megastore: Providing scalable and highly available storageMegastore: Providing scalable and highly available storage
Megastore: Providing scalable and highly available storageNiels Claeys
 
PostgreSQL 공간관리 살펴보기 이근오
PostgreSQL 공간관리 살펴보기 이근오PostgreSQL 공간관리 살펴보기 이근오
PostgreSQL 공간관리 살펴보기 이근오PgDay.Seoul
 
The consequences of sync_binlog != 1
The consequences of sync_binlog != 1The consequences of sync_binlog != 1
The consequences of sync_binlog != 1Jean-François Gagné
 

What's hot (20)

Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
Wars of MySQL Cluster ( InnoDB Cluster VS Galera ) Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
 
Galera Cluster - Node Recovery - Webinar slides
Galera Cluster - Node Recovery - Webinar slidesGalera Cluster - Node Recovery - Webinar slides
Galera Cluster - Node Recovery - Webinar slides
 
Postgresql
PostgresqlPostgresql
Postgresql
 
MariaDB MaxScale
MariaDB MaxScaleMariaDB MaxScale
MariaDB MaxScale
 
Replication Troubleshooting in Classic VS GTID
Replication Troubleshooting in Classic VS GTIDReplication Troubleshooting in Classic VS GTID
Replication Troubleshooting in Classic VS GTID
 
Query logging with proxysql
Query logging with proxysqlQuery logging with proxysql
Query logging with proxysql
 
Case Study: MySQL migration from latin1 to UTF-8
Case Study: MySQL migration from latin1 to UTF-8Case Study: MySQL migration from latin1 to UTF-8
Case Study: MySQL migration from latin1 to UTF-8
 
How to Manage Scale-Out Environments with MariaDB MaxScale
How to Manage Scale-Out Environments with MariaDB MaxScaleHow to Manage Scale-Out Environments with MariaDB MaxScale
How to Manage Scale-Out Environments with MariaDB MaxScale
 
Build Low-Latency Applications in Rust on ScyllaDB
Build Low-Latency Applications in Rust on ScyllaDBBuild Low-Latency Applications in Rust on ScyllaDB
Build Low-Latency Applications in Rust on ScyllaDB
 
Mastering PostgreSQL Administration
Mastering PostgreSQL AdministrationMastering PostgreSQL Administration
Mastering PostgreSQL Administration
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs
 
Learning postgresql
Learning postgresqlLearning postgresql
Learning postgresql
 
Optimizing MariaDB for maximum performance
Optimizing MariaDB for maximum performanceOptimizing MariaDB for maximum performance
Optimizing MariaDB for maximum performance
 
M|18 Architectural Overview: MariaDB MaxScale
M|18 Architectural Overview: MariaDB MaxScaleM|18 Architectural Overview: MariaDB MaxScale
M|18 Architectural Overview: MariaDB MaxScale
 
Megastore by Google
Megastore by GoogleMegastore by Google
Megastore by Google
 
Cassandra vs. ScyllaDB: Evolutionary Differences
Cassandra vs. ScyllaDB: Evolutionary DifferencesCassandra vs. ScyllaDB: Evolutionary Differences
Cassandra vs. ScyllaDB: Evolutionary Differences
 
Megastore: Providing scalable and highly available storage
Megastore: Providing scalable and highly available storageMegastore: Providing scalable and highly available storage
Megastore: Providing scalable and highly available storage
 
PostgreSQL 공간관리 살펴보기 이근오
PostgreSQL 공간관리 살펴보기 이근오PostgreSQL 공간관리 살펴보기 이근오
PostgreSQL 공간관리 살펴보기 이근오
 
The consequences of sync_binlog != 1
The consequences of sync_binlog != 1The consequences of sync_binlog != 1
The consequences of sync_binlog != 1
 
Get to know PostgreSQL!
Get to know PostgreSQL!Get to know PostgreSQL!
Get to know PostgreSQL!
 

Similar to Zero Downtime Schema Changes - Galera Cluster - Best Practices

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 - Galera Cluster - Best Practices (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 Severalnines

Cloud's future runs through Sovereign DBaaS
Cloud's future runs through Sovereign DBaaSCloud's future runs through Sovereign DBaaS
Cloud's future runs through Sovereign DBaaSSeveralnines
 
Tips to drive maria db cluster performance for nextcloud
Tips to drive maria db cluster performance for nextcloudTips to drive maria db cluster performance for nextcloud
Tips to drive maria db cluster performance for nextcloudSeveralnines
 
Working with the Moodle Database: The Basics
Working with the Moodle Database: The BasicsWorking with the Moodle Database: The Basics
Working with the Moodle Database: The BasicsSeveralnines
 
SysAdmin Working from Home? Tips to Automate MySQL, MariaDB, Postgres & MongoDB
SysAdmin Working from Home? Tips to Automate MySQL, MariaDB, Postgres & MongoDBSysAdmin Working from Home? Tips to Automate MySQL, MariaDB, Postgres & MongoDB
SysAdmin Working from Home? Tips to Automate MySQL, MariaDB, Postgres & MongoDBSeveralnines
 
(slides) Polyglot persistence: utilizing open source databases as a Swiss poc...
(slides) Polyglot persistence: utilizing open source databases as a Swiss poc...(slides) Polyglot persistence: utilizing open source databases as a Swiss poc...
(slides) Polyglot persistence: utilizing open source databases as a Swiss poc...Severalnines
 
Webinar slides: How to Migrate from Oracle DB to MariaDB
Webinar slides: How to Migrate from Oracle DB to MariaDBWebinar slides: How to Migrate from Oracle DB to MariaDB
Webinar slides: How to Migrate from Oracle DB to MariaDBSeveralnines
 
Webinar slides: How to Automate & Manage PostgreSQL with ClusterControl
Webinar slides: How to Automate & Manage PostgreSQL with ClusterControlWebinar slides: How to Automate & Manage PostgreSQL with ClusterControl
Webinar slides: How to Automate & Manage PostgreSQL with ClusterControlSeveralnines
 
Webinar slides: How to Manage Replication Failover Processes for MySQL, Maria...
Webinar slides: How to Manage Replication Failover Processes for MySQL, Maria...Webinar slides: How to Manage Replication Failover Processes for MySQL, Maria...
Webinar slides: How to Manage Replication Failover Processes for MySQL, Maria...Severalnines
 
Webinar slides: Backup Management for MySQL, MariaDB, PostgreSQL & MongoDB wi...
Webinar slides: Backup Management for MySQL, MariaDB, PostgreSQL & MongoDB wi...Webinar slides: Backup Management for MySQL, MariaDB, PostgreSQL & MongoDB wi...
Webinar slides: Backup Management for MySQL, MariaDB, PostgreSQL & MongoDB wi...Severalnines
 
Disaster Recovery Planning for MySQL & MariaDB
Disaster Recovery Planning for MySQL & MariaDBDisaster Recovery Planning for MySQL & MariaDB
Disaster Recovery Planning for MySQL & MariaDBSeveralnines
 
MariaDB Performance Tuning Crash Course
MariaDB Performance Tuning Crash CourseMariaDB Performance Tuning Crash Course
MariaDB Performance Tuning Crash CourseSeveralnines
 
Performance Tuning Cheat Sheet for MongoDB
Performance Tuning Cheat Sheet for MongoDBPerformance Tuning Cheat Sheet for MongoDB
Performance Tuning Cheat Sheet for MongoDBSeveralnines
 
Advanced MySql Data-at-Rest Encryption in Percona Server
Advanced MySql Data-at-Rest Encryption in Percona ServerAdvanced MySql Data-at-Rest Encryption in Percona Server
Advanced MySql Data-at-Rest Encryption in Percona ServerSeveralnines
 
Polyglot Persistence Utilizing Open Source Databases as a Swiss Pocket Knife
Polyglot Persistence Utilizing Open Source Databases as a Swiss Pocket KnifePolyglot Persistence Utilizing Open Source Databases as a Swiss Pocket Knife
Polyglot Persistence Utilizing Open Source Databases as a Swiss Pocket KnifeSeveralnines
 
Webinar slides: Free Monitoring (on Steroids) for MySQL, MariaDB, PostgreSQL ...
Webinar slides: Free Monitoring (on Steroids) for MySQL, MariaDB, PostgreSQL ...Webinar slides: Free Monitoring (on Steroids) for MySQL, MariaDB, PostgreSQL ...
Webinar slides: Free Monitoring (on Steroids) for MySQL, MariaDB, PostgreSQL ...Severalnines
 
Webinar slides: An Introduction to Performance Monitoring for PostgreSQL
Webinar slides: An Introduction to Performance Monitoring for PostgreSQLWebinar slides: An Introduction to Performance Monitoring for PostgreSQL
Webinar slides: An Introduction to Performance Monitoring for PostgreSQLSeveralnines
 
Webinar slides: Our Guide to MySQL & MariaDB Performance Tuning
Webinar slides: Our Guide to MySQL & MariaDB Performance TuningWebinar slides: Our Guide to MySQL & MariaDB Performance Tuning
Webinar slides: Our Guide to MySQL & MariaDB Performance TuningSeveralnines
 
Webinar slides: Migrating to Galera Cluster for MySQL and MariaDB
Webinar slides: Migrating to Galera Cluster for MySQL and MariaDBWebinar slides: Migrating to Galera Cluster for MySQL and MariaDB
Webinar slides: Migrating to Galera Cluster for MySQL and MariaDBSeveralnines
 
Webinar slides: How to Measure Database Availability?
Webinar slides: How to Measure Database Availability?Webinar slides: How to Measure Database Availability?
Webinar slides: How to Measure Database Availability?Severalnines
 
Webinar slides: Designing Open Source Databases for High Availability
Webinar slides: Designing Open Source Databases for High AvailabilityWebinar slides: Designing Open Source Databases for High Availability
Webinar slides: Designing Open Source Databases for High AvailabilitySeveralnines
 

More from Severalnines (20)

Cloud's future runs through Sovereign DBaaS
Cloud's future runs through Sovereign DBaaSCloud's future runs through Sovereign DBaaS
Cloud's future runs through Sovereign DBaaS
 
Tips to drive maria db cluster performance for nextcloud
Tips to drive maria db cluster performance for nextcloudTips to drive maria db cluster performance for nextcloud
Tips to drive maria db cluster performance for nextcloud
 
Working with the Moodle Database: The Basics
Working with the Moodle Database: The BasicsWorking with the Moodle Database: The Basics
Working with the Moodle Database: The Basics
 
SysAdmin Working from Home? Tips to Automate MySQL, MariaDB, Postgres & MongoDB
SysAdmin Working from Home? Tips to Automate MySQL, MariaDB, Postgres & MongoDBSysAdmin Working from Home? Tips to Automate MySQL, MariaDB, Postgres & MongoDB
SysAdmin Working from Home? Tips to Automate MySQL, MariaDB, Postgres & MongoDB
 
(slides) Polyglot persistence: utilizing open source databases as a Swiss poc...
(slides) Polyglot persistence: utilizing open source databases as a Swiss poc...(slides) Polyglot persistence: utilizing open source databases as a Swiss poc...
(slides) Polyglot persistence: utilizing open source databases as a Swiss poc...
 
Webinar slides: How to Migrate from Oracle DB to MariaDB
Webinar slides: How to Migrate from Oracle DB to MariaDBWebinar slides: How to Migrate from Oracle DB to MariaDB
Webinar slides: How to Migrate from Oracle DB to MariaDB
 
Webinar slides: How to Automate & Manage PostgreSQL with ClusterControl
Webinar slides: How to Automate & Manage PostgreSQL with ClusterControlWebinar slides: How to Automate & Manage PostgreSQL with ClusterControl
Webinar slides: How to Automate & Manage PostgreSQL with ClusterControl
 
Webinar slides: How to Manage Replication Failover Processes for MySQL, Maria...
Webinar slides: How to Manage Replication Failover Processes for MySQL, Maria...Webinar slides: How to Manage Replication Failover Processes for MySQL, Maria...
Webinar slides: How to Manage Replication Failover Processes for MySQL, Maria...
 
Webinar slides: Backup Management for MySQL, MariaDB, PostgreSQL & MongoDB wi...
Webinar slides: Backup Management for MySQL, MariaDB, PostgreSQL & MongoDB wi...Webinar slides: Backup Management for MySQL, MariaDB, PostgreSQL & MongoDB wi...
Webinar slides: Backup Management for MySQL, MariaDB, PostgreSQL & MongoDB wi...
 
Disaster Recovery Planning for MySQL & MariaDB
Disaster Recovery Planning for MySQL & MariaDBDisaster Recovery Planning for MySQL & MariaDB
Disaster Recovery Planning for MySQL & MariaDB
 
MariaDB Performance Tuning Crash Course
MariaDB Performance Tuning Crash CourseMariaDB Performance Tuning Crash Course
MariaDB Performance Tuning Crash Course
 
Performance Tuning Cheat Sheet for MongoDB
Performance Tuning Cheat Sheet for MongoDBPerformance Tuning Cheat Sheet for MongoDB
Performance Tuning Cheat Sheet for MongoDB
 
Advanced MySql Data-at-Rest Encryption in Percona Server
Advanced MySql Data-at-Rest Encryption in Percona ServerAdvanced MySql Data-at-Rest Encryption in Percona Server
Advanced MySql Data-at-Rest Encryption in Percona Server
 
Polyglot Persistence Utilizing Open Source Databases as a Swiss Pocket Knife
Polyglot Persistence Utilizing Open Source Databases as a Swiss Pocket KnifePolyglot Persistence Utilizing Open Source Databases as a Swiss Pocket Knife
Polyglot Persistence Utilizing Open Source Databases as a Swiss Pocket Knife
 
Webinar slides: Free Monitoring (on Steroids) for MySQL, MariaDB, PostgreSQL ...
Webinar slides: Free Monitoring (on Steroids) for MySQL, MariaDB, PostgreSQL ...Webinar slides: Free Monitoring (on Steroids) for MySQL, MariaDB, PostgreSQL ...
Webinar slides: Free Monitoring (on Steroids) for MySQL, MariaDB, PostgreSQL ...
 
Webinar slides: An Introduction to Performance Monitoring for PostgreSQL
Webinar slides: An Introduction to Performance Monitoring for PostgreSQLWebinar slides: An Introduction to Performance Monitoring for PostgreSQL
Webinar slides: An Introduction to Performance Monitoring for PostgreSQL
 
Webinar slides: Our Guide to MySQL & MariaDB Performance Tuning
Webinar slides: Our Guide to MySQL & MariaDB Performance TuningWebinar slides: Our Guide to MySQL & MariaDB Performance Tuning
Webinar slides: Our Guide to MySQL & MariaDB Performance Tuning
 
Webinar slides: Migrating to Galera Cluster for MySQL and MariaDB
Webinar slides: Migrating to Galera Cluster for MySQL and MariaDBWebinar slides: Migrating to Galera Cluster for MySQL and MariaDB
Webinar slides: Migrating to Galera Cluster for MySQL and MariaDB
 
Webinar slides: How to Measure Database Availability?
Webinar slides: How to Measure Database Availability?Webinar slides: How to Measure Database Availability?
Webinar slides: How to Measure Database Availability?
 
Webinar slides: Designing Open Source Databases for High Availability
Webinar slides: Designing Open Source Databases for High AvailabilityWebinar slides: Designing Open Source Databases for High Availability
Webinar slides: Designing Open Source Databases for High Availability
 

Recently uploaded

AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101vincent683379
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeCzechDreamin
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekCzechDreamin
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGDSC PJATK
 
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCzechDreamin
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlPeter Udo Diehl
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsUXDXConf
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyJohn Staveley
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...CzechDreamin
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfFIDO Alliance
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyUXDXConf
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreelreely ones
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoTAnalytics
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsStefano
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FIDO Alliance
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Patrick Viafore
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftshyamraj55
 

Recently uploaded (20)

AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreel
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoft
 

Zero Downtime Schema Changes - Galera Cluster - Best Practices

  • 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 :-)