SlideShare a Scribd company logo
1 of 49
Download to read offline
Schema Management: Versioning and
Automation with Puppet and MySQL Utilities
Oracle Open World 2014 : MySQL Central Frédéric Descamps
Who am I ?
●
Frédéric Descamps «lefred»
●
@lefred
●
http://about.me/lefred
●
within Percona since 2011
●
managing MySQL since 3.23 (as far as I remember)
●
devops believer
We live in a devops world o/
Oracle Open World 2014 : MySQL Central
-3-
devops ?
we can say that devops is
bringing together people and
practices from development
and operations
Oracle Open World 2014 : MySQL Central
devops ?
we can say that devops is
bringing together people and
practices from development
and operations
I am a happy dev !I am a happy op !
Oracle Open World 2014 : MySQL Central
CAMS
●
devops is about CAMS
– Culture
– Automation
– Measurement
– Sharing
@botchagalupe @damonedwards
http://www.opscode.com/blog/2010/07/16/what-devops-means-to-me/
Oracle Open World 2014 : MySQL Central
This talk is about automation
●
What techniques can I use ?
– Infrastructure as Code
– Continuous Improvement
Oracle Open World 2014 : MySQL Central
WE are already between
devs and ops
Oracle Open World 2014 : MySQL Central
WE are already between
devs and ops
Oracle Open World 2014 : MySQL Central
I am a happy DBA !
so... AUTOMATION
●
Can we automate DBAs job ?
●
Should we ??
●
Even if we have only one database ?
Oracle Open World 2014 : MySQL Central
●
Everything needs to be reproducible
Oracle Open World 2014 : MySQL Central
What do we «usually» automate ?
●
binaries installation (which version of MySQL)
●
configuration (my.cnf ?)
●
cron jobs
●
monitoring
●
databases (schemas)
●
grants
●
replication ?
Oracle Open World 2014 : MySQL Central
Infrastructure as code
●
So to automate all these tasks a multiplicity of projects
appeared on the web:
– puppet
– chef
– cfengine
– ansible
– saltstack
– ...
Oracle Open World 2014 : MySQL Central
let's focus on Puppet
●
we will install MySQL on a new node
or or
Oracle Open World 2014 : MySQL Central
let's focus on Puppet
●
we will install MySQL on a new node
5.5 or 5.6 or 10.0 or 5.7 ?
Oracle Open World 2014 : MySQL Central
let's focus on Puppet
●
Puppet recipes will take care of the OS
or
Oracle Open World 2014 : MySQL Central
let's focus on Puppet
●
Puppet recipes will take care of the OS
or
Oracle Open World 2014 : MySQL Central
case $::osfamily {
     'RedHat': {
           $require = Yumrepo['mysql­repo']
      }
      'Debian': {
           $require = Apt::Source['mysql­repo']
      }
}
Example in hiera
­­­
classes:
  ­ mysql
  ­ mysql::server
mysql::mysql_root_password: «fred»
mysql::mysql_distro: «community»
mysql::mysql_version: «5.6»
mysql::mysql_serverid: «2»
mysql::mysql_bind_interface: «eth1»
mysql::ensure: «running»
Oracle Open World 2014 : MySQL Central
puppet (continue)
●
And we can automate many things like schema creation,
grants:
mysql::db { $graphite_db_name:
      user     => $graphite_db_user,
      password => $graphite_db_password,
      host     => $graphite_db_host,
      grant    => ['SELECT', 'UPDATE'],      
   }
Oracle Open World 2014 : MySQL Central
puppet: MySQL modules
●
You can find many MySQL modules for puppet:
– https://github.com/olindata/puppetlabs-mysql
– https://github.com/lefred/puppet-lefred-mysql
Oracle Open World 2014 : MySQL Central
and now ?
●
can we go further ?
●
what could we automate ?
●
schemas !
– using mysqldump ?
– using frameworks ?
Oracle Open World 2014 : MySQL Central
but... automation !
●
we want this automated
●
easy to test multiple times in development, staging, ...
●
to use in production
●
and if possible to rollback easily if needed !
v1 v2
Oracle Open World 2014 : MySQL Central
Database Schema Migration Tools
●
There are some existing tools:
– Liquibase
– Flyway
– c5-db-migration
– dbdeploy
– MyBatis
– Autopatch
– Sqitch
Oracle Open World 2014 : MySQL Central
Database Schema Migration Tools
Most of them are...
Integrated with a framework or an ORM
Oracle Open World 2014 : MySQL Central
Database Schema Migration Tools
Most of them are...
for JAVA applications
Oracle Open World 2014 : MySQL Central
Database Schema Migration Tools
Most of them use...
XML definitions
Oracle Open World 2014 : MySQL Central
XML Definitions
●
What is easier to read and maintain for us, DBAs ?
Oracle Open World 2014 : MySQL Central
<?xml version="1.0" encoding="UTF­8"?>
 
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema­instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog­2.0.xsd">
 
<changeSet id="1" author="lefred">
<createTable tableName="department">
<column name="id" type="int">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="name" type="varchar(50)">
<constraints nullable="false"/>
</column>
<column name="active" type="boolean" defaultValueBoolean="true"/>
</createTable>
</changeSet>
 
</databaseChangeLog>
XML Definitions
●
or this ?
Oracle Open World 2014 : MySQL Central
CREATE TABLE department (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
Database Schema Migration Tools
most of them are...
blocking schema changes
Oracle Open World 2014 : MySQL Central
Database Schema Migration Tools
and finally...
not designed to be used via a
configuration management system
Oracle Open World 2014 : MySQL Central
so are we blocked ? NO !
●
Oracle's MySQL-Utilities
●
Percona Toolkit
●
a standalone Python script
●
a new Puppet type and provider
Oracle Open World 2014 : MySQL Central
Oracle's MySQL-Utilities
●
toolkit that was generally distributed via MySQL Workbench
●
Dec 7th 2010 : v 1.0.0
●
Aug 20th 2014: v.1.5.1 RC
●
it contains a package of tools used for maintenance and
administration of MySQL servers
●
they are written in Python
●
the utilities are command line commands and a Python
library
Oracle Open World 2014 : MySQL Central
Oracle's MySQL-Utilities (2)
●
Utilities can help for
– database operations: provision a slave, copy a db, diff tables, synchronize tables
– general operations: find disk space used, table structure, duplicate users, work on
indexes, find database objects matching patterns
– HA operations: add a slave, setup failover, find slaves, check replication
– server operations: make a temp copy of the server, use secure connection
– «specialized operations»: record login events, copy/move audit log, show failed
queries, show connections
Oracle Open World 2014 : MySQL Central
What are the interresting tools for us
●
mysqldbcompare — compares two databases and
identify differences (objects, row counts, data concistency)
●
mysqldiff — identifies differences among database
objects
●
And all those options can be integrated into a Python script
using the library
Oracle Open World 2014 : MySQL Central
Percona-Toolkit
●
collection of advanced command-line tools
●
Aug 6th 2014: v2.2.10
●
They can do a lot of useful tasks like table checksum and
synchronization, delay slave on version where it wasn't
implemented yet, digest the queries
●
But for us, the most important:
pt­online­schema­change
Oracle Open World 2014 : MySQL Central
pt-online-schema-change
●
this tool allows to alter a table's structure without blocking
reads or writes
●
the tool works on a copy of the table you wish to alter
●
switches them at the end of the process
●
and delete the original one
online-migration.py
●
standalone Python script
●
command line only no GUI sorry ;-)
●
uses Oracle's MySQL-Utilities library
●
uses pt-online-schema-change
●
uses normal SQL statements that all DBAs understand
●
can be integrated in Puppet
Oracle Open World 2014 : MySQL Central
what can it do ?
●
The script is able to
– return the schema version of a database
– list all versions and their status
– migrate up
– migrate down (rollback a migration)
– checksum the schema
– return the difference between expected schema and installed schema
Oracle Open World 2014 : MySQL Central
and in Puppet ?
node percona1 {
 include mysql
 include mysql::server
 include mysql::utilities
 include mysql::percona_toolkit
 include online­migration
        Class['percona::repository'] ­> Class['percona::server']
        mysql_schema { "world":
                     ensure  => present,
         require => [ Package["online­migration"], 
   Service['mysql'] ],
                     version => 2,
                      cwd     => "/root/om",
        }
        ...
}
Oracle Open World 2014 : MySQL Central
and in Puppet ?
node percona1 {
 include mysql
 include mysql::server
 include mysql::utilities
 include mysql::percona_toolkit
 include online­migration
        Class['percona::repository'] ­> Class['percona::server']
        mysql_schema { "world":
                     ensure  => present,
         require => [ Package["online­migration"], 
   Service['mysql'] ],
                     version => 2,
                      cwd     => "/root/om",
        }
        ...
}
Oracle Open World 2014 : MySQL Central
...
info: Mysql_schema[world](provider=mysql_schema): performing the check, last_version is 1
info: Mysql_schema[world](provider=mysql_schema): we need to migrate to another version (2)
info: Mysql_schema[world](provider=mysql_schema): performing the migration
...
online-migration.py internals
●
uses a dedicated table :
online_migration.migration_sys
– it contains some meta data like db, version, apply date, status
– created by: online­migration.py init_sysdb
– first entry is version 0 and is created by the «init» command
●
uses a folder with meta-data:
– XXXX­up.meta: meta data required to upgrade to version XXXX, like version,
checksum and comment
– XXXX­up.mig: contains the required changes/statements
– XXXX­down.mig: contains the automated reverse statements
online-migration.py: features
●
versioning and status
$ online­migration.py status world
Migration of schema world :
+­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+
| VERSION | APPLIED             | STATUS           | COMMENT                |
+­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+
|    0000 | 2014­09­22 09:17:16 |               ok |           Initial file |
|    0001 |                none |          pending |                   none |
|    0002 |                none |          pending |                   none |
|    0003 |                none |          pending | add nice column to cit |
+­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+
online-migration.py: features (2)
●
migration up
$ online­migration.py up world to 3
INFO : You want to migrate up to version 0003
INFO : Ok this version is pending
INFO : Preparing migration to version 0001
INFO : Applied changes match the requested schema
INFO : Preparing migration to version 0002
INFO : Applied changes match the requested schema
INFO : Preparing migration to version 0003
INFO : Applied changes match the requested schema
$ online­migration.py status world
Migration of schema world :
+­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+
| VERSION | APPLIED             | STATUS           |                COMMENT |
+­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+
|    0000 | 2014­09­22 09:17:16 |               ok |           Initial file |
|    0001 | 2014­09­22 09:17:46 |               ok |                   none |
|    0002 | 2014­09­22 09:18:24 |               ok |                   none |
|    0003 | 2014­09­22 09:18:36 |               ok | add nice column to cit |
+­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+
online-migration.py: features (3)
●
checksum
$ online­migration.py status world
Migration of schema world :
+­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+
| VERSION | APPLIED             | STATUS           |                COMMENT |
+­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+
|    0000 | 2014­09­22 09:17:16 |               ok |           Initial file |
|    0001 | 2014­09­22 09:17:46 | checksum problem |                   none |
+­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+
$ online­migration.py checksum world
world's current schema checksum = 3239e7245d98d27681020e36d0085676
online-migration.py: features (4)
●
migration down (rollback)
$ online­migration.py down world 2
INFO : You want to migrate down 2 version(s)
INFO : rollback from 0003 to 0002
INFO : rollback from 0002 to 0001
$ online­migration.py status world
Migration of schema world :
+­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+
| VERSION | APPLIED             | STATUS           |                COMMENT |
+­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+
|    0000 | 2014­09­22 09:17:16 |               ok |           Initial file |
|    0001 | 2014­09­22 09:17:46 |               ok |                   none |
|    0002 | 2014­09­22 09:18:24 |         rollback |                   none |
|    0003 | 2014­09­22 09:18:36 |         rollback | add nice column to cit |
|    0002 |                none |          pending |                   none |
|    0003 |                none |          pending | add nice column to cit |
+­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+
online-migration.py: features (5)
●
schema diff
$ online­migration.py diff world
WARNING : Schema of world doesn't have expected checksum
(4478d85870969436400bac023f2b2b7c)
TABLE `City`
­ `CountryCode` varchar(10) DEFAULT NULL,
+ `CountryCode` char(3) NOT NULL DEFAULT '',
todo
●
Make the code more robust (handling errors)
●
Write support for store procedures, functions,...
●
Support online DDL (ALGORITHM=INPLACE)
●
Add configuration file
Resources
●
Oracle MySQL — http://dev.mysql.com/downloads/mysql/
●
MySQL-Utilities — http://dev.mysql.com/downloads/utilities/
●
Percona-Toolkit - http://www.percona.com/doc/percona-
toolkit/2.2/index.html
●
pt-online-schema-change — http://www.percona.com/doc/percona-
toolkit/2.2/pt-online-schema-change.html
●
puppet — http://puppetlabs.com
●
online-migration.py — https://github.com/lefred/online-migration
Oracle Open World 2014 : MySQL Central
Thank you
Questions ?
Oracle Open World 2014 : MySQL Central

More Related Content

What's hot

MySQL Group Replication
MySQL Group ReplicationMySQL Group Replication
MySQL Group ReplicationManish Kumar
 
Upgrade to MySQL 5.6 without downtime
Upgrade to MySQL 5.6 without downtimeUpgrade to MySQL 5.6 without downtime
Upgrade to MySQL 5.6 without downtimeOlivier DASINI
 
Ohio Linux Fest -- MySQL's NoSQL
Ohio Linux Fest -- MySQL's NoSQLOhio Linux Fest -- MySQL's NoSQL
Ohio Linux Fest -- MySQL's NoSQLDave Stokes
 
Easy MySQL Replication Setup and Troubleshooting
Easy MySQL Replication Setup and TroubleshootingEasy MySQL Replication Setup and Troubleshooting
Easy MySQL Replication Setup and TroubleshootingBob Burgess
 
MHA (MySQL High Availability): Getting started & moving past quirks
MHA (MySQL High Availability): Getting started & moving past quirksMHA (MySQL High Availability): Getting started & moving past quirks
MHA (MySQL High Availability): Getting started & moving past quirksColin Charles
 
MySQL Replication Troubleshooting for Oracle DBAs
MySQL Replication Troubleshooting for Oracle DBAsMySQL Replication Troubleshooting for Oracle DBAs
MySQL Replication Troubleshooting for Oracle DBAsSveta Smirnova
 
openark-kit: MySQL utilities for everyday use
openark-kit: MySQL utilities for everyday useopenark-kit: MySQL utilities for everyday use
openark-kit: MySQL utilities for everyday useShlomi Noach
 
MySQL Group Replicatio in a nutshell - MySQL InnoDB Cluster
MySQL Group Replicatio  in a nutshell - MySQL InnoDB ClusterMySQL Group Replicatio  in a nutshell - MySQL InnoDB Cluster
MySQL Group Replicatio in a nutshell - MySQL InnoDB ClusterFrederic Descamps
 
MySQL High Availability Solutions - Avoid loss of service by reducing the r...
MySQL High Availability Solutions  -  Avoid loss of service by reducing the r...MySQL High Availability Solutions  -  Avoid loss of service by reducing the r...
MySQL High Availability Solutions - Avoid loss of service by reducing the r...Olivier DASINI
 
Automated MySQL failover with MHA: Getting started & moving past its quirks
Automated MySQL failover with MHA: Getting started & moving past its quirksAutomated MySQL failover with MHA: Getting started & moving past its quirks
Automated MySQL failover with MHA: Getting started & moving past its quirksColin Charles
 
MySQL Utilities -- PyTexas 2015
MySQL Utilities -- PyTexas 2015MySQL Utilities -- PyTexas 2015
MySQL Utilities -- PyTexas 2015Dave Stokes
 
OTN Tour 2014: Rac 11g vs 12c
OTN Tour 2014: Rac 11g vs 12cOTN Tour 2014: Rac 11g vs 12c
OTN Tour 2014: Rac 11g vs 12cDeiby Gómez
 
Fosdem 2014 - MySQL & Friends Devroom: 15 tips galera cluster
Fosdem 2014 - MySQL & Friends Devroom: 15 tips galera clusterFosdem 2014 - MySQL & Friends Devroom: 15 tips galera cluster
Fosdem 2014 - MySQL & Friends Devroom: 15 tips galera clusterFrederic Descamps
 
MySQL Group Replication - an Overview
MySQL Group Replication - an OverviewMySQL Group Replication - an Overview
MySQL Group Replication - an OverviewMatt Lord
 
Galera Replication Demystified: How Does It Work?
Galera Replication Demystified: How Does It Work?Galera Replication Demystified: How Does It Work?
Galera Replication Demystified: How Does It Work?Frederic Descamps
 
Lessons Learned: Troubleshooting Replication
Lessons Learned: Troubleshooting ReplicationLessons Learned: Troubleshooting Replication
Lessons Learned: Troubleshooting ReplicationSveta Smirnova
 
Galera explained 3
Galera explained 3Galera explained 3
Galera explained 3Marco Tusa
 
Highly Available MySQL/PHP Applications with mysqlnd
Highly Available MySQL/PHP Applications with mysqlndHighly Available MySQL/PHP Applications with mysqlnd
Highly Available MySQL/PHP Applications with mysqlndJervin Real
 
Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingPerformance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingSveta Smirnova
 
Webinar manage MySQL like a devops sysadmin
Webinar manage MySQL like a devops sysadminWebinar manage MySQL like a devops sysadmin
Webinar manage MySQL like a devops sysadminFrederic Descamps
 

What's hot (20)

MySQL Group Replication
MySQL Group ReplicationMySQL Group Replication
MySQL Group Replication
 
Upgrade to MySQL 5.6 without downtime
Upgrade to MySQL 5.6 without downtimeUpgrade to MySQL 5.6 without downtime
Upgrade to MySQL 5.6 without downtime
 
Ohio Linux Fest -- MySQL's NoSQL
Ohio Linux Fest -- MySQL's NoSQLOhio Linux Fest -- MySQL's NoSQL
Ohio Linux Fest -- MySQL's NoSQL
 
Easy MySQL Replication Setup and Troubleshooting
Easy MySQL Replication Setup and TroubleshootingEasy MySQL Replication Setup and Troubleshooting
Easy MySQL Replication Setup and Troubleshooting
 
MHA (MySQL High Availability): Getting started & moving past quirks
MHA (MySQL High Availability): Getting started & moving past quirksMHA (MySQL High Availability): Getting started & moving past quirks
MHA (MySQL High Availability): Getting started & moving past quirks
 
MySQL Replication Troubleshooting for Oracle DBAs
MySQL Replication Troubleshooting for Oracle DBAsMySQL Replication Troubleshooting for Oracle DBAs
MySQL Replication Troubleshooting for Oracle DBAs
 
openark-kit: MySQL utilities for everyday use
openark-kit: MySQL utilities for everyday useopenark-kit: MySQL utilities for everyday use
openark-kit: MySQL utilities for everyday use
 
MySQL Group Replicatio in a nutshell - MySQL InnoDB Cluster
MySQL Group Replicatio  in a nutshell - MySQL InnoDB ClusterMySQL Group Replicatio  in a nutshell - MySQL InnoDB Cluster
MySQL Group Replicatio in a nutshell - MySQL InnoDB Cluster
 
MySQL High Availability Solutions - Avoid loss of service by reducing the r...
MySQL High Availability Solutions  -  Avoid loss of service by reducing the r...MySQL High Availability Solutions  -  Avoid loss of service by reducing the r...
MySQL High Availability Solutions - Avoid loss of service by reducing the r...
 
Automated MySQL failover with MHA: Getting started & moving past its quirks
Automated MySQL failover with MHA: Getting started & moving past its quirksAutomated MySQL failover with MHA: Getting started & moving past its quirks
Automated MySQL failover with MHA: Getting started & moving past its quirks
 
MySQL Utilities -- PyTexas 2015
MySQL Utilities -- PyTexas 2015MySQL Utilities -- PyTexas 2015
MySQL Utilities -- PyTexas 2015
 
OTN Tour 2014: Rac 11g vs 12c
OTN Tour 2014: Rac 11g vs 12cOTN Tour 2014: Rac 11g vs 12c
OTN Tour 2014: Rac 11g vs 12c
 
Fosdem 2014 - MySQL & Friends Devroom: 15 tips galera cluster
Fosdem 2014 - MySQL & Friends Devroom: 15 tips galera clusterFosdem 2014 - MySQL & Friends Devroom: 15 tips galera cluster
Fosdem 2014 - MySQL & Friends Devroom: 15 tips galera cluster
 
MySQL Group Replication - an Overview
MySQL Group Replication - an OverviewMySQL Group Replication - an Overview
MySQL Group Replication - an Overview
 
Galera Replication Demystified: How Does It Work?
Galera Replication Demystified: How Does It Work?Galera Replication Demystified: How Does It Work?
Galera Replication Demystified: How Does It Work?
 
Lessons Learned: Troubleshooting Replication
Lessons Learned: Troubleshooting ReplicationLessons Learned: Troubleshooting Replication
Lessons Learned: Troubleshooting Replication
 
Galera explained 3
Galera explained 3Galera explained 3
Galera explained 3
 
Highly Available MySQL/PHP Applications with mysqlnd
Highly Available MySQL/PHP Applications with mysqlndHighly Available MySQL/PHP Applications with mysqlnd
Highly Available MySQL/PHP Applications with mysqlnd
 
Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingPerformance Schema for MySQL Troubleshooting
Performance Schema for MySQL Troubleshooting
 
Webinar manage MySQL like a devops sysadmin
Webinar manage MySQL like a devops sysadminWebinar manage MySQL like a devops sysadmin
Webinar manage MySQL like a devops sysadmin
 

Viewers also liked

devops Days Belgium Ghent 2016
devops Days Belgium Ghent 2016devops Days Belgium Ghent 2016
devops Days Belgium Ghent 2016Frederic Descamps
 
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...Frederic Descamps
 
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeurs
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeursMySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeurs
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeursFrederic Descamps
 
Haute disponibilité my sql avec group réplication
Haute disponibilité my sql avec group réplicationHaute disponibilité my sql avec group réplication
Haute disponibilité my sql avec group réplicationFrederic Descamps
 
MySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group ReplicationMySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group ReplicationFrederic Descamps
 
Jeudis du Libre - MySQL comme Document Store
Jeudis du Libre - MySQL comme Document StoreJeudis du Libre - MySQL comme Document Store
Jeudis du Libre - MySQL comme Document StoreFrederic Descamps
 
Fosdem managing my sql with percona toolkit
Fosdem managing my sql with percona toolkitFosdem managing my sql with percona toolkit
Fosdem managing my sql with percona toolkitFrederic Descamps
 
Plmce2k15 15 tips galera cluster
Plmce2k15   15 tips galera clusterPlmce2k15   15 tips galera cluster
Plmce2k15 15 tips galera clusterFrederic Descamps
 
Loadays managing my sql with percona toolkit
Loadays managing my sql with percona toolkitLoadays managing my sql with percona toolkit
Loadays managing my sql with percona toolkitFrederic Descamps
 
Percon XtraDB Cluster in a nutshell
Percon XtraDB Cluster in a nutshellPercon XtraDB Cluster in a nutshell
Percon XtraDB Cluster in a nutshellFrederic Descamps
 
Advanced percona xtra db cluster in a nutshell... la suite plsc2016
Advanced percona xtra db cluster in a nutshell... la suite plsc2016Advanced percona xtra db cluster in a nutshell... la suite plsc2016
Advanced percona xtra db cluster in a nutshell... la suite plsc2016Frederic Descamps
 
MySQL High Availability with Group Replication
MySQL High Availability with Group ReplicationMySQL High Availability with Group Replication
MySQL High Availability with Group ReplicationNuno Carvalho
 
Jeudis du Libre - MySQL InnoDB Cluster
Jeudis du Libre - MySQL InnoDB ClusterJeudis du Libre - MySQL InnoDB Cluster
Jeudis du Libre - MySQL InnoDB ClusterFrederic Descamps
 

Viewers also liked (13)

devops Days Belgium Ghent 2016
devops Days Belgium Ghent 2016devops Days Belgium Ghent 2016
devops Days Belgium Ghent 2016
 
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
 
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeurs
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeursMySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeurs
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeurs
 
Haute disponibilité my sql avec group réplication
Haute disponibilité my sql avec group réplicationHaute disponibilité my sql avec group réplication
Haute disponibilité my sql avec group réplication
 
MySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group ReplicationMySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group Replication
 
Jeudis du Libre - MySQL comme Document Store
Jeudis du Libre - MySQL comme Document StoreJeudis du Libre - MySQL comme Document Store
Jeudis du Libre - MySQL comme Document Store
 
Fosdem managing my sql with percona toolkit
Fosdem managing my sql with percona toolkitFosdem managing my sql with percona toolkit
Fosdem managing my sql with percona toolkit
 
Plmce2k15 15 tips galera cluster
Plmce2k15   15 tips galera clusterPlmce2k15   15 tips galera cluster
Plmce2k15 15 tips galera cluster
 
Loadays managing my sql with percona toolkit
Loadays managing my sql with percona toolkitLoadays managing my sql with percona toolkit
Loadays managing my sql with percona toolkit
 
Percon XtraDB Cluster in a nutshell
Percon XtraDB Cluster in a nutshellPercon XtraDB Cluster in a nutshell
Percon XtraDB Cluster in a nutshell
 
Advanced percona xtra db cluster in a nutshell... la suite plsc2016
Advanced percona xtra db cluster in a nutshell... la suite plsc2016Advanced percona xtra db cluster in a nutshell... la suite plsc2016
Advanced percona xtra db cluster in a nutshell... la suite plsc2016
 
MySQL High Availability with Group Replication
MySQL High Availability with Group ReplicationMySQL High Availability with Group Replication
MySQL High Availability with Group Replication
 
Jeudis du Libre - MySQL InnoDB Cluster
Jeudis du Libre - MySQL InnoDB ClusterJeudis du Libre - MySQL InnoDB Cluster
Jeudis du Libre - MySQL InnoDB Cluster
 

Similar to OpenWorld 2014 - Schema Management: versioning and automation with Puppet and MySQL Utilities

Php &amp; my sql - how do pdo, mysq-li, and x devapi do what they do
Php &amp; my sql  - how do pdo, mysq-li, and x devapi do what they doPhp &amp; my sql  - how do pdo, mysq-li, and x devapi do what they do
Php &amp; my sql - how do pdo, mysq-li, and x devapi do what they doDave Stokes
 
MySQL Workbench for DFW Unix Users Group
MySQL Workbench for DFW Unix Users GroupMySQL Workbench for DFW Unix Users Group
MySQL Workbench for DFW Unix Users GroupDave Stokes
 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesShabir Ahmad
 
PowerShellForDBDevelopers
PowerShellForDBDevelopersPowerShellForDBDevelopers
PowerShellForDBDevelopersBryan Cafferky
 
Second Step to the NoSQL Side: MySQL JSON Functions
Second Step to the NoSQL Side: MySQL JSON FunctionsSecond Step to the NoSQL Side: MySQL JSON Functions
Second Step to the NoSQL Side: MySQL JSON FunctionsSveta Smirnova
 
Oracle Fusion Middleware provisioning with Puppet
Oracle Fusion Middleware provisioning with PuppetOracle Fusion Middleware provisioning with Puppet
Oracle Fusion Middleware provisioning with PuppetEdwin Biemond
 
Staying Sane with Drupal (A Develper's Survival Guide)
Staying Sane with Drupal (A Develper's Survival Guide)Staying Sane with Drupal (A Develper's Survival Guide)
Staying Sane with Drupal (A Develper's Survival Guide)Oscar Merida
 
Ansible is Our Wishbone(Automate DBA Tasks With Ansible)
Ansible is Our Wishbone(Automate DBA Tasks With Ansible)Ansible is Our Wishbone(Automate DBA Tasks With Ansible)
Ansible is Our Wishbone(Automate DBA Tasks With Ansible)M Malai
 
Ansible is Our Wishbone
Ansible is Our WishboneAnsible is Our Wishbone
Ansible is Our WishboneMydbops
 
Webinar - Setup MySQL with Puppet
Webinar - Setup MySQL with PuppetWebinar - Setup MySQL with Puppet
Webinar - Setup MySQL with PuppetOlinData
 
MySQL Document Store
MySQL Document StoreMySQL Document Store
MySQL Document StoreMario Beck
 
Introduction to Prometheus
Introduction to PrometheusIntroduction to Prometheus
Introduction to PrometheusJulien Pivotto
 
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
 
SDN Onboarding: Open vSwitch CLIs, OpenDaylight
SDN Onboarding: Open vSwitch CLIs, OpenDaylightSDN Onboarding: Open vSwitch CLIs, OpenDaylight
SDN Onboarding: Open vSwitch CLIs, OpenDaylightTelematika Open Session
 
Node object and roles - Fundamentals Webinar Series Part 3
Node object and roles - Fundamentals Webinar Series Part 3Node object and roles - Fundamentals Webinar Series Part 3
Node object and roles - Fundamentals Webinar Series Part 3Chef
 
Mysql User Camp : 20th June - Mysql New Features
Mysql User Camp : 20th June - Mysql New FeaturesMysql User Camp : 20th June - Mysql New Features
Mysql User Camp : 20th June - Mysql New FeaturesTarique Saleem
 
Mysql User Camp : 20-June-14 : Mysql New features and NoSQL Support
 Mysql User Camp : 20-June-14 : Mysql New features and NoSQL Support Mysql User Camp : 20-June-14 : Mysql New features and NoSQL Support
Mysql User Camp : 20-June-14 : Mysql New features and NoSQL SupportMysql User Camp
 
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...LEDC 2016
 

Similar to OpenWorld 2014 - Schema Management: versioning and automation with Puppet and MySQL Utilities (20)

Php &amp; my sql - how do pdo, mysq-li, and x devapi do what they do
Php &amp; my sql  - how do pdo, mysq-li, and x devapi do what they doPhp &amp; my sql  - how do pdo, mysq-li, and x devapi do what they do
Php &amp; my sql - how do pdo, mysq-li, and x devapi do what they do
 
MySQL Workbench for DFW Unix Users Group
MySQL Workbench for DFW Unix Users GroupMySQL Workbench for DFW Unix Users Group
MySQL Workbench for DFW Unix Users Group
 
Php
PhpPhp
Php
 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API Changes
 
PowerShellForDBDevelopers
PowerShellForDBDevelopersPowerShellForDBDevelopers
PowerShellForDBDevelopers
 
Second Step to the NoSQL Side: MySQL JSON Functions
Second Step to the NoSQL Side: MySQL JSON FunctionsSecond Step to the NoSQL Side: MySQL JSON Functions
Second Step to the NoSQL Side: MySQL JSON Functions
 
Oracle Fusion Middleware provisioning with Puppet
Oracle Fusion Middleware provisioning with PuppetOracle Fusion Middleware provisioning with Puppet
Oracle Fusion Middleware provisioning with Puppet
 
Staying Sane with Drupal (A Develper's Survival Guide)
Staying Sane with Drupal (A Develper's Survival Guide)Staying Sane with Drupal (A Develper's Survival Guide)
Staying Sane with Drupal (A Develper's Survival Guide)
 
Php
PhpPhp
Php
 
Ansible is Our Wishbone(Automate DBA Tasks With Ansible)
Ansible is Our Wishbone(Automate DBA Tasks With Ansible)Ansible is Our Wishbone(Automate DBA Tasks With Ansible)
Ansible is Our Wishbone(Automate DBA Tasks With Ansible)
 
Ansible is Our Wishbone
Ansible is Our WishboneAnsible is Our Wishbone
Ansible is Our Wishbone
 
Webinar - Setup MySQL with Puppet
Webinar - Setup MySQL with PuppetWebinar - Setup MySQL with Puppet
Webinar - Setup MySQL with Puppet
 
MySQL Document Store
MySQL Document StoreMySQL Document Store
MySQL Document Store
 
Introduction to Prometheus
Introduction to PrometheusIntroduction to Prometheus
Introduction to Prometheus
 
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
 
SDN Onboarding: Open vSwitch CLIs, OpenDaylight
SDN Onboarding: Open vSwitch CLIs, OpenDaylightSDN Onboarding: Open vSwitch CLIs, OpenDaylight
SDN Onboarding: Open vSwitch CLIs, OpenDaylight
 
Node object and roles - Fundamentals Webinar Series Part 3
Node object and roles - Fundamentals Webinar Series Part 3Node object and roles - Fundamentals Webinar Series Part 3
Node object and roles - Fundamentals Webinar Series Part 3
 
Mysql User Camp : 20th June - Mysql New Features
Mysql User Camp : 20th June - Mysql New FeaturesMysql User Camp : 20th June - Mysql New Features
Mysql User Camp : 20th June - Mysql New Features
 
Mysql User Camp : 20-June-14 : Mysql New features and NoSQL Support
 Mysql User Camp : 20-June-14 : Mysql New features and NoSQL Support Mysql User Camp : 20-June-14 : Mysql New features and NoSQL Support
Mysql User Camp : 20-June-14 : Mysql New features and NoSQL Support
 
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...
 

More from Frederic Descamps

MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...Frederic Descamps
 
RivieraJUG - MySQL Indexes and Histograms
RivieraJUG - MySQL Indexes and HistogramsRivieraJUG - MySQL Indexes and Histograms
RivieraJUG - MySQL Indexes and HistogramsFrederic Descamps
 
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
RivieraJUG - MySQL 8.0 - What's new for developers.pdfRivieraJUG - MySQL 8.0 - What's new for developers.pdf
RivieraJUG - MySQL 8.0 - What's new for developers.pdfFrederic Descamps
 
MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8Frederic Descamps
 
State of the Dolphin - May 2022
State of the Dolphin - May 2022State of the Dolphin - May 2022
State of the Dolphin - May 2022Frederic Descamps
 
Percona Live 2022 - MySQL Shell for Visual Studio Code
Percona Live 2022 - MySQL Shell for Visual Studio CodePercona Live 2022 - MySQL Shell for Visual Studio Code
Percona Live 2022 - MySQL Shell for Visual Studio CodeFrederic Descamps
 
Percona Live 2022 - The Evolution of a MySQL Database System
Percona Live 2022 - The Evolution of a MySQL Database SystemPercona Live 2022 - The Evolution of a MySQL Database System
Percona Live 2022 - The Evolution of a MySQL Database SystemFrederic Descamps
 
Percona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL ArchitecturesPercona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL ArchitecturesFrederic Descamps
 
LinuxFest Northwest 2022 - The Evolution of a MySQL Database System
LinuxFest Northwest 2022 - The Evolution of a MySQL Database SystemLinuxFest Northwest 2022 - The Evolution of a MySQL Database System
LinuxFest Northwest 2022 - The Evolution of a MySQL Database SystemFrederic Descamps
 
Open Source 101 2022 - MySQL Indexes and Histograms
Open Source 101 2022 - MySQL Indexes and HistogramsOpen Source 101 2022 - MySQL Indexes and Histograms
Open Source 101 2022 - MySQL Indexes and HistogramsFrederic Descamps
 
Pi Day 2022 - from IoT to MySQL HeatWave Database Service
Pi Day 2022 -  from IoT to MySQL HeatWave Database ServicePi Day 2022 -  from IoT to MySQL HeatWave Database Service
Pi Day 2022 - from IoT to MySQL HeatWave Database ServiceFrederic Descamps
 
Confoo 2022 - le cycle d'une instance MySQL
Confoo 2022  - le cycle d'une instance MySQLConfoo 2022  - le cycle d'une instance MySQL
Confoo 2022 - le cycle d'une instance MySQLFrederic Descamps
 
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
 
Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Frederic Descamps
 
Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Frederic Descamps
 
State of The Dolphin - May 2021
State of The Dolphin - May 2021State of The Dolphin - May 2021
State of The Dolphin - May 2021Frederic Descamps
 
Deploying Magento on OCI with MDS
Deploying Magento on OCI with MDSDeploying Magento on OCI with MDS
Deploying Magento on OCI with MDSFrederic Descamps
 
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...Frederic Descamps
 

More from Frederic Descamps (20)

MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
 
RivieraJUG - MySQL Indexes and Histograms
RivieraJUG - MySQL Indexes and HistogramsRivieraJUG - MySQL Indexes and Histograms
RivieraJUG - MySQL Indexes and Histograms
 
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
RivieraJUG - MySQL 8.0 - What's new for developers.pdfRivieraJUG - MySQL 8.0 - What's new for developers.pdf
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
 
MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8
 
State of the Dolphin - May 2022
State of the Dolphin - May 2022State of the Dolphin - May 2022
State of the Dolphin - May 2022
 
Percona Live 2022 - MySQL Shell for Visual Studio Code
Percona Live 2022 - MySQL Shell for Visual Studio CodePercona Live 2022 - MySQL Shell for Visual Studio Code
Percona Live 2022 - MySQL Shell for Visual Studio Code
 
Percona Live 2022 - The Evolution of a MySQL Database System
Percona Live 2022 - The Evolution of a MySQL Database SystemPercona Live 2022 - The Evolution of a MySQL Database System
Percona Live 2022 - The Evolution of a MySQL Database System
 
Percona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL ArchitecturesPercona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL Architectures
 
LinuxFest Northwest 2022 - The Evolution of a MySQL Database System
LinuxFest Northwest 2022 - The Evolution of a MySQL Database SystemLinuxFest Northwest 2022 - The Evolution of a MySQL Database System
LinuxFest Northwest 2022 - The Evolution of a MySQL Database System
 
Open Source 101 2022 - MySQL Indexes and Histograms
Open Source 101 2022 - MySQL Indexes and HistogramsOpen Source 101 2022 - MySQL Indexes and Histograms
Open Source 101 2022 - MySQL Indexes and Histograms
 
Pi Day 2022 - from IoT to MySQL HeatWave Database Service
Pi Day 2022 -  from IoT to MySQL HeatWave Database ServicePi Day 2022 -  from IoT to MySQL HeatWave Database Service
Pi Day 2022 - from IoT to MySQL HeatWave Database Service
 
Confoo 2022 - le cycle d'une instance MySQL
Confoo 2022  - le cycle d'une instance MySQLConfoo 2022  - le cycle d'une instance MySQL
Confoo 2022 - le cycle d'une instance MySQL
 
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-...
 
Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0
 
Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0
 
State of The Dolphin - May 2021
State of The Dolphin - May 2021State of The Dolphin - May 2021
State of The Dolphin - May 2021
 
MySQL Shell for DBAs
MySQL Shell for DBAsMySQL Shell for DBAs
MySQL Shell for DBAs
 
Deploying Magento on OCI with MDS
Deploying Magento on OCI with MDSDeploying Magento on OCI with MDS
Deploying Magento on OCI with MDS
 
MySQL Router REST API
MySQL Router REST APIMySQL Router REST API
MySQL Router REST API
 
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
 

Recently uploaded

Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 nightCheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 nightDelhi Call girls
 
Vip Model Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...
Vip Model  Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...Vip Model  Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...
Vip Model Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...shivangimorya083
 
BabyOno dropshipping via API with DroFx.pptx
BabyOno dropshipping via API with DroFx.pptxBabyOno dropshipping via API with DroFx.pptx
BabyOno dropshipping via API with DroFx.pptxolyaivanovalion
 
VidaXL dropshipping via API with DroFx.pptx
VidaXL dropshipping via API with DroFx.pptxVidaXL dropshipping via API with DroFx.pptx
VidaXL dropshipping via API with DroFx.pptxolyaivanovalion
 
Midocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFxMidocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFxolyaivanovalion
 
Market Analysis in the 5 Largest Economic Countries in Southeast Asia.pdf
Market Analysis in the 5 Largest Economic Countries in Southeast Asia.pdfMarket Analysis in the 5 Largest Economic Countries in Southeast Asia.pdf
Market Analysis in the 5 Largest Economic Countries in Southeast Asia.pdfRachmat Ramadhan H
 
Discover Why Less is More in B2B Research
Discover Why Less is More in B2B ResearchDiscover Why Less is More in B2B Research
Discover Why Less is More in B2B Researchmichael115558
 
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
Ravak dropshipping via API with DroFx.pptx
Ravak dropshipping via API with DroFx.pptxRavak dropshipping via API with DroFx.pptx
Ravak dropshipping via API with DroFx.pptxolyaivanovalion
 
Week-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interactionWeek-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interactionfulawalesam
 
Mature dropshipping via API with DroFx.pptx
Mature dropshipping via API with DroFx.pptxMature dropshipping via API with DroFx.pptx
Mature dropshipping via API with DroFx.pptxolyaivanovalion
 
Introduction-to-Machine-Learning (1).pptx
Introduction-to-Machine-Learning (1).pptxIntroduction-to-Machine-Learning (1).pptx
Introduction-to-Machine-Learning (1).pptxfirstjob4
 
Generative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and MilvusGenerative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and MilvusTimothy Spann
 
April 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's AnalysisApril 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's Analysismanisha194592
 
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
Log Analysis using OSSEC sasoasasasas.pptx
Log Analysis using OSSEC sasoasasasas.pptxLog Analysis using OSSEC sasoasasasas.pptx
Log Analysis using OSSEC sasoasasasas.pptxJohnnyPlasten
 

Recently uploaded (20)

Call Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts Service
Call Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts ServiceCall Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts Service
Call Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts Service
 
Delhi 99530 vip 56974 Genuine Escort Service Call Girls in Kishangarh
Delhi 99530 vip 56974 Genuine Escort Service Call Girls in  KishangarhDelhi 99530 vip 56974 Genuine Escort Service Call Girls in  Kishangarh
Delhi 99530 vip 56974 Genuine Escort Service Call Girls in Kishangarh
 
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 nightCheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
 
Vip Model Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...
Vip Model  Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...Vip Model  Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...
Vip Model Call Girls (Delhi) Karol Bagh 9711199171✔️Body to body massage wit...
 
BabyOno dropshipping via API with DroFx.pptx
BabyOno dropshipping via API with DroFx.pptxBabyOno dropshipping via API with DroFx.pptx
BabyOno dropshipping via API with DroFx.pptx
 
VidaXL dropshipping via API with DroFx.pptx
VidaXL dropshipping via API with DroFx.pptxVidaXL dropshipping via API with DroFx.pptx
VidaXL dropshipping via API with DroFx.pptx
 
Midocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFxMidocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFx
 
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Market Analysis in the 5 Largest Economic Countries in Southeast Asia.pdf
Market Analysis in the 5 Largest Economic Countries in Southeast Asia.pdfMarket Analysis in the 5 Largest Economic Countries in Southeast Asia.pdf
Market Analysis in the 5 Largest Economic Countries in Southeast Asia.pdf
 
Discover Why Less is More in B2B Research
Discover Why Less is More in B2B ResearchDiscover Why Less is More in B2B Research
Discover Why Less is More in B2B Research
 
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
Ravak dropshipping via API with DroFx.pptx
Ravak dropshipping via API with DroFx.pptxRavak dropshipping via API with DroFx.pptx
Ravak dropshipping via API with DroFx.pptx
 
Week-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interactionWeek-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interaction
 
Mature dropshipping via API with DroFx.pptx
Mature dropshipping via API with DroFx.pptxMature dropshipping via API with DroFx.pptx
Mature dropshipping via API with DroFx.pptx
 
Introduction-to-Machine-Learning (1).pptx
Introduction-to-Machine-Learning (1).pptxIntroduction-to-Machine-Learning (1).pptx
Introduction-to-Machine-Learning (1).pptx
 
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get CytotecAbortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
 
Generative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and MilvusGenerative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and Milvus
 
April 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's AnalysisApril 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's Analysis
 
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
Log Analysis using OSSEC sasoasasasas.pptx
Log Analysis using OSSEC sasoasasasas.pptxLog Analysis using OSSEC sasoasasasas.pptx
Log Analysis using OSSEC sasoasasasas.pptx
 

OpenWorld 2014 - Schema Management: versioning and automation with Puppet and MySQL Utilities

  • 1. Schema Management: Versioning and Automation with Puppet and MySQL Utilities Oracle Open World 2014 : MySQL Central Frédéric Descamps
  • 2. Who am I ? ● Frédéric Descamps «lefred» ● @lefred ● http://about.me/lefred ● within Percona since 2011 ● managing MySQL since 3.23 (as far as I remember) ● devops believer
  • 3. We live in a devops world o/ Oracle Open World 2014 : MySQL Central -3-
  • 4. devops ? we can say that devops is bringing together people and practices from development and operations Oracle Open World 2014 : MySQL Central
  • 5. devops ? we can say that devops is bringing together people and practices from development and operations I am a happy dev !I am a happy op ! Oracle Open World 2014 : MySQL Central
  • 6. CAMS ● devops is about CAMS – Culture – Automation – Measurement – Sharing @botchagalupe @damonedwards http://www.opscode.com/blog/2010/07/16/what-devops-means-to-me/ Oracle Open World 2014 : MySQL Central
  • 7. This talk is about automation ● What techniques can I use ? – Infrastructure as Code – Continuous Improvement Oracle Open World 2014 : MySQL Central
  • 8. WE are already between devs and ops Oracle Open World 2014 : MySQL Central
  • 9. WE are already between devs and ops Oracle Open World 2014 : MySQL Central I am a happy DBA !
  • 10. so... AUTOMATION ● Can we automate DBAs job ? ● Should we ?? ● Even if we have only one database ? Oracle Open World 2014 : MySQL Central
  • 11. ● Everything needs to be reproducible Oracle Open World 2014 : MySQL Central
  • 12. What do we «usually» automate ? ● binaries installation (which version of MySQL) ● configuration (my.cnf ?) ● cron jobs ● monitoring ● databases (schemas) ● grants ● replication ? Oracle Open World 2014 : MySQL Central
  • 13. Infrastructure as code ● So to automate all these tasks a multiplicity of projects appeared on the web: – puppet – chef – cfengine – ansible – saltstack – ... Oracle Open World 2014 : MySQL Central
  • 14. let's focus on Puppet ● we will install MySQL on a new node or or Oracle Open World 2014 : MySQL Central
  • 15. let's focus on Puppet ● we will install MySQL on a new node 5.5 or 5.6 or 10.0 or 5.7 ? Oracle Open World 2014 : MySQL Central
  • 16. let's focus on Puppet ● Puppet recipes will take care of the OS or Oracle Open World 2014 : MySQL Central
  • 17. let's focus on Puppet ● Puppet recipes will take care of the OS or Oracle Open World 2014 : MySQL Central case $::osfamily {      'RedHat': {            $require = Yumrepo['mysql­repo']       }       'Debian': {            $require = Apt::Source['mysql­repo']       } }
  • 19. puppet (continue) ● And we can automate many things like schema creation, grants: mysql::db { $graphite_db_name:       user     => $graphite_db_user,       password => $graphite_db_password,       host     => $graphite_db_host,       grant    => ['SELECT', 'UPDATE'],          } Oracle Open World 2014 : MySQL Central
  • 20. puppet: MySQL modules ● You can find many MySQL modules for puppet: – https://github.com/olindata/puppetlabs-mysql – https://github.com/lefred/puppet-lefred-mysql Oracle Open World 2014 : MySQL Central
  • 21. and now ? ● can we go further ? ● what could we automate ? ● schemas ! – using mysqldump ? – using frameworks ? Oracle Open World 2014 : MySQL Central
  • 22. but... automation ! ● we want this automated ● easy to test multiple times in development, staging, ... ● to use in production ● and if possible to rollback easily if needed ! v1 v2 Oracle Open World 2014 : MySQL Central
  • 23. Database Schema Migration Tools ● There are some existing tools: – Liquibase – Flyway – c5-db-migration – dbdeploy – MyBatis – Autopatch – Sqitch Oracle Open World 2014 : MySQL Central
  • 24. Database Schema Migration Tools Most of them are... Integrated with a framework or an ORM Oracle Open World 2014 : MySQL Central
  • 25. Database Schema Migration Tools Most of them are... for JAVA applications Oracle Open World 2014 : MySQL Central
  • 26. Database Schema Migration Tools Most of them use... XML definitions Oracle Open World 2014 : MySQL Central
  • 27. XML Definitions ● What is easier to read and maintain for us, DBAs ? Oracle Open World 2014 : MySQL Central <?xml version="1.0" encoding="UTF­8"?>   <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema­instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog­2.0.xsd">   <changeSet id="1" author="lefred"> <createTable tableName="department"> <column name="id" type="int"> <constraints primaryKey="true" nullable="false"/> </column> <column name="name" type="varchar(50)"> <constraints nullable="false"/> </column> <column name="active" type="boolean" defaultValueBoolean="true"/> </createTable> </changeSet>   </databaseChangeLog>
  • 28. XML Definitions ● or this ? Oracle Open World 2014 : MySQL Central CREATE TABLE department ( id INT NOT NULL PRIMARY KEY, name VARCHAR(50) NOT NULL );
  • 29. Database Schema Migration Tools most of them are... blocking schema changes Oracle Open World 2014 : MySQL Central
  • 30. Database Schema Migration Tools and finally... not designed to be used via a configuration management system Oracle Open World 2014 : MySQL Central
  • 31. so are we blocked ? NO ! ● Oracle's MySQL-Utilities ● Percona Toolkit ● a standalone Python script ● a new Puppet type and provider Oracle Open World 2014 : MySQL Central
  • 32. Oracle's MySQL-Utilities ● toolkit that was generally distributed via MySQL Workbench ● Dec 7th 2010 : v 1.0.0 ● Aug 20th 2014: v.1.5.1 RC ● it contains a package of tools used for maintenance and administration of MySQL servers ● they are written in Python ● the utilities are command line commands and a Python library Oracle Open World 2014 : MySQL Central
  • 33. Oracle's MySQL-Utilities (2) ● Utilities can help for – database operations: provision a slave, copy a db, diff tables, synchronize tables – general operations: find disk space used, table structure, duplicate users, work on indexes, find database objects matching patterns – HA operations: add a slave, setup failover, find slaves, check replication – server operations: make a temp copy of the server, use secure connection – «specialized operations»: record login events, copy/move audit log, show failed queries, show connections Oracle Open World 2014 : MySQL Central
  • 34. What are the interresting tools for us ● mysqldbcompare — compares two databases and identify differences (objects, row counts, data concistency) ● mysqldiff — identifies differences among database objects ● And all those options can be integrated into a Python script using the library Oracle Open World 2014 : MySQL Central
  • 35. Percona-Toolkit ● collection of advanced command-line tools ● Aug 6th 2014: v2.2.10 ● They can do a lot of useful tasks like table checksum and synchronization, delay slave on version where it wasn't implemented yet, digest the queries ● But for us, the most important: pt­online­schema­change Oracle Open World 2014 : MySQL Central
  • 36. pt-online-schema-change ● this tool allows to alter a table's structure without blocking reads or writes ● the tool works on a copy of the table you wish to alter ● switches them at the end of the process ● and delete the original one
  • 37. online-migration.py ● standalone Python script ● command line only no GUI sorry ;-) ● uses Oracle's MySQL-Utilities library ● uses pt-online-schema-change ● uses normal SQL statements that all DBAs understand ● can be integrated in Puppet Oracle Open World 2014 : MySQL Central
  • 38. what can it do ? ● The script is able to – return the schema version of a database – list all versions and their status – migrate up – migrate down (rollback a migration) – checksum the schema – return the difference between expected schema and installed schema Oracle Open World 2014 : MySQL Central
  • 39. and in Puppet ? node percona1 {  include mysql  include mysql::server  include mysql::utilities  include mysql::percona_toolkit  include online­migration         Class['percona::repository'] ­> Class['percona::server']         mysql_schema { "world":                      ensure  => present,          require => [ Package["online­migration"],     Service['mysql'] ],                      version => 2,                       cwd     => "/root/om",         }         ... } Oracle Open World 2014 : MySQL Central
  • 40. and in Puppet ? node percona1 {  include mysql  include mysql::server  include mysql::utilities  include mysql::percona_toolkit  include online­migration         Class['percona::repository'] ­> Class['percona::server']         mysql_schema { "world":                      ensure  => present,          require => [ Package["online­migration"],     Service['mysql'] ],                      version => 2,                       cwd     => "/root/om",         }         ... } Oracle Open World 2014 : MySQL Central ... info: Mysql_schema[world](provider=mysql_schema): performing the check, last_version is 1 info: Mysql_schema[world](provider=mysql_schema): we need to migrate to another version (2) info: Mysql_schema[world](provider=mysql_schema): performing the migration ...
  • 41. online-migration.py internals ● uses a dedicated table : online_migration.migration_sys – it contains some meta data like db, version, apply date, status – created by: online­migration.py init_sysdb – first entry is version 0 and is created by the «init» command ● uses a folder with meta-data: – XXXX­up.meta: meta data required to upgrade to version XXXX, like version, checksum and comment – XXXX­up.mig: contains the required changes/statements – XXXX­down.mig: contains the automated reverse statements
  • 42. online-migration.py: features ● versioning and status $ online­migration.py status world Migration of schema world : +­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+ | VERSION | APPLIED             | STATUS           | COMMENT                | +­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+ |    0000 | 2014­09­22 09:17:16 |               ok |           Initial file | |    0001 |                none |          pending |                   none | |    0002 |                none |          pending |                   none | |    0003 |                none |          pending | add nice column to cit | +­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+
  • 43. online-migration.py: features (2) ● migration up $ online­migration.py up world to 3 INFO : You want to migrate up to version 0003 INFO : Ok this version is pending INFO : Preparing migration to version 0001 INFO : Applied changes match the requested schema INFO : Preparing migration to version 0002 INFO : Applied changes match the requested schema INFO : Preparing migration to version 0003 INFO : Applied changes match the requested schema $ online­migration.py status world Migration of schema world : +­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+ | VERSION | APPLIED             | STATUS           |                COMMENT | +­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+ |    0000 | 2014­09­22 09:17:16 |               ok |           Initial file | |    0001 | 2014­09­22 09:17:46 |               ok |                   none | |    0002 | 2014­09­22 09:18:24 |               ok |                   none | |    0003 | 2014­09­22 09:18:36 |               ok | add nice column to cit | +­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+
  • 44. online-migration.py: features (3) ● checksum $ online­migration.py status world Migration of schema world : +­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+ | VERSION | APPLIED             | STATUS           |                COMMENT | +­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+ |    0000 | 2014­09­22 09:17:16 |               ok |           Initial file | |    0001 | 2014­09­22 09:17:46 | checksum problem |                   none | +­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+ $ online­migration.py checksum world world's current schema checksum = 3239e7245d98d27681020e36d0085676
  • 45. online-migration.py: features (4) ● migration down (rollback) $ online­migration.py down world 2 INFO : You want to migrate down 2 version(s) INFO : rollback from 0003 to 0002 INFO : rollback from 0002 to 0001 $ online­migration.py status world Migration of schema world : +­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+ | VERSION | APPLIED             | STATUS           |                COMMENT | +­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+ |    0000 | 2014­09­22 09:17:16 |               ok |           Initial file | |    0001 | 2014­09­22 09:17:46 |               ok |                   none | |    0002 | 2014­09­22 09:18:24 |         rollback |                   none | |    0003 | 2014­09­22 09:18:36 |         rollback | add nice column to cit | |    0002 |                none |          pending |                   none | |    0003 |                none |          pending | add nice column to cit | +­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­+
  • 46. online-migration.py: features (5) ● schema diff $ online­migration.py diff world WARNING : Schema of world doesn't have expected checksum (4478d85870969436400bac023f2b2b7c) TABLE `City` ­ `CountryCode` varchar(10) DEFAULT NULL, + `CountryCode` char(3) NOT NULL DEFAULT '',
  • 47. todo ● Make the code more robust (handling errors) ● Write support for store procedures, functions,... ● Support online DDL (ALGORITHM=INPLACE) ● Add configuration file
  • 48. Resources ● Oracle MySQL — http://dev.mysql.com/downloads/mysql/ ● MySQL-Utilities — http://dev.mysql.com/downloads/utilities/ ● Percona-Toolkit - http://www.percona.com/doc/percona- toolkit/2.2/index.html ● pt-online-schema-change — http://www.percona.com/doc/percona- toolkit/2.2/pt-online-schema-change.html ● puppet — http://puppetlabs.com ● online-migration.py — https://github.com/lefred/online-migration Oracle Open World 2014 : MySQL Central
  • 49. Thank you Questions ? Oracle Open World 2014 : MySQL Central