MySQL DBA Swiss Army Knife

Transcription

MySQL DBA Swiss Army Knife
MySQL DBA Swiss Army Knife
Percona Live London 2011
Who am I ?
Frédéric Descamps
@lefred
http://about.be/lefred
Percona Consultant
Managing mysql since 3.23 (as far as I
remember)
devops believer
www.percona.com
Thank You to Our Sponsors
Platinum Sponsor
Gold Sponsor
Silver Sponsors
www.percona.com
Percona Live London Sponsors
Exhibitor Sponsors
Friends of Percona Sponsors
Media Sponsors
www.percona.com
www.percona.com
www.percona.com
prerequisites
Laptop
●
VirtualBox
●
The tutorial vm's
●
Everything but the laptop is on the key
www.percona.com
prerequisites
www.percona.com
prerequisites
www.percona.com
Agenda
Know you environment
●
Know the evolution of your environment
●
Save your environment
●
Maintain your environment
●
www.percona.com
Know your environment:
Operating System
www.percona.com
11
Know your environment (OS)
We need to find the answers to these questions:
●
●
●
●
●
●
●
●
●
On what kind of machine runs my db ? Physical/Virtual ?
How much memory is used/free ? Does it swap ? Can I add more ?
How many cores ?
Is this a 64bit machine ?
How many disks ?
Do we have a RAID controller ? Which RAID level ?
What are my IOPS ?
Which IO scheduler is in use ?
On which filesystem is the data stored ?
www.percona.com
12
Toolbox
The first tool is part of Percona Toolkit.
Percona Toolkit is a collection of
advanced command-line tools to perform
a variety of MySQL and system tasks that
are too difficult or complex to perform
manually.
www.percona.com
13
Percona Toolkit
●
●
●
●
Percona Toolkit is derived from Maatkit
and Aspersa, two of the best-known
toolkits for MySQL server administration. It
is developed and supported by Percona
Inc.
Opensource GNU GPL v2
https://launchpad.net/percona-toolkit
http://www.percona.com/software/percona-toolkit/
www.percona.com
14
Tool #1
Name: pt-summary
Function: summarize system information
in a nice way
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-summary.html
www.percona.com
15
Exercises
Start kermit virtual machine, login and
run pt­summary
Login: pluk
Password: pluk2k11
www.percona.com
16
Back to our questions
●
●
●
●
●
●
●
●
●
On what kind of machine runs my db ?
Physical/Virtual ?
How much memory is used/free ? Does it swap ?
Can I add more ?
How many cores ?
Is this a 64bit machine ?
How many disks ?
Do we have a RAID controller ? Which RAID level ?
What are my IOPS ?
Which IO scheduler is in use ?
On which filesystem is the data stored ?
www.percona.com
17
Tool #2
The tool #2 is more a set of tools to use
depending of your raid controller.
Name: MegaCli | megactl | arcconf | ?
Function: find information about raid, disk
AND write cache policy
www.percona.com
18
MegaCli
Get some general information
about the controller's capabilities
www.percona.com
19
Example (Dell PowerEdge Expandable RAID
controller 5)
$ MegaCli ­AdpAllInfo ­aALL
Adapter #0
==============================================================================
Versions
================
Product Name : PERC 5/i Integrated
Serial No : 12345
FW Package Build: 5.2.2­0072
Mfg. Data
================
Mfg. Date : 00/00/00
Rework Date : 00/00/00
Revision No : @��A
Battery FRU : N/A
Image Versions In Flash:
================
Boot Block Version : R.2.3.12
BIOS Version : MT28­9
MPT Version : MPTFW­00.10.62.00­IT
FW Version : 1.03.50­0461
WebBIOS Version : 1.03­04
Ctrl­R Version : 1.04­019A
www.percona.com
20
Example (2)
Pending Images In Flash
================
None
PCI Info
================
Vendor Id : 1028
Device Id : 0015
SubVendorId : 1028
SubDeviceId : 1f03
Host Interface : PCIE
Number of Frontend Port: 0 Device Interface : PCIE
Number of Backend Port: 8 Port : Address
0 1221000000000000 1 1221000001000000 2 1221000002000000 3 1221000003000000 4 1221000004000000 5 1221000005000000 6 0000000000000000 7 0000000000000000
www.percona.com
21
Example (3)
HW Configuration
================
SAS Address : 5001e4f017ce7a00
BBU : Present
Alarm : Absent
NVRAM : Present
Serial Debugger : Present
Memory : Present
Flash : Present
Memory Size : 256MB
www.percona.com
22
Example (4)
Settings
================
Current Time : 2:26:38 7/6, 2011
Predictive Fail Poll Interval : 300sec
Interrupt Throttle Active Count : 16
Interrupt Throttle Completion : 50us
Rebuild Rate : 30%
PR Rate : 30%
Resynch Rate : 30%
Check Consistency Rate : 30%
Reconstruction Rate : 30%
Cache Flush Interval : 4s
Max Drives to Spinup at One Time : 2
Delay Among Spinup Groups : 12s
Physical Drive Coercion Mode : 128MB
Cluster Mode : Disabled
Alarm : Disabled
Auto Rebuild : Enabled
Battery Warning : Enabled
Ecc Bucket Size : 15
Ecc Bucket Leak Rate : 1440 Minutes
Restore HotSpare on Insertion : Disabled
Expose Enclosure Devices : Disabled
Maintain PD Fail History : Disabled
Host Request Reordering : Enabled
Auto Detect BackPlane Enabled : SGPIO/i2c SEP
Load Balance Mode : Auto
www.percona.com
23
Example (5)
Capabilities
================
RAID Level Supported : RAID0, RAID1, RAID5, RAID10, RAID50
Supported Drives : SAS, SATA
Allowed Mixing:
Mix In Enclosure Allowed
Status
================
ECC Bucket Count : 0
Limitations
================
Max Arms Per VD : 32 Max Spans Per VD : 8 Max Arrays : 128 Max Number of VDs : 64 Max Parallel Commands : 1008 Max SGE Count : 80 Max Data Transfer Size : 8192 sectors Max Strips PerIO : 84 Min Stripe Size : 8kB
Max Stripe Size : 128kB
www.percona.com
24
Example (6)
Device Present
================
Virtual Drives : 3 Degraded : 0 Offline : 0 Physical Devices : 7 Disks : 6 Critical Disks : 0 Failed Disks : 0 Supported Adapter Operations
================
Rebuild Rate : Yes
CC Rate : Yes
BGI Rate : Yes
Reconstruct Rate : Yes
Patrol Read Rate : Yes
Alarm Control : Yes
Cluster Support : No
BBU : Yes
Spanning : Yes
Dedicated Hot Spare : Yes
Revertible Hot Spares : No
Foreign Config Import : Yes
Self Diagnostic : Yes
Allow Mixed Redundancy on Array : No
Global Hot Spares : Yes
Deny SCSI Passthrough : No
Deny SMP Passthrough : No
Deny STP Passthrough : No
www.percona.com
25
Example (7)
Supported VD Operations
================
Read Policy : Yes
Write Policy : Yes
IO Policy : Yes
Access Policy : Yes
Disk Cache Policy : Yes
Reconstruction : Yes
Deny Locate : No
Deny CC : No
Supported PD Operations
================
Force Online : Yes
Force Offline : Yes
Force Rebuild : Yes
Deny Force Failed : No
Deny Force Good/Bad : No
Deny Missing Replace : No
Deny Clear : No
Deny Locate : No
Disable Copyback : No
Enable Copyback on SMART : No
Error Counters
================
Memory Correctable Errors : 0 Memory Uncorrectable Errors : 0 Cluster Information
================
Cluster Permitted : No
Cluster Active : No
www.percona.com
26
Example (8)
Default Settings
================
Phy Polarity : 0 Phy PolaritySplit : 0 Background Rate : 30 Stripe Size : 64kB
Flush Time : 4 seconds
Write Policy : WB
Read Policy : None
Cache When BBU Bad : Disabled
Cached IO : No
SMART Mode : Mode 6
Alarm Disable : No
Coercion Mode : 128MB
ZCR Config : IDSEL
Dirty LED Shows Drive Activity : No
BIOS Continue on Error : No
Spin Down Mode : None
Allowed Device Type : SAS/SATA Mix
Allow Mix In Enclosure : Yes
Allow Mix In VD : No
Allow SATA In Cluster : No
Max Chained Enclosures : 1 Disable Ctrl­R : No
Enable Web BIOS : No
Direct PD Mapping : No
BIOS Enumerate VDs : No
Restore Hot Spare on Insertion : No
Expose Enclosure Devices : No
Maintain PD Fail History : No
Disable Puncturing : No
Zero Based Enclosure Enumeration : No
PreBoot CLI Enabled : Yes
LED Show Drive Activity : No
Cluster Disable : Yes
SAS Disable : No
Auto Detect BackPlane Enable : SGPIO/
i2c SEP
www.percona.com
27
MegaCli
Get information about BBU
(Backup Battery Unit)
www.percona.com
28
Example (9)
$ MegaCli ­AdpBbuCmd ­GetBbuStatus ­aALL BBU status for Adapter: 0
BatteryType: BBU
Voltage: 4000 mV
Current: 0 mA
Temperature: 29 C
Firmware Status: 00000000
Battery state: GasGuageStatus:
Fully Discharged : No
Fully Charged : No
Discharging : Yes
Initialized : Yes
Remaining Time Alarm : No
Remaining Capacity Alarm: No
Discharge Terminated : No
Over Temperature : No
Charging Terminated : No
Over Charged : No
Relative State of Charge: 96 %
Charger Status: Complete
Remaining Capacity: 817 mAh
Full Charge Capacity: 854 mAh
isSOHGood: Yes
www.percona.com
29
MegaCli
Get information about
RAID configuration
www.percona.com
30
Example (10)
$ /opt/MegaRAID/MegaCli/MegaCli64 ­LDInfo ­LAll ­aAll
Adapter 0 ­­ Virtual Drive Information:
Virtual Disk: 0 (Target Id: 0)
Name:root
RAID Level: Primary­1, Secondary­0, RAID Level Qualifier­0
Size:1900000MB
State: Optimal
Stripe Size: 64kB
Number Of Drives:2
Span Depth:1
Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Access Policy: Read/Write
Disk Cache Policy: Disk's Default
Virtual Disk: 1 (Target Id: 1)
Name:swap
RAID Level: Primary­1, Secondary­0, RAID Level Qualifier­0
Size:7200MB
State: Optimal
Stripe Size: 64kB
www.percona.com
31
Example (11)
Number Of Drives:2
Span Depth:1
Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Access Policy: Read/Write
Disk Cache Policy: Disk's Default
Virtual Disk: 2 (Target Id: 2)
Name:data
RAID Level: Primary­1, Secondary­3, RAID Level Qualifier­0
Size:3814400MB
State: Optimal
Stripe Size: 64kB
Number Of Drives:2
Span Depth:2
Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Access Policy: Read/Write
Disk Cache Policy: Disk's Default
www.percona.com
32
MegaCli
Get information about disks
www.percona.com
33
Example (12)
$ /opt/MegaRAID/MegaCli/MegaCli64 ­PDList ­a0
Adapter #0
Enclosure Device ID: 8
Slot Number: 0
Device Id: 0
Sequence Number: 2
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SATA
Raw Size: 1907729MB [0xe8e088b0 Sectors]
Non Coerced Size: 1907217MB [0xe8d088b0 Sectors]
Coerced Size: 1907200MB [0xe8d00000 Sectors]
Firmware state: Online
SAS Address(0): 0x1221000000000000
Connected Port Number: 0 Inquiry Data: ATA Hitachi HDS72202A28A JK1130YAHJHSXX
Foreign State: None www.percona.com
34
Example (13)
Enclosure Device ID: 8
Slot Number: 1
Device Id: 1
Sequence Number: 2
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SATA
Raw Size: 1907729MB [0xe8e088b0 Sectors]
Non Coerced Size: 1907217MB [0xe8d088b0 Sectors]
Coerced Size: 1907200MB [0xe8d00000 Sectors]
Firmware state: Online
SAS Address(0): 0x1221000001000000
Connected Port Number: 1 Inquiry Data: ATA Hitachi HDS72202A28A JK1130YAHGDHXX
Foreign State: None
[...] www.percona.com
35
megactl
Get what we can retrieve
www.percona.com
36
Example (Dell PowerEdge Expandable RAID
controller 4 (rev 06))
Information about RAID level
configuration, # of disks and battery
# ./megactl a0 PERC 4e/Di chan:2 ldrv:1 batt:good
a0d0 838GiB RAID 5 1x4 optimal
hot spares : a0c0t4 a0c0t0 279GiB a0d0 online a0c0t1 279GiB a0d0 online a0c0t2 279GiB a0d0 online a0c0t3 279GiB a0d0 online a0c0t4 279GiB hotspare
www.percona.com
37
Example (2)
Same information + disk model
#./megactl ­v
a0 PERC 4e/Di bios:H433 fw:5A2D chan:2 ldrv:1 rbld:30% batt:good
a0d0 838GiB RAID 5 1x4 optimal
row 0: a0c0t0 a0c0t1 a0c0t2 a0c0t3 hot spares : a0c0t4 a0c0t0 SEAGATE ST3300655LC 279GiB a0d0 online a0c0t1 SEAGATE ST3300655LC 279GiB a0d0 online a0c0t2 SEAGATE ST3300655LC 279GiB a0d0 online a0c0t3 SEAGATE ST3300655LC 279GiB a0d0 online a0c0t4 SEAGATE ST3300655LC 279GiB hotspare
Same information + disk serial
# ./megactl ­v ­v ­v
1 adapters, driver version 02200207
a0 PERC 4e/Di bios:H433 fw:5A2D chan:2 ldrv:1 rbld:30% mem:256MiB batt:good
a0d0 838GiB RAID 5 1x4 optimal
row 0: a0c0t0 a0c0t1 a0c0t2 a0c0t3 hot spares : a0c0t4 a0c0t0 SEAGATE ST3300655LC rev:0005 s/n:6LM01KQQ0000B20272XX 279GiB a0d0 online a0c0t1 SEAGATE ST3300655LC rev:0005 s/n:6LM01KPC0000B20273XX 279GiB a0d0 online a0c0t2 SEAGATE ST3300655LC rev:0005 s/n:6LM01KJN0000B2025TXX 279GiB a0d0 online a0c0t3 SEAGATE ST3300655LC rev:0005 s/n:6LM01KJX0000B20273XX 279GiB a0d0 online a0c0t4 SEAGATE ST3300655LC rev:0005 s/n:6LM01KGF0000B20272XX 279GiB hotspare
www.percona.com
38
Example (3)
# ./megactl ­e
a0 PERC 4e/Di chan:2 ldrv:1 batt:good
a0d0 838GiB RAID 5 1x4 optimal
hot spares : a0c0t4 a0c0t0 279GiB a0d0 online write errors: corr: 0 delay: 0 rewrit: 0 tot/corr: 0 tot/uncorr: 0 read errors: corr:246Ki delay: 0 reread: 0 tot/corr:246Ki tot/uncorr: 0 verify errors: corr: 4Mi delay: 0 revrfy: 0 tot/corr: 4Mi tot/uncorr: 0 a0c0t1 279GiB a0d0 online write errors: corr: 0 delay: 0 rewrit: 0 tot/corr: 0 tot/uncorr: 0 read errors: corr:108Ki delay: 0 reread: 0 tot/corr:108Ki tot/uncorr: 0 verify errors: corr: 1Mi delay: 0 revrfy: 0 tot/corr: 1Mi tot/uncorr: 0 a0c0t2 279GiB a0d0 online write errors: corr: 0 delay: 0 rewrit: 0 tot/corr: 0 tot/uncorr: 0 read errors: corr:220Ki delay: 1 reread: 0 tot/corr:220Ki tot/uncorr: 0 verify errors: corr: 3Mi delay: 0 revrfy: 0 tot/corr: 3Mi tot/uncorr: 0 a0c0t3 279GiB a0d0 online write errors: corr: 0 delay: 0 rewrit: 0 tot/corr: 0 tot/uncorr: 0 read errors: corr:125Ki delay: 0 reread: 0 tot/corr:125Ki tot/uncorr: 0 verify errors: corr: 2Mi delay: 0 revrfy: 0 tot/corr: 2Mi tot/uncorr: 0 a0c0t4 279GiB hotspare
write errors: corr: 0 delay: 0 rewrit: 0 tot/corr: 0 tot/uncorr: 0 read errors: corr: 5 delay: 0 reread: 0 tot/corr: 5 tot/uncorr: 0 verify errors: corr: 11Mi delay: 0 revrfy: 0 tot/corr: 11Mi tot/uncorr: 0 www.percona.com
39
Back to our questions
●
●
●
●
●
●
●
●
●
On what kind of machine runs my db ?
Physical/Virtual ?
How much memory is used/free ? Does it swap ?
Can I add more ?
How many cores ?
Is this a 64bit machine ?
How many disks ?
Do we have a RAID controller ? Which RAID level ?
What are my IOPS ?
Which IO scheduler is in use ?
On which filesystem is the data stored ?
www.percona.com
40
IOPS
What about IOPS ?
www.percona.com
41
IOPS
●
●
Input/Output Operations Per Second is
usually associated with the measurement
of a storage system performance.
To calculate the average IOPS check the
datasheet of your disk to the
manufacturer's webiste. You need:
➢
➢
➢
Rotation speed
Average latency
Average seek time
www.percona.com
42
IOPS formula
The formula to calculate IOPS is:
IOPS =
1
[average latency in sec + average read/write seek time in dec ]
This is for ONE disk, there is a write penalty
associated with RAID configuration.
www.percona.com
43
IOPS formula : RAID penalty
List of RAID configurations & their penalties:
RAID configuration
Penalty
RAID 0
1
RAID 1
2
RAID 10
2
RAID 5
4
RAID 6
6
www.percona.com
44
IOPS formula :rotation latency
List of rotation latency average
HDD Spindle [rpm]
Average rotational latency [ms]
4,200
7.14
5,400
5.56
7,200
4.17
10,000
3.00
15,000
2.00
www.percona.com
45
Workload system IOPS formula
The formula to calculate workload system IOPS
(with the RAID) is:
1
(Total Workload IOPS * Percentage of workload read
operations)
+
( (Total Workload IOPS * Percentage of workload write
operations) / RAID IOPS Penalty )
www.percona.com
46
Example
From previous raid information we know...
●
●
●
●
●
●
●
Disk : SEAGATE ST3300655LC (279GB)
RAID : 5
# of disks: 4
Spin Speed (RPM): 15k
Average latency : 2.0ms
Random read seek time : 3.50ms
Random write seek time : 4.0ms
www.percona.com
47
Example (2)
RAID : 5 -> penalty = 4
# of disks: 4
Spin Speed (RPM): 15k
Average latency : 2.0ms
Random read seek time : 3.50ms
Random write seek time : 4.0ms
IOPS = 1 / [ 0.002 + (0.0035+0.004)/2 ] = 173.91
Total Workload IOPS = 4 x 173.91 = 695 (695.64)
Let's assume 80% reads, 20% writes:
Workload system IOPS = (695 x 0.8) + ( (695 x 0.2)/4 ) = 590.75 IOPS
www.percona.com
48
Tool #3
Name: sysbench
Function: System performance
benchmark
Url: http://sysbench.sourceforge.net/
License: GPLv2
www.percona.com
49
Sysbench
Let's check on that system the output of
random writes:
# sysbench --test=fileio --file-test-mode=rndrw --file-total-size=10G --file-extra-flags=direct --num-threads=8
prepare
sysbench 0.4.10: multi-threaded system evaluation benchmark
128 files, 81920Kb each, 10240Mb total
Creating files for the test...
www.percona.com
50
# sysbench ­­test=fileio ­­file­test­mode=rndrw ­­file­total­size=10G ­­file­
extra­flags=direct ­­num­threads=8 run
sysbench 0.4.10: multi­threaded system evaluation benchmark
Running the test with following options:
Number of threads: 8
Extra file open flags: 16384
128 files, 80Mb each
10Gb total file size
Block size 16Kb
Number of random requests for random IO: 10000
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Threads started!
Done.
Operations performed: 6003 Read, 3997 Write, 12800 Other = 22800 Total
Read 93.797Mb Written 62.453Mb Total transferred 156.25Mb (10.366Mb/sec)
663.40 Requests/sec executed
Test execution summary:
total time: 15.0738s
total number of events: 10000
total time taken by event execution: 112.9758
per­request statistics:
min: 0.13ms
avg: 11.30ms
max: 951.96ms
approx. 95 percentile: 44.12ms
Threads fairness:
events (avg/stddev): 1250.0000/46.64
execution time (avg/stddev): 14.1220/0.10
www.percona.com
51
Exercises
Run sysbench on kermit
➢
➢
Try different fileio tests:
– seqwr (sequential write)
– seqrewr (sequential rewrite)
– seqrd (sequential read)
– rndrd (random read)
– rndwr (random write)
– rndrw (combined random read/write)
Try different threads and fine the maximum
www.percona.com
52
Tool #4
Name: pt-diskstats
Function: Aggregate and summarize
/proc/diskstats
Part of: percona-toolkit
Url:
http://www.percona.com/doc/percona-toolkit/pt-diskstats.html
www.percona.com
53
Exercises
●
●
●
Test pt­diskstats on kermit
Try to output only the hard disk
Press “c” and <ENTER>
www.percona.com
54
Know your environment:
MySQL
www.percona.com
55
Know your environment (MySQL)
We need to find the answers to these questions:
●
●
●
●
●
●
Which version is running ? 64Bits ?
How many database ?
Where is the datadir ?
What about replication ?
Do you use some Key Percona Server features ?
Some general InnoDB parameters (buffer pool size, log file size, flush method, flush
log at commit, R/W I/O Threads, I/O Capacity, Pending counters)
●
●
●
●
●
●
●
●
What the size of the database ?
Which engines are used ?
What type of fields are used ?
Do we use foreign keys ?
Do we use views ?
Do we use full text search ?
Do we use partitioning ?
Who has access from where ?
www.percona.com
56
Tool #5
Name: pt-mysql-summary
Function: Summarize MySQL information in
a nice way
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-mysql-summary.html
www.percona.com
57
Back to our questions
Did we answer those questions:
●
●
●
●
●
●
Which version is running ? 64Bits ?
How many database ?
Where is the datadir ?
What about replication ?
Do you use some Key Percona Server features ?
Some general InnoDB parameters (buffer pool size, log file size, flush method, flush
log at commit, R/W I/O Threads, I/O Capacity, Pending counters)
●
●
●
●
●
●
●
●
What the size of the database ?
Which engines are used ?
What type of fields are used ?
Do we use foreign keys ?
Do we use views ?
Do we use full text search ?
Do we use partitioning ?
Who has access from where ?
www.percona.com
58
Tool #6
Name: pt-show-grants
Function: print MySQL grants so you can
effectively replicate, compare and versioncontrol them.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-show-grants.html
www.percona.com
59
Exercises
●
●
Retrieve the information related to
MySQL on kermit and try to answer the
previous questions
Print all the grants and save them on a file
called pluk­grants.txt
www.percona.com
60
It's now time to be intimate with our
database
Let's try to find the answer to these
indiscreet questions:
●
●
●
Which queries are the most resource
eater ?
How are the indexes used ?
Are they duplicate keys ?
www.percona.com
61
Capture data
For the following tools, we need to fetch
some data. There are several solutions:
●
●
●
use slow query log (generally it stores only “slow”
queries, but some fast queries can also be wrong)
use general query log (not the best solution, some
attributes like Query_time are missing)
use a network dump (maybe the best solution)
www.percona.com
62
tcpdump
●
●
Capture data a different period of time
➢ during peak and non peak time
Data with many drop packets are useless
# time tcpdump ­i any ­s 65535 ­x ­n ­q ­tttt 'port 3306 and tcp[1] & 7 == 2 and tcp[3] & 7 == 2' > $(hostname)_queries_$
(date +%Y­%m­%d_%H­%M).tcp
www.percona.com
63
Tool #7
Name: pt-query-digest
Function: Analyze query execution logs and
generate a query report, filter, replay, or
transform queries for MySQL, PostgreSQL,
memcached, and more.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-query-digest.html
www.percona.com
64
pt-query-digest
pt­query­digest ­­watch­server "x.x.x.x:xxxx" ­­type tcpdump file_name.tcp
use ­­watch­server if you have
multiple servers on the same machine or if
you use a different port
www.percona.com
65
Tool #8
Name: pt-index-usage
Function: Read queries from a log and
analyze how they use indexes.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-index-usage.html
Note: the query log needs to be in MySQL‘s slow query log format. If you
need to input a different format, you can use pt-query-digest to translate
the formats. If you don’t specify a filename, the tool reads from STDIN.
www.percona.com
66
Tool #9
Name: pt-duplicate-key-checker
Function: Find duplicate indexes and foreign
keys on MySQL tables.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-duplicate-key-checker.html
www.percona.com
67
Exercises
●
●
●
Make some queries
From a second terminal capture 5 minutes
of mysql traffic
Test the following tools:
➢ pt-query-digest
➢ pt-index-usage
➢ pt-duplicate-key-checker
Do you see something unexpected ?
www.percona.com
68
Know the evolution of
your environment
www.percona.com
69
Know the evolution of your
environment
Now that we are familiar with the environment,
it's time to check and understand its behavior.
Monitoring vs Trending
www.percona.com
70
Monitoring
Tool #10
Name: innotop
Function: top clone for MySQL
License: GNU GPLv2
Url: http://code.google.com/p/innotop
www.percona.com
71
Monitoring
Tool #11
Name: pt-mext
Function: Look at many sample og MySQL
SHOW GLOBAL STATUS side-by-side
License: GNU GPLv2
Url:
http://www.percona.com/doc/percona-toolkit/ptmext.html
www.percona.com
72
pt-mext
pt-mext -r -- mysqladmin ext -i10 -c5
All values are interesting but you should pay even more attention to:
●
●
●
●
●
●
●
●
●
●
●
●
Created_tmp_*
Handler_read_*
Innodb_buffer_pool_read*
Innodb_os_log_written
Key_read_requests
Key_reads
Qchache*
Select_full_*join
Select_range
Select_scan
Table_locks_waited
Threads_running
www.percona.com
73
Exercises
●
●
●
●
Run innotop on kermit
Change the refresh interval to 0.5
Check InnoDB information
Run pt­mext and get 3 columns of
values with an interval of 30 seconds
www.percona.com
74
Trending
Tool #12
Name: cacti & better cacti templates
Function: graphing solution, frontend to
RRDTool.
License: GNU GPLv2
Url: http://cacti.net
http://code.google.com/p/mysql-cacti-templates
www.percona.com
75
Table scans, backup?
www.percona.com
76
Take backup here
www.percona.com
77
max_connections not reached yet
Why more incoming connections?
www.percona.com
78
In 2 hours, almost 6900
seconds replication lag
www.percona.com
79
Why this sudden peak in rangescans?
www.percona.com
80
DB Restart
Time to fill buffer
www.percona.com
81
Save your environment:
Backup
www.percona.com
82
Tool #13
Name: mydumper
Function: high-performance multi-threaded
backup (and restore) toolset for MySQL and
Drizzle
License: GNU GPLv3
Url: http://mydumper.org
https://launchpad.net/mydumper/
www.percona.com
83
mydumper
●
●
●
●
●
Written in C
10x faster than mysqldump
Compression on-the-fly
Multi-threaded
Works fine for MyISAM
time ./mydumper ­h localhost ­u percona ­p mypass ­t 8 ­c ­­regex '^(?!(mysql|test))'
www.percona.com
84
Tool #14
Name: Percona XtraBackup
Function: Open source hot backup tool for
InnoDB and XtraDB databases
License: GNU GPLv2
Url:
http://www.percona.com/software/percona-xtrabackup/
https://launchpad.net/percona-xtrabackup
www.percona.com
85
xtrabackup
●
●
●
●
●
●
●
●
●
O’Reilly award MySQL Application of Year
Streaming
Compression
Incremental/Delta
Filtering
Throttling
Parallel Copying
Statistics
Export/Import Table
www.percona.com
86
Tool #15
Name: pt-archiver
Function: Archive rows from a MySQL table
into another table or a file by a low-impact,
forward-only job to nibble old data out of the
table without impacting OLTP queries much.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-archiver.pl
www.percona.com
87
Exercises
●
●
●
●
Backup the employees database using
mydumper with 4 threads and store it
in /home/pluk/backups
Take a full backup using xtrabackup
Insert some data while backup is running
(if you have time :-) )
Take an incremental backup
www.percona.com
88
Maintain your environment
www.percona.com
89
Maintenance
●
●
●
Daily maintenance
Find problems
Replication
www.percona.com
90
Daily maintenance
●
●
●
●
Everything from the MySQL console
Painless database changes
Tested upgrades ?
Extra
www.percona.com
91
From the console
Tool #16
Name: common-schema
Function: provides useful views and routines to
assists in schema analysis, monitoring
management & SQL code generation
License: New BSD License
Url: http://code.google.com/p/common-schema
www.percona.com
92
Database changes
Tool #17
Name: pt-online-schema-change
Function: Perform online, non-blocking table
schema changes.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-online-schema-change.html
www.percona.com
93
Tested upgrades
Tool #18
Name: pt-upgrade
Function: execute queries on multiple
servers and check for differences
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-upgrade.html
www.percona.com
94
Extra
Tool #19
Name: pt-deadlock-logger
Function: extract and log MySQL deadlock
information
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-deadlock-logger.html
www.percona.com
95
Extra
Tool #20
Name: pt-kill
Function: kill MySQL queries that match
certain criteria
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-kill.html
www.percona.com
96
Exercises
●
●
●
●
Find the biggest table per database
Change the engine of table .... to engine
innodb. This change must be done
online.
Using information_schema what's the size
of the dataset ?
Examine the values of the
auto_increments (from common_schema)
www.percona.com
97
Find problems
●
●
What do you advise me doctor ?
Get the symptoms when it hurts !
www.percona.com
98
Tool #21
Name: pt-variable-advisor
Function: analyzse MySQL variables and
advise on possible problems
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-variable-advisor.html
Note: this tool considers only static values and not the evolution of values,
it should be used in addition of tool #11: pt-mext
www.percona.com
99
Get the symptoms when it hurts !
To perform this action, we will use 3 new
tools :
●
●
●
pt-stalk
pt-collect
pt-sift
www.percona.com
100
Extra
Tool #22
Name: pt-stalk
Function: wait for a condition to occur then
begin collecting data.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-stalk.html
www.percona.com
101
Extra
Tool #23
Name: pt-collect
Function: collect information from a server
for some period of time.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-collect.html
www.percona.com
102
Extra
Tool #24
Name: pt-sift
Function: browses files created by pt-collect.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-collect.html
www.percona.com
103
Replication
Tools focusing on replication:
●
●
●
●
●
●
pt-slave-delay
pt-slave-find
pt-slave-restart
pt-heartbeat
pt-table-checksum
pt-table-sync
www.percona.com
104
Tool #25
Name: pt-slave-delay
Function: make a MySQL slave server lag
behind its master.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-slave-delay.html
www.percona.com
105
Tool #26
Name: pt-slave-find
Function: find and print replication hierarchy
tree of MySQL slaves.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-slave-find.html
www.percona.com
106
Tool #27
Name: pt-slave-restart
Function: watch and restart MySQL
replication after errors.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-slave-restart.html
www.percona.com
107
Tool #28
Name: pt-heartbeat
Function: monitor MySQL replication delay.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-slave-restart.html
www.percona.com
108
Tool #29
Name: pt-table-checksum
Function: perform an online replication
consistency check, or checksum MySQL
tables efficiently on one or many servers.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-table-checksum.html
www.percona.com
109
Tool #30
Name: pt-table-sync
Function: synchronize MySQL table data
efficiently.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-table-sync.html
www.percona.com
110
Exercises
●
●
●
●
●
●
●
Start the machine gonzo
Setup “gonzo” as slave of kermit using
XtraBackup
Prepare stalk on gonzo to collect data when the
replication breaks
Remove one row on kermit, add it back to
gonzo and then add it again on kermit
Remove some rows in some tables in employees
database on gonzo
Run checksum on kermit
Fix the tables by syncing them
www.percona.com
111
Annual MySQL Users Conference
Presented by Percona Live
The Hyatt Regency Hotel, Santa Clara, CA
April 10th-12th, 2012
Featured Speakers
Mark Callaghan, Facebook
Jeremy Zawodny, Craigslist
Marten Mickos, Eucalyptus Systems
Sarah Novotny, Blue Gecko
Peter Zaitsev, Percona
Baron Schwartz, Percona
The Call for Papers is Now Open!
Visit www.percona.com/live/mysql-conference-2012/
www.percona.com
[email protected]
@lefred
We're Hiring! www.percona.com/about-us/careers/
Thank you !
114
MySQL DBA Swiss Army Knife
Percona Live London 2011
Who am I ?
Frédéric Descamps
@lefred
http://about.be/lefred
Percona Consultant
Managing mysql since 3.23 (as far as I
remember)
devops believer
www.percona.com
v
d
liG
P
s
S
tO
u
Y
k
h
T
m
a
n
rco
e
.p
w
fM
tF
b
h
x
E
s
S
d
iv
L
P
m
a
n
rco
e
.p
w
www.percona.com
www.percona.com
prerequisites
Laptop
VirtualBox
●
The tutorial vm's
●
●
Everything but the laptop is on the key
www.percona.com
prerequisites
www.percona.com
prerequisites
www.percona.com
Agenda
Know you environment
Know the evolution of your environment
●
Save your environment
●
Maintain your environment
●
●
www.percona.com
Know your environment:
Operating System
www.percona.com
11
Know your environment (OS)
We need to find the answers to these questions:
●
●
●
●
●
●
●
●
●
On what kind of machine runs my db ? Physical/Virtual ?
How much memory is used/free ? Does it swap ? Can I add more ?
How many cores ?
Is this a 64bit machine ?
How many disks ?
Do we have a RAID controller ? Which RAID level ?
What are my IOPS ?
Which IO scheduler is in use ?
On which filesystem is the data stored ?
www.percona.com
12
Toolbox
The first tool is part of Percona Toolkit.
Percona Toolkit is a collection of
advanced command-line tools to perform
a variety of MySQL and system tasks that
are too difficult or complex to perform
manually.
www.percona.com
13
Percona Toolkit
●
●
●
●
Percona Toolkit is derived from Maatkit
and Aspersa, two of the best-known
toolkits for MySQL server administration. It
is developed and supported by Percona
Inc.
Opensource GNU GPL v2
https://launchpad.net/percona-toolkit
http://www.percona.com/software/percona-toolkit/
www.percona.com
14
Tool #1
Name: pt-summary
Function: summarize system information
in a nice way
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-summary.html
www.percona.com
15
Exercises
Start kermit virtual machine, login and
run pt­summary
Login: pluk
Password: pluk2k11
www.percona.com
16
Back to our questions
●
●
●
●
●
●
●
●
●
On what kind of machine runs my db ?
Physical/Virtual ?
How much memory is used/free ? Does it swap ?
Can I add more ?
How many cores ?
Is this a 64bit machine ?
How many disks ?
Do we have a RAID controller ? Which RAID level ?
What are my IOPS ?
Which IO scheduler is in use ?
On which filesystem is the data stored ?
www.percona.com
17
Tool #2
The tool #2 is more a set of tools to use
depending of your raid controller.
Name: MegaCli | megactl | arcconf | ?
Function: find information about raid, disk
AND write cache policy
www.percona.com
18
MegaCli
Get some general information
about the controller's capabilities
www.percona.com
19
Example (Dell PowerEdge Expandable RAID
controller 5)
$ MegaCli ­AdpAllInfo ­aALL
Adapter #0
==============================================================================
Versions
================
Product Name : PERC 5/i Integrated
Serial No : 12345
FW Package Build: 5.2.2­0072
Mfg. Data
================
Mfg. Date : 00/00/00
Rework Date : 00/00/00
Revision No : @��A
Battery FRU : N/A
Image Versions In Flash:
================
Boot Block Version : R.2.3.12
BIOS Version : MT28­9
MPT Version : MPTFW­00.10.62.00­IT
FW Version : 1.03.50­0461
WebBIOS Version : 1.03­04
Ctrl­R Version : 1.04­019A
www.percona.com
20
Example (2)
Pending Images In Flash
================
None
PCI Info
================
Vendor Id : 1028
Device Id : 0015
SubVendorId : 1028
SubDeviceId : 1f03
Host Interface : PCIE
Number of Frontend Port: 0 Device Interface : PCIE
Number of Backend Port: 8 Port : Address
0 1221000000000000 1 1221000001000000 2 1221000002000000 3 1221000003000000 4 1221000004000000 5 1221000005000000 6 0000000000000000 7 0000000000000000
www.percona.com
21
Example (3)
HW Configuration
================
SAS Address : 5001e4f017ce7a00
BBU : Present
Alarm : Absent
NVRAM : Present
Serial Debugger : Present
Memory : Present
Flash : Present
Memory Size : 256MB
www.percona.com
22
Example (4)
Settings
================
Current Time : 2:26:38 7/6, 2011
Predictive Fail Poll Interval : 300sec
Interrupt Throttle Active Count : 16
Interrupt Throttle Completion : 50us
Rebuild Rate : 30%
PR Rate : 30%
Resynch Rate : 30%
Check Consistency Rate : 30%
Reconstruction Rate : 30%
Cache Flush Interval : 4s
Max Drives to Spinup at One Time : 2
Delay Among Spinup Groups : 12s
Physical Drive Coercion Mode : 128MB
Cluster Mode : Disabled
Alarm : Disabled
Auto Rebuild : Enabled
Battery Warning : Enabled
Ecc Bucket Size : 15
Ecc Bucket Leak Rate : 1440 Minutes
Restore HotSpare on Insertion : Disabled
Expose Enclosure Devices : Disabled
Maintain PD Fail History : Disabled
Host Request Reordering : Enabled
Auto Detect BackPlane Enabled : SGPIO/i2c SEP
Load Balance Mode : Auto
www.percona.com
23
Example (5)
Capabilities
================
RAID Level Supported : RAID0, RAID1, RAID5, RAID10, RAID50
Supported Drives : SAS, SATA
Allowed Mixing:
Mix In Enclosure Allowed
Status
================
ECC Bucket Count : 0
Limitations
================
Max Arms Per VD : 32 Max Spans Per VD : 8 Max Arrays : 128 Max Number of VDs : 64 Max Parallel Commands : 1008 Max SGE Count : 80 Max Data Transfer Size : 8192 sectors Max Strips PerIO : 84 Min Stripe Size : 8kB
Max Stripe Size : 128kB
www.percona.com
24
Example (6)
Device Present
================
Virtual Drives : 3 Degraded : 0 Offline : 0 Physical Devices : 7 Disks : 6 Critical Disks : 0 Failed Disks : 0 Supported Adapter Operations
================
Rebuild Rate : Yes
CC Rate : Yes
BGI Rate : Yes
Reconstruct Rate : Yes
Patrol Read Rate : Yes
Alarm Control : Yes
Cluster Support : No
BBU : Yes
Spanning : Yes
Dedicated Hot Spare : Yes
Revertible Hot Spares : No
Foreign Config Import : Yes
Self Diagnostic : Yes
Allow Mixed Redundancy on Array : No
Global Hot Spares : Yes
Deny SCSI Passthrough : No
Deny SMP Passthrough : No
Deny STP Passthrough : No
www.percona.com
25
Example (7)
Supported VD Operations
================
Read Policy : Yes
Write Policy : Yes
IO Policy : Yes
Access Policy : Yes
Disk Cache Policy : Yes
Reconstruction : Yes
Deny Locate : No
Deny CC : No
Supported PD Operations
================
Force Online : Yes
Force Offline : Yes
Force Rebuild : Yes
Deny Force Failed : No
Deny Force Good/Bad : No
Deny Missing Replace : No
Deny Clear : No
Deny Locate : No
Disable Copyback : No
Enable Copyback on SMART : No
Error Counters
================
Memory Correctable Errors : 0 Memory Uncorrectable Errors : 0 Cluster Information
================
Cluster Permitted : No
Cluster Active : No
www.percona.com
26
Example (8)
Default Settings
================
Phy Polarity : 0 Phy PolaritySplit : 0 Background Rate : 30 Stripe Size : 64kB
Flush Time : 4 seconds
Write Policy : WB
Read Policy : None
Cache When BBU Bad : Disabled
Cached IO : No
SMART Mode : Mode 6
Alarm Disable : No
Coercion Mode : 128MB
ZCR Config : IDSEL
Dirty LED Shows Drive Activity : No
BIOS Continue on Error : No
Spin Down Mode : None
Allowed Device Type : SAS/SATA Mix
Allow Mix In Enclosure : Yes
Allow Mix In VD : No
Allow SATA In Cluster : No
Max Chained Enclosures : 1 Disable Ctrl­R : No
Enable Web BIOS : No
Direct PD Mapping : No
BIOS Enumerate VDs : No
Restore Hot Spare on Insertion : No
Expose Enclosure Devices : No
Maintain PD Fail History : No
Disable Puncturing : No
Zero Based Enclosure Enumeration : No
PreBoot CLI Enabled : Yes
LED Show Drive Activity : No
Cluster Disable : Yes
SAS Disable : No
Auto Detect BackPlane Enable : SGPIO/
i2c SEP
www.percona.com
27
MegaCli
Get information about BBU
(Backup Battery Unit)
www.percona.com
28
Example (9)
$ MegaCli ­AdpBbuCmd ­GetBbuStatus ­aALL BBU status for Adapter: 0
BatteryType: BBU
Voltage: 4000 mV
Current: 0 mA
Temperature: 29 C
Firmware Status: 00000000
Battery state: GasGuageStatus:
Fully Discharged : No
Fully Charged : No
Discharging : Yes
Initialized : Yes
Remaining Time Alarm : No
Remaining Capacity Alarm: No
Discharge Terminated : No
Over Temperature : No
Charging Terminated : No
Over Charged : No
Relative State of Charge: 96 %
Charger Status: Complete
Remaining Capacity: 817 mAh
Full Charge Capacity: 854 mAh
isSOHGood: Yes
www.percona.com
29
MegaCli
Get information about
RAID configuration
www.percona.com
30
Example (10)
$ /opt/MegaRAID/MegaCli/MegaCli64 ­LDInfo ­LAll ­aAll
Adapter 0 ­­ Virtual Drive Information:
Virtual Disk: 0 (Target Id: 0)
Name:root
RAID Level: Primary­1, Secondary­0, RAID Level Qualifier­0
Size:1900000MB
State: Optimal
Stripe Size: 64kB
Number Of Drives:2
Span Depth:1
Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Access Policy: Read/Write
Disk Cache Policy: Disk's Default
Virtual Disk: 1 (Target Id: 1)
Name:swap
RAID Level: Primary­1, Secondary­0, RAID Level Qualifier­0
Size:7200MB
State: Optimal
Stripe Size: 64kB
www.percona.com
31
Example (11)
Number Of Drives:2
Span Depth:1
Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Access Policy: Read/Write
Disk Cache Policy: Disk's Default
Virtual Disk: 2 (Target Id: 2)
Name:data
RAID Level: Primary­1, Secondary­3, RAID Level Qualifier­0
Size:3814400MB
State: Optimal
Stripe Size: 64kB
Number Of Drives:2
Span Depth:2
Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Access Policy: Read/Write
Disk Cache Policy: Disk's Default
www.percona.com
32
MegaCli
Get information about disks
www.percona.com
33
Example (12)
$ /opt/MegaRAID/MegaCli/MegaCli64 ­PDList ­a0
Adapter #0
Enclosure Device ID: 8
Slot Number: 0
Device Id: 0
Sequence Number: 2
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SATA
Raw Size: 1907729MB [0xe8e088b0 Sectors]
Non Coerced Size: 1907217MB [0xe8d088b0 Sectors]
Coerced Size: 1907200MB [0xe8d00000 Sectors]
Firmware state: Online
SAS Address(0): 0x1221000000000000
Connected Port Number: 0 Inquiry Data: ATA Hitachi HDS72202A28A JK1130YAHJHSXX
Foreign State: None www.percona.com
34
Example (13)
Enclosure Device ID: 8
Slot Number: 1
Device Id: 1
Sequence Number: 2
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SATA
Raw Size: 1907729MB [0xe8e088b0 Sectors]
Non Coerced Size: 1907217MB [0xe8d088b0 Sectors]
Coerced Size: 1907200MB [0xe8d00000 Sectors]
Firmware state: Online
SAS Address(0): 0x1221000001000000
Connected Port Number: 1 Inquiry Data: ATA Hitachi HDS72202A28A JK1130YAHGDHXX
Foreign State: None
[...] www.percona.com
35
megactl
Get what we can retrieve
www.percona.com
36
Example (Dell PowerEdge Expandable RAID
controller 4 (rev 06))
Information about RAID level
configuration, # of disks and battery
# ./megactl a0 PERC 4e/Di chan:2 ldrv:1 batt:good
a0d0 838GiB RAID 5 1x4 optimal
hot spares : a0c0t4 a0c0t0 279GiB a0d0 online a0c0t1 279GiB a0d0 online a0c0t2 279GiB a0d0 online a0c0t3 279GiB a0d0 online a0c0t4 279GiB hotspare
www.percona.com
37
Example (2)
Same information + disk model
#./megactl ­v
a0 PERC 4e/Di bios:H433 fw:5A2D chan:2 ldrv:1 rbld:30% batt:good
a0d0 838GiB RAID 5 1x4 optimal
row 0: a0c0t0 a0c0t1 a0c0t2 a0c0t3 hot spares : a0c0t4 a0c0t0 SEAGATE ST3300655LC 279GiB a0d0 online a0c0t1 SEAGATE ST3300655LC 279GiB a0d0 online a0c0t2 SEAGATE ST3300655LC 279GiB a0d0 online a0c0t3 SEAGATE ST3300655LC 279GiB a0d0 online a0c0t4 SEAGATE ST3300655LC 279GiB hotspare
Same information + disk serial
# ./megactl ­v ­v ­v
1 adapters, driver version 02200207
a0 PERC 4e/Di bios:H433 fw:5A2D chan:2 ldrv:1 rbld:30% mem:256MiB batt:good
a0d0 838GiB RAID 5 1x4 optimal
row 0: a0c0t0 a0c0t1 a0c0t2 a0c0t3 hot spares : a0c0t4 a0c0t0 SEAGATE ST3300655LC rev:0005 s/n:6LM01KQQ0000B20272XX 279GiB a0d0 online a0c0t1 SEAGATE ST3300655LC rev:0005 s/n:6LM01KPC0000B20273XX 279GiB a0d0 online a0c0t2 SEAGATE ST3300655LC rev:0005 s/n:6LM01KJN0000B2025TXX 279GiB a0d0 online a0c0t3 SEAGATE ST3300655LC rev:0005 s/n:6LM01KJX0000B20273XX 279GiB a0d0 online a0c0t4 SEAGATE ST3300655LC rev:0005 s/n:6LM01KGF0000B20272XX 279GiB hotspare
www.percona.com
38
Example (3)
# ./megactl ­e
a0 PERC 4e/Di chan:2 ldrv:1 batt:good
a0d0 838GiB RAID 5 1x4 optimal
hot spares : a0c0t4 a0c0t0 279GiB a0d0 online write errors: corr: 0 delay: 0 rewrit: 0 tot/corr: 0 tot/uncorr: 0 read errors: corr:246Ki delay: 0 reread: 0 tot/corr:246Ki tot/uncorr: 0 verify errors: corr: 4Mi delay: 0 revrfy: 0 tot/corr: 4Mi tot/uncorr: 0 a0c0t1 279GiB a0d0 online write errors: corr: 0 delay: 0 rewrit: 0 tot/corr: 0 tot/uncorr: 0 read errors: corr:108Ki delay: 0 reread: 0 tot/corr:108Ki tot/uncorr: 0 verify errors: corr: 1Mi delay: 0 revrfy: 0 tot/corr: 1Mi tot/uncorr: 0 a0c0t2 279GiB a0d0 online write errors: corr: 0 delay: 0 rewrit: 0 tot/corr: 0 tot/uncorr: 0 read errors: corr:220Ki delay: 1 reread: 0 tot/corr:220Ki tot/uncorr: 0 verify errors: corr: 3Mi delay: 0 revrfy: 0 tot/corr: 3Mi tot/uncorr: 0 a0c0t3 279GiB a0d0 online write errors: corr: 0 delay: 0 rewrit: 0 tot/corr: 0 tot/uncorr: 0 read errors: corr:125Ki delay: 0 reread: 0 tot/corr:125Ki tot/uncorr: 0 verify errors: corr: 2Mi delay: 0 revrfy: 0 tot/corr: 2Mi tot/uncorr: 0 a0c0t4 279GiB hotspare
write errors: corr: 0 delay: 0 rewrit: 0 tot/corr: 0 tot/uncorr: 0 read errors: corr: 5 delay: 0 reread: 0 tot/corr: 5 tot/uncorr: 0 verify errors: corr: 11Mi delay: 0 revrfy: 0 tot/corr: 11Mi tot/uncorr: 0 www.percona.com
39
Back to our questions
●
●
●
●
●
●
●
●
●
On what kind of machine runs my db ?
Physical/Virtual ?
How much memory is used/free ? Does it swap ?
Can I add more ?
How many cores ?
Is this a 64bit machine ?
How many disks ?
Do we have a RAID controller ? Which RAID level ?
What are my IOPS ?
Which IO scheduler is in use ?
On which filesystem is the data stored ?
www.percona.com
40
IOPS
What about IOPS ?
www.percona.com
41
IOPS
●
●
Input/Output Operations Per Second is
usually associated with the measurement
of a storage system performance.
To calculate the average IOPS check the
datasheet of your disk to the
manufacturer's webiste. You need:
➢
➢
➢
Rotation speed
Average latency
Average seek time
www.percona.com
42
IOPS formula
The formula to calculate IOPS is:
IOPS =
1
[average latency in sec + average read/write seek time in dec ]
This is for ONE disk, there is a write penalty
associated with RAID configuration.
www.percona.com
43
Rotational speed: Measured in revolutions per minute (RPM), a
higher rotational speed is associated with a higher performing
disk. Most enterprise disks rotate at speeds of 7,200, 10,000 or
15,000 RPM.
● Average latency: This is the time it takes for the sector of the disk
being accessed to rotate into position under a read/write head.
● Average seek time: The time (in ms) it takes for the hard drive’s
read/write head to position itself over the track being read or
written. There are both read and write seek times.
●
IOPS formula : RAID penalty
List of RAID configurations & their penalties:
RAID configuration
Penalty
RAID 0
1
RAID 1
2
RAID 10
2
RAID 5
4
RAID 6
6
www.percona.com
44
Rotational speed: Measured in revolutions per minute (RPM), a
higher rotational speed is associated with a higher performing
disk. Most enterprise disks rotate at speeds of 7,200, 10,000 or
15,000 RPM.
● Average latency: This is the time it takes for the sector of the disk
being accessed to rotate into position under a read/write head.
● Average seek time: The time (in ms) it takes for the hard drive’s
read/write head to position itself over the track being read or
written. There are both read and write seek times.
●
IOPS formula :rotation latency
List of rotation latency average
HDD Spindle [rpm]
Average rotational latency [ms]
4,200
7.14
5,400
5.56
7,200
4.17
10,000
3.00
15,000
2.00
www.percona.com
45
Rotational speed: Measured in revolutions per minute (RPM), a
higher rotational speed is associated with a higher performing
disk. Most enterprise disks rotate at speeds of 7,200, 10,000 or
15,000 RPM.
● Average latency: This is the time it takes for the sector of the disk
being accessed to rotate into position under a read/write head.
● Average seek time: The time (in ms) it takes for the hard drive’s
read/write head to position itself over the track being read or
written. There are both read and write seek times.
●
Workload system IOPS formula
The formula to calculate workload system IOPS
(with the RAID) is:
1
(Total Workload IOPS * Percentage of workload read
operations)
+
( (Total Workload IOPS * Percentage of workload write
operations) / RAID IOPS Penalty )
www.percona.com
46
Rotational speed: Measured in revolutions per minute (RPM), a
higher rotational speed is associated with a higher performing
disk. Most enterprise disks rotate at speeds of 7,200, 10,000 or
15,000 RPM.
● Average latency: This is the time it takes for the sector of the disk
being accessed to rotate into position under a read/write head.
● Average seek time: The time (in ms) it takes for the hard drive’s
read/write head to position itself over the track being read or
written. There are both read and write seek times.
●
Example
From previous raid information we know...
●
●
●
●
●
●
●
Disk : SEAGATE ST3300655LC (279GB)
RAID : 5
# of disks: 4
Spin Speed (RPM): 15k
Average latency : 2.0ms
Random read seek time : 3.50ms
Random write seek time : 4.0ms
www.percona.com
47
Example (2)
RAID : 5 -> penalty = 4
# of disks: 4
Spin Speed (RPM): 15k
Average latency : 2.0ms
Random read seek time : 3.50ms
Random write seek time : 4.0ms
IOPS = 1 / [ 0.002 + (0.0035+0.004)/2 ] = 173.91
Total Workload IOPS = 4 x 173.91 = 695 (695.64)
Let's assume 80% reads, 20% writes:
Workload system IOPS = (695 x 0.8) + ( (695 x 0.2)/4 ) = 590.75 IOPS
www.percona.com
48
Tool #3
Name: sysbench
Function: System performance
benchmark
Url: http://sysbench.sourceforge.net/
License: GPLv2
www.percona.com
49
Sysbench
Let's check on that system the output of
random writes:
# sysbench --test=fileio --file-test-mode=rndrw --file-total-size=10G --file-extra-flags=direct --num-threads=8
prepare
sysbench 0.4.10: multi-threaded system evaluation benchmark
128 files, 81920Kb each, 10240Mb total
Creating files for the test...
www.percona.com
50
The following I/O operations are supported:
seqwr
sequential write
seqrewr
sequential rewrite
seqrd
sequential read
rndrd
random read
rndwr
random write
rndrw
combined random read/write
Also, the following file access modes can be specified, if the underlying platform supports them:
Asynchronous I/O mode
At the moment only Linux AIO implementation is supported. When running in asynchronous
mode, SysBench queues a specified number of I/O requests using Linux AIO API, then waits
for at least one of submitted requests to complete. After that a new series of I/O requests is
submitted.
Slow mmap() mode
In this mode SysBench will use mmap'ed I/O. However, a separate mmap will be used for each
I/O request due to the limitation of 32-bit architectures (we cannot mmap() the whole file, as
its size migth possibly exceed the maximum of 2 GB of the process address space).
Fast mmap() mode
On 64-bit architectures it is possible to mmap() the whole file into the process address space,
avoiding the limitation of 2 GB on 32-bit platforms.
Using fdatasync() instead of fsync()
Additional flags to open(2)
SysBench can use additional flags to open(2), such as O_SYNC, O_DSYNC and O_DIRECT.
# sysbench ­­test=fileio ­­file­test­mode=rndrw ­­file­total­size=10G ­­file­
extra­flags=direct ­­num­threads=8 run
sysbench 0.4.10: multi­threaded system evaluation benchmark
Running the test with following options:
Number of threads: 8
Extra file open flags: 16384
128 files, 80Mb each
10Gb total file size
Block size 16Kb
Number of random requests for random IO: 10000
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Threads started!
Done.
Operations performed: 6003 Read, 3997 Write, 12800 Other = 22800 Total
Read 93.797Mb Written 62.453Mb Total transferred 156.25Mb (10.366Mb/sec)
663.40 Requests/sec executed
Test execution summary:
total time: 15.0738s
total number of events: 10000
total time taken by event execution: 112.9758
per­request statistics:
min: 0.13ms
avg: 11.30ms
max: 951.96ms
approx. 95 percentile: 44.12ms
Threads fairness:
events (avg/stddev): 1250.0000/46.64
execution time (avg/stddev): 14.1220/0.10
www.percona.com
51
Exercises
Run sysbench on kermit
➢
➢
Try different fileio tests:
– seqwr (sequential write)
– seqrewr (sequential rewrite)
– seqrd (sequential read)
– rndrd (random read)
– rndwr (random write)
– rndrw (combined random read/write)
Try different threads and fine the maximum
www.percona.com
52
Tool #4
Name: pt-diskstats
Function: Aggregate and summarize
/proc/diskstats
Part of: percona-toolkit
Url:
http://www.percona.com/doc/percona-toolkit/pt-diskstats.html
www.percona.com
53
Exercises
●
●
●
Test pt­diskstats on kermit
Try to output only the hard disk
Press “c” and <ENTER>
www.percona.com
54
Know your environment:
MySQL
www.percona.com
55
Know your environment (MySQL)
We need to find the answers to these questions:
●
●
●
●
●
●
Which version is running ? 64Bits ?
How many database ?
Where is the datadir ?
What about replication ?
Do you use some Key Percona Server features ?
Some general InnoDB parameters (buffer pool size, log file size, flush method, flush
log at commit, R/W I/O Threads, I/O Capacity, Pending counters)
●
●
●
●
●
●
●
●
What the size of the database ?
Which engines are used ?
What type of fields are used ?
Do we use foreign keys ?
Do we use views ?
Do we use full text search ?
Do we use partitioning ?
Who has access from where ?
www.percona.com
56
Tool #5
Name: pt-mysql-summary
Function: Summarize MySQL information in
a nice way
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-mysql-summary.html
www.percona.com
57
Back to our questions
Did we answer those questions:
●
●
●
●
●
●
Which version is running ? 64Bits ?
How many database ?
Where is the datadir ?
What about replication ?
Do you use some Key Percona Server features ?
Some general InnoDB parameters (buffer pool size, log file size, flush method, flush
log at commit, R/W I/O Threads, I/O Capacity, Pending counters)
●
●
●
●
●
●
●
●
What the size of the database ?
Which engines are used ?
What type of fields are used ?
Do we use foreign keys ?
Do we use views ?
Do we use full text search ?
Do we use partitioning ?
Who has access from where ?
www.percona.com
58
Tool #6
Name: pt-show-grants
Function: print MySQL grants so you can
effectively replicate, compare and versioncontrol them.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-show-grants.html
www.percona.com
59
Exercises
●
●
Retrieve the information related to
MySQL on kermit and try to answer the
previous questions
Print all the grants and save them on a file
called pluk­grants.txt
www.percona.com
60
It's now time to be intimate with our
database
Let's try to find the answer to these
indiscreet questions:
●
●
●
Which queries are the most resource
eater ?
How are the indexes used ?
Are they duplicate keys ?
www.percona.com
61
Capture data
For the following tools, we need to fetch
some data. There are several solutions:
●
●
●
use slow query log (generally it stores only “slow”
queries, but some fast queries can also be wrong)
use general query log (not the best solution, some
attributes like Query_time are missing)
use a network dump (maybe the best solution)
www.percona.com
62
tcpdump
●
●
Capture data a different period of time
➢ during peak and non peak time
Data with many drop packets are useless
# time tcpdump ­i any ­s 65535 ­x ­n ­q ­tttt 'port 3306 and tcp[1] & 7 == 2 and tcp[3] & 7 == 2' > $(hostname)_queries_$
(date +%Y­%m­%d_%H­%M).tcp
www.percona.com
63
Devananda Van Der Veen explained on the MySQL Performance Blog how to capture traffic
without dropping packets on busy servers. Dropped packets cause pt-query-digest to miss the
response to a request, then see the response to a later request and assign the wrong
execution time to the query. You can change the filter to something like the following to help
capture a subset of the queries. (See http://www.mysqlperformanceblog.com/?p=6092 for
details.)
tcpdump -i any -s 65535 -x -n -q -tttt \
'port 3306 and tcp[1] & 7 == 2 and tcp[3] & 7 == 2'
All MySQL servers running on port 3306 are automatically detected in the tcpdump output.
Therefore, if the tcpdump out contains packets from multiple servers on port 3306 (for
example, 10.0.0.1:3306, 10.0.0.2:3306, etc.), all packets/queries from all these servers will be
analyzed together as if they were one server.
If you’re analyzing traffic for a MySQL server that is not running on port 3306, see --watch-server.
Tool #7
Name: pt-query-digest
Function: Analyze query execution logs and
generate a query report, filter, replay, or
transform queries for MySQL, PostgreSQL,
memcached, and more.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-query-digest.html
www.percona.com
64
pt-query-digest
pt­query­digest ­­watch­server "x.x.x.x:xxxx" ­­type tcpdump file_name.tcp
use ­­watch­server if you have
multiple servers on the same machine or if
you use a different port
www.percona.com
65
Tool #8
Name: pt-index-usage
Function: Read queries from a log and
analyze how they use indexes.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-index-usage.html
Note: the query log needs to be in MySQL‘s slow query log format. If you
need to input a different format, you can use pt-query-digest to translate
the formats. If you don’t specify a filename, the tool reads from STDIN.
www.percona.com
66
Tool #9
Name: pt-duplicate-key-checker
Function: Find duplicate indexes and foreign
keys on MySQL tables.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-duplicate-key-checker.html
www.percona.com
67
Exercises
●
●
●
Make some queries
From a second terminal capture 5 minutes
of mysql traffic
Test the following tools:
➢ pt-query-digest
➢ pt-index-usage
➢ pt-duplicate-key-checker
Do you see something unexpected ?
www.percona.com
68
Know the evolution of
your environment
www.percona.com
69
Know the evolution of your
environment
Now that we are familiar with the environment,
it's time to check and understand its behavior.
Monitoring vs Trending
www.percona.com
70
Monitoring
Tool #10
Name: innotop
Function: top clone for MySQL
License: GNU GPLv2
Url: http://code.google.com/p/innotop
www.percona.com
71
Monitoring
Tool #11
Name: pt-mext
Function: Look at many sample og MySQL
SHOW GLOBAL STATUS side-by-side
License: GNU GPLv2
Url:
http://www.percona.com/doc/percona-toolkit/ptmext.html
www.percona.com
72
pt-mext
pt-mext -r -- mysqladmin ext -i10 -c5
All values are interesting but you should pay even more attention to:
●
●
●
●
●
●
●
●
●
●
●
●
Created_tmp_*
Handler_read_*
Innodb_buffer_pool_read*
Innodb_os_log_written
Key_read_requests
Key_reads
Qchache*
Select_full_*join
Select_range
Select_scan
Table_locks_waited
Threads_running
www.percona.com
73
Exercises
●
●
●
●
Run innotop on kermit
Change the refresh interval to 0.5
Check InnoDB information
Run pt­mext and get 3 columns of
values with an interval of 30 seconds
www.percona.com
74
Trending
Tool #12
Name: cacti & better cacti templates
Function: graphing solution, frontend to
RRDTool.
License: GNU GPLv2
Url: http://cacti.net
http://code.google.com/p/mysql-cacti-templates
www.percona.com
75
Table scans, backup?
www.percona.com
76
Take backup here
www.percona.com
77
max_connections not reached yet
Why more incoming connections?
www.percona.com
78
In 2 hours, almost 6900
seconds replication lag
www.percona.com
79
Why this sudden peak in rangescans?
www.percona.com
80
DB Restart
Time to fill buffer
www.percona.com
81
Save your environment:
Backup
www.percona.com
82
Tool #13
Name: mydumper
Function: high-performance multi-threaded
backup (and restore) toolset for MySQL and
Drizzle
License: GNU GPLv3
Url: http://mydumper.org
https://launchpad.net/mydumper/
www.percona.com
83
mydumper
●
●
●
●
●
Written in C
10x faster than mysqldump
Compression on-the-fly
Multi-threaded
Works fine for MyISAM
time ./mydumper ­h localhost ­u percona ­p mypass ­t 8 ­c ­­regex '^(?!(mysql|test))'
www.percona.com
84
Tool #14
Name: Percona XtraBackup
Function: Open source hot backup tool for
InnoDB and XtraDB databases
License: GNU GPLv2
Url:
http://www.percona.com/software/percona-xtrabackup/
https://launchpad.net/percona-xtrabackup
www.percona.com
CREATE TABLE `rental` (
mysql>
`rental_id` int(11) NOT NULL AUTO_INCREMENT,
...
) ENGINE=InnoDB AUTO_INCREMENT=16050 DEFAULT
CHARSET=utf8;
mysql> SET FOREIGN_KEY_CHECKS=0;
mysql> SET GLOBAL innodb_expand_import=1;
mysql> ALTER TABLE sakila.rental DISCARD
TABLESPACE;
# cp /data/backups/2011-02-03_21-26-08/sakila/rental.
{exp,ibd} /var/lib/mysql/sakila/
# chown -R mysql:mysql /var/lib/mysql/sakila/rental.
{exp,ibd}
mysql> ALTER TABLE sakila.rental IMPORT
TABLESPACE;
mysql> SET FOREIGN_KEY_CHECKS=1;
85
xtrabackup
●
●
●
●
●
●
●
●
●
O’Reilly award MySQL Application of Year
Streaming
Compression
Incremental/Delta
Filtering
Throttling
Parallel Copying
Statistics
Export/Import Table
www.percona.com
86
Tool #15
Name: pt-archiver
Function: Archive rows from a MySQL table
into another table or a file by a low-impact,
forward-only job to nibble old data out of the
table without impacting OLTP queries much.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-archiver.pl
www.percona.com
87
Exercises
●
●
●
●
Backup the employees database using
mydumper with 4 threads and store it
in /home/pluk/backups
Take a full backup using xtrabackup
Insert some data while backup is running
(if you have time :-) )
Take an incremental backup
www.percona.com
88
Maintain your environment
www.percona.com
89
Maintenance
●
●
●
Daily maintenance
Find problems
Replication
www.percona.com
90
Daily maintenance
●
●
●
●
Everything from the MySQL console
Painless database changes
Tested upgrades ?
Extra
www.percona.com
91
From the console
Tool #16
Name: common-schema
Function: provides useful views and routines to
assists in schema analysis, monitoring
management & SQL code generation
License: New BSD License
Url: http://code.google.com/p/common-schema
www.percona.com
92
Schema analysis
no_pk_innodb_tables: List InnoDB tables where no PRIMARY KEY is defined
redundant_keys: List indexes which are made redundant (or duplicate) by other (dominant) keys.
sql_alter_table: Generate ALTER TABLE SQL statements per table, with engine and create options
sql_foreign_keys: Generate create/drop foreign key constraints SQL statements
table_charset: List tables, their character sets and collations
text_columns: List textual columns character sets & collations
Data dimensions
auto_increment_columns: List AUTO_INCREMENT columns and their capacity
data_size_per_engine: Present with data size measurements per storage engine
data_size_per_schema: Present with data size measurements per schema
Monitoring
global_status_diff: Status variables difference over time, with interpolation and extrapolation per time unit
global_status_diff_clean: Status variables difference over time, with spaces where zero diff encountered
global_status_diff_nonzero: Status variables difference over time, only nonzero findings listed
Processes & transactions
innodb_locked_transactions: List locked transactions, the locks they are waiting on and the transactions holding those locks.
innodb_simple_locks: Listing of locks, simplifying INFORMATION_SCHEMA.INNODB_LOCKS
innodb_transactions: Listing of active (InnoDB Plugin) transactions, which are currently performing queries
innodb_transactions_summary: A one line summary of InnoDB's transactions: count, state, locks
processlist_per_userhost: State of processes per user/host: connected, executing, average execution time
processlist_repl: Listing of replication processes: the server's slave threads and any replicating slaves
processlist_summary: Number of connected, sleeping, running connections and slow query count
processlist_top: Listing of active processes sorted by current query runtime, desc (longest first)
Security
routine_privileges: INFORMATION_SCHEMA-like view on routines privileges
sql_grants: Generate SQL GRANT/REVOKE statements for existing accounts; provide with GRANT metadata
sql_show_grants: Generate complete accounts SHOW GRANTS FOR -like output
Internals
innodb_index_rows: number of row cardinality per keys per columns in InnoDB tables
innodb_index_stats: estimated InnoDB depth & split factor of key's B+ Tree
Database changes
Tool #17
Name: pt-online-schema-change
Function: Perform online, non-blocking table
schema changes.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-online-schema-change.html
www.percona.com
93
Tested upgrades
Tool #18
Name: pt-upgrade
Function: execute queries on multiple
servers and check for differences
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-upgrade.html
www.percona.com
94
Extra
Tool #19
Name: pt-deadlock-logger
Function: extract and log MySQL deadlock
information
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-deadlock-logger.html
www.percona.com
95
Extra
Tool #20
Name: pt-kill
Function: kill MySQL queries that match
certain criteria
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-kill.html
www.percona.com
96
Exercises
●
●
●
●
Find the biggest table per database
Change the engine of table .... to engine
innodb. This change must be done
online.
Using information_schema what's the size
of the dataset ?
Examine the values of the
auto_increments (from common_schema)
www.percona.com
97
SELECT * FROM common_schema.data_size_per_schema;
SELECT * FROM common_schema.innodb_index_stats WHERE
TABLE_NAME='employees';
Find problems
●
●
What do you advise me doctor ?
Get the symptoms when it hurts !
www.percona.com
98
Tool #21
Name: pt-variable-advisor
Function: analyzse MySQL variables and
advise on possible problems
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-variable-advisor.html
Note: this tool considers only static values and not the evolution of values,
it should be used in addition of tool #11: pt-mext
www.percona.com
99
Get the symptoms when it hurts !
To perform this action, we will use 3 new
tools :
●
●
●
pt-stalk
pt-collect
pt-sift
www.percona.com
100
Extra
Tool #22
Name: pt-stalk
Function: wait for a condition to occur then
begin collecting data.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-stalk.html
www.percona.com
101
Extra
Tool #23
Name: pt-collect
Function: collect information from a server
for some period of time.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-collect.html
www.percona.com
102
Extra
Tool #24
Name: pt-sift
Function: browses files created by pt-collect.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-collect.html
www.percona.com
103
Replication
Tools focusing on replication:
●
●
●
●
●
●
pt-slave-delay
pt-slave-find
pt-slave-restart
pt-heartbeat
pt-table-checksum
pt-table-sync
www.percona.com
104
Tool #25
Name: pt-slave-delay
Function: make a MySQL slave server lag
behind its master.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-slave-delay.html
www.percona.com
105
Tool #26
Name: pt-slave-find
Function: find and print replication hierarchy
tree of MySQL slaves.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-slave-find.html
www.percona.com
106
Tool #27
Name: pt-slave-restart
Function: watch and restart MySQL
replication after errors.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-slave-restart.html
www.percona.com
107
Tool #28
Name: pt-heartbeat
Function: monitor MySQL replication delay.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-slave-restart.html
www.percona.com
108
Tool #29
Name: pt-table-checksum
Function: perform an online replication
consistency check, or checksum MySQL
tables efficiently on one or many servers.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-table-checksum.html
www.percona.com
109
Tool #30
Name: pt-table-sync
Function: synchronize MySQL table data
efficiently.
Part of: percona-toolkit
Url: http://www.percona.com/doc/percona-toolkit/pt-table-sync.html
www.percona.com
110
Exercises
●
●
●
●
●
●
●
Start the machine gonzo
Setup “gonzo” as slave of kermit using
XtraBackup
Prepare stalk on gonzo to collect data when the
replication breaks
Remove one row on kermit, add it back to
gonzo and then add it again on kermit
Remove some rows in some tables in employees
database on gonzo
Run checksum on kermit
Fix the tables by syncing them
www.percona.com
111
/q
!V
zO
G
B
N
E
kJZ
F
-2
0
,1
g
R
H
h
T
iv
b
td
fP
C
s
U
L
Q
S
y
lM
u
A
m
a
n
rco
e
.p
w
[email protected]
@lefred
We're Hiring! www.percona.com/about-us/careers/
Thank you !
114

Documents pareils