40
MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia

MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith ([email protected]) HP Advanced Technology Group

Embed Size (px)

Citation preview

Page 1: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

MySQL and Docker Strategies PatrickGalbraithGiuseppeMaxia

Page 2: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

About the speakers ●  PatrickGalbraith([email protected])●  HPAdvancedTechnologyGroup●  HasworkedatBlueGecko,MySQLAB,Classmates,

Slashdot,CobaltGroup,USNavy,K-mart●  MySQLprojects:memcachedUDFs,DBD::mysql,federated

storageengine●  NewtechnologiesandautomaRon●  Family●  Outdoors

Page 3: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

About the speakers GiuseppeMaxia,a.k.a."TheDataCharmer"

QAArchitectatVMware25+yearsdevelopmentandDBexperienceLongRmerMySQLcommunitymember.

OracleACEDirectorBlog:hZp://datacharmer.blogspot.com

TwiZer:@datacharmer

Page 4: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

What are containers?

Server

HostOS

Hypervisor

GuestOS

GuestOS

GuestOS

Bins/Libs

Bins/Libs

Mysql

Bins/Libs

Mysql App

Server

HostOS

Bins/LibsBins/Libs

Mysql

Mysql

App

App

App

Mysql D

ocker

VM Containers

Page 5: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Containers vs. VMs

● MulRpleisolateduserspaceinstances●  OnlylibrariesandcomponentsneededforapplicaRon●  Runsonthesamekernel(usingCgroups).● Muchsmaller,easiertopackage●  VERYfasttostart!●  Containerrunsusing(a)specificprocess(es)●  SSHnotneeded●  Securitylimitedtoapp

Page 6: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

What is Docker? ●  Bothadaemonandacommandlinetool●  ApplicaRonthatmanagescontainers(CLI,API)●  AutomatesthedeploymentofapplicaRonsinsidesoawarecontainers

● WriZeninGo,OpensourcedotCloud●  Usesunionfilesystem(AUFS)●  CanuseCLItosearchDockerreposforimages●  Usedtobe‘awsomesauce’aroundlxc,nowusinglibcontainer

●  No“dependencyhell”

Page 7: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Two ways to Docker •  FortesRng

•  Quickmanualdeployment(1–10containers)•  EasyconfiguraRon•  Rapiddeploy-test-destroy-retrycycle• Workseverywhere

•  ForproducRon•  Quicktool-assisteddeployment(100,1000,…Ncontainers)•  Maintainedbyorchestrators•  Perishablebydefault•  Easytoreplace

Page 8: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Virtual Machines

Page 9: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Containers

Page 10: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Docker concepts

Page 11: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Giuseppe’s Agenda (20 min)

• DifferencebetweenVMsandContainers(Patrick)•  Twocasesforcontainers(testandprod)•  Sevenkeypoints(fullsystem–Linux–minimal–passwords–isolaRon–volumes–configuraRon)•  Sharedvolumeforbackup•  Simpleexample• Morecomplexexample•  InspecRngacontainer•  (Quickdemo)

Page 12: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Installing Docker

1.  GOTOhZps://docs.docker.com/engine/installaRon/2.  FollowtheinstrucRonsforyourO.S.

Page 13: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

First off: get the MySQL image $ docker pull mysql/mysql-server Using default tag: latest latest: Pulling from mysql/mysql-server 5e7ce0e805ba: Pull complete 4b9736773855: Pull complete 4fb9c55b1f85: Pull complete 19452ca711c2: Pull complete 0c660f33db44: Pull complete b8e96405c8c7: Pull complete 9bdbb574fa66: Pull complete 24c2343e048d: Pull complete Digest: sha256:da24eddcb99cbeba979d7da8170991278ca59838401a7c7bf17c66307acc641c Status: Downloaded newer image for mysql/mysql-server:latest

Page 14: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

SEVEN key points

Page 15: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

#1 - Containers are FULL systems

•  Everycontainercontainsanexecutablelayer•  It'safullO.S.

Page 16: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

#2 – Containers are always Linux

•  Linuxflavorinthecontainerisindependentfromthehost• ButtheyhaveacompaRblekernel•  That’swhycontainersarefasterthanVMs

Page 17: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

#3 – The O.S. in the container is minimal

• Don’texpectallthetoolsyougetfromaUbuntuDVD•  YouwillhaveonlythebareessenRals

Page 18: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

#4 – MySQL installaYon requires a password

•  Securityvariesdependingonthemaintainer•  Youmayusefiles(recommended)•  Youmaygeneratearandompassword(don’t)

Page 19: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

#5 – Containers are ISOLATED

•  YoucanaccesscontainerizedMySQLfromothercontainers•  Youneedexplicitaccessfromtheexterior.

Page 20: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

#6 – Data storage can be tricky

• Bydefault,thedatadirectoryisinsidethecontainer• ContainersarevolaRlebydefaultandbydesign•  Youmustusevolumestopreserveyourdata

Page 21: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

#7 – ConfiguraYon is done by adding files

• WithVM,youdeployandthenconfigure.ThistakesRme• Withcontainer,youdeployandaddconfiguraRonfileson-the-fly• Containersarereadytoworkfromthestart.

Page 22: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Examples

Page 23: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Simple MySQL deployment

docker run \ --name mybox \ -e MYSQL_ROOT_PASSWORD=secret \ -d \ mysql/mysql-server 06d3392543500455adcfe6cba36736739c46688de8028647d38109c0ec3cf250 # WILL RUN WITH DEFAULT VALUES

Page 24: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Adding log-bin and server-id (1)

## OPTION 1 : on the command line docker run \

--name mybox \

-e MYSQL_ROOT_PASSWORD=secret \

-d \

mysql/mysql-server --log-bin --server-id=100

Page 25: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Adding log-bin and server-id (2) ## OPTION 2 : with a "volume" file $ cat minimal.cnf [mysqld] user=mysql log-bin=mysql-bin server-id=100 $ docker run \ --name mybox \ -e MYSQL_ROOT_PASSWORD=secret \ -d --hostname mybox \ -v $PWD/minimal.cnf:/etc/my.cnf mysql/mysql-server

Page 26: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

InspecYng a container

docker exec -ti mybox bash [root@mybox /]# mysql -p Enter password: [...] Server version: 5.7.11-log MySQL Community Server (GPL) [...] mysql> select @@server_id; +-------------+ | @@server_id | +-------------+ | 100 | +-------------+ 1 row in set (0.00 sec)

Page 27: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Shared backup with containers

database server

Physical hostshared folder

Shared container

database server

database server

Page 28: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Shared backup with containers

$ docker create -v /dbdata \ --name dbdata mysql/mysql-server /bin/true

$ docker run --name mysql1 \

-e MYSQL_ROOT_PASSWORD=secret \

--volumes-from dbdata -d mysql/mysql-server

$ docker run --name mysql2 \

-e MYSQL_ROOT_PASSWORD=secret \

--volumes-from dbdata -d mysql/mysql-server

Page 29: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Demo

Page 30: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Shared backup with containers

$ docker create -v /dbdata \ --name dbdata mysql/mysql-server /bin/true

$ docker run --name mysql1 \

-e MYSQL_ROOT_PASSWORD=secret \

--volumes-from dbdata -d mysql/mysql-server

$ docker run --name mysql2 \

-e MYSQL_ROOT_PASSWORD=secret \

--volumes-from dbdata -d mysql/mysql-server

Page 31: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Container AutomaYon

• Ansible(hZp://docs.ansible.com/ansible/docker_module.html) •  YAML• Defineanynumberofcontainers• Variousansiblemodulesforbuilding,running,andfact-gatheringandservicediscoveryofcontainersaswellasmanagingimages• dynamicinventoryplugin.

• DockerCompose(hZps://docs.docker.com/compose/)• DefineandrunmulRplecontainerizedapplicaRons

Page 32: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Container AutomaYon (cont)

• Chef(hZps://docs.chef.io/containers.html)•  Dockercookbook--installandmanageDocker,managecontainersandimages•  Etcdandconsulcookbooks–servicediscovery

• Puppet(hZps://forge.puppet.com/puppetlabs/docker_plaporm) • Packer(hZps://www.packer.io)

•  creaRngidenRcalmachineimagesformulRpleplapormsfromasinglesourceconfiguraRon

Page 33: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Ansible Example ---

- hosts: "{{ target|default('docker') }}”

sudo: false

tasks:

- name: run db1 container

local_action:

module: docker

name: db1

pull: missing

Page 34: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Ansible Example (cont) image: registry-host:443/db-img hostname: db1

state: started

restart_policy: always

volumes:

- /var/data/db1-data:/var/lib/mysql

- /var/data/backups:/var/data/site/backups

- /home:/home

detach: True

ansible-playbook –i inv.txt db1.yaml

Page 35: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Container Clustering

• Kubernetes--hZp://kubernetes.io/• CoreOS--hZps://coreos.com/ •  Swarm--hZps://docs.docker.com/swarm/overview/• Mesos--hZp://mesos.apache.org/ • RancherOS--hZp://rancher.com/rancher-os/ • Deis--hZp://deis.io/ • Kupack• Redspread• KPM

Page 36: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Kubernetes

Page 37: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Galera on Kubernetes

Apiserver

pxc_node1pod

pxc_node2pod

pxc_node3pod

pxccontainer pxccontainer pxccontainer

pxc_node1service

pxc_node2service

pxc_node3service

pxc_clusterservice

pxc_node1podandservicefile

pxc_node2podandservicefile

pxc_node3podandservicefile

kubectl

pxc_clusterServicefile

Formoreinfo…4:30pmto5:20pmBallroomA

Page 38: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Demo

Page 39: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

Summary

•  Technologyrapidlyevolving• Containersgoodforprototyping(manually)• AndforproducRon(withtools)• GreatfordistribuRngsoaware(dev&produsethesamebits)• NOTvirtualmachines(eveniftheyplayoneonTV)

Page 40: MySQL and Docker Strategies - Percona · MySQL and Docker Strategies Patrick Galbraith Giuseppe Maxia About the speakers Patrick Galbraith (patg@patg.net) HP Advanced Technology Group

More on this topic

• hZp://www.datacharmer.blogspot.com/• hZp://patg.net