Testing early mysql releases in a sandbox

Post on 17-May-2015

779 views 1 download

Tags:

description

Testing early versions of MySQL 5.6 using MySQL Sandbox.

Transcript of Testing early mysql releases in a sandbox

Test early MySQL versions in a sandboxGiuseppe Maxia

QA Director, Continuent, Inc

Oracle ACE Director for MySQL

1Wednesday, March 21, 12

about me - Giuseppe Maxia• a.k.a. The Data Charmer• QA Director at Continuent, Inc• Long time hacking with MySQL features• Formerly, community manager,db consultant, designer,

coder.• A passion for QA and open source• Blogger

•http://datacharmer.blogspot.com

Wednesday, March 21, 12

MySQL Sandbox lightning

presentation

Wednesday, March 21, 12

I used to install a lot of MySQL databases for

testing

MANUALLY

Wednesday, March 21, 12

Then, I decided to use Perl ...

Wednesday, March 21, 12

DBA pop quiz

Wednesday, March 21, 12

HOW MANY KEYSTROKES to install a MySQL server?

Wednesday, March 21, 12

HOW MANY KEYSTROKES to install a MySQL server?

10sb 5.0.831234567890

Wednesday, March 21, 12

HOW MANY KEYSTROKES to install 3 MySQL servers

in replication?

Wednesday, March 21, 12

HOW MANY KEYSTROKES to install 3 MySQL servers

in replication?

11sb r5.0.8312345678901

Wednesday, March 21, 12

HOW LONG does it take

to install a MySQL server?

Wednesday, March 21, 12

HOW LONG does it take

to install a MySQL server?

< 5 secondstime sb 5.0.83

0m1.518sWednesday, March 21, 12

HOW LONG does it take

to install 3 MySQL servers in replication?

Wednesday, March 21, 12

HOW LONG does it take

to install 3 MySQL servers in replication?

< 10 secondssb 5.0.830m4.515s

Wednesday, March 21, 12

MySQL Sandbox

• Free software (Perl under GPL)

• One (unix) host

• Many database servers

• Single or multiple sandboxes

• Customized scripts to use the servers

• Standard or circular replication

• Installs IN SECONDS

http://mysqlsandbox.net

Wednesday, March 21, 12

overview

MySQLserver

MySQLserver

Data DB1

DB2 DB3

Data DB1

DB2 DB3DATA DIRECTORY

PORT

SOCKET

Wednesday, March 21, 12

overview

MySQLserver

MySQLserver

Data DB1

DB2 DB3

Data DB1

DB2 DB3

SAME DATA

DIRECTORY?

DATA CORRUPTION

/var/lib/mysql /var/lib/mysql

Wednesday, March 21, 12

overview

MySQLserver

MySQLserver

SAME PORT or SOCKET?

DOES NOT START

/tmp/mysql.sock /tmp/mysql.sock

33063306

Wednesday, March 21, 12

The hard way

Wednesday, March 21, 12

The hard way

Read the manual

Wednesday, March 21, 12

The hard way

Read the manual try to figure out what to change

Wednesday, March 21, 12

The hard way

Read the manual try to figure out what to change Install

Wednesday, March 21, 12

The easy way

$ make_sandbox \ /path/to/mysql-5.1.54_linux.tar.gz

# it should work always

MySQL Sandbox

Wednesday, March 21, 12

The easier way

$ make_sandbox 5.1.54

Prepare once Install many times

# some # preliminary # work

Wednesday, March 21, 12

The easiest way

$ sb 5.1.54

Prepare once Install many times

# some # preliminary # work

Wednesday, March 21, 12

MySQL Sandbox

MySQLserver

VERSION

$SANDBOX_HOME/msb_VERSION/dataData DB1

DB2 DB3

VERSION

/tmp/mysql_VERSION.sock

Wednesday, March 21, 12

MySQL Sandbox

MySQLserver

5.1.54

$SANDBOX_HOME/msb_5_1_54/dataData DB1

DB2 DB3

5154

/tmp/mysql_5154.sock

Wednesday, March 21, 12

MySQL Sandbox

MySQLserver

5.5.9

$SANDBOX_HOME/msb_5_5_09/dataData DB1

DB2 DB3

5509

/tmp/mysql_5509.sock

Wednesday, March 21, 12

Single SandboxMySQLserver

customized scripts

startstop

restartstatusclear

send_killuse

Wednesday, March 21, 12

Multiple SandboxMySQLserver

customized scripts

start_allstop_all

restart_allstatus_allclear_all

send_kill_all

use_all

ms1s2

n1n2n3

Wednesday, March 21, 12

Where do you get it

•from CPANsudo su -

cpan MySQL::Sandbox

•from launchpadhttp://launchpad.net/mysql-sandbox

Wednesday, March 21, 12

The easy replication way

# some# preparation

MySQL Sandbox

$ make_replication_sandbox \ /path/to/mysql-5.1.54_linux.tar.gz

Prepare once Install many times

$ make_replication_sandbox 5.1.54

Wednesday, March 21, 12

default architecture

$HOME

/sandboxes opt

mysql

$SANDBOX_HOME

$SANDBOX_BINARY

expandedtarballs

installed sandboxes

Wednesday, March 21, 12

default architecture

$HOME

/sandboxes opt

mysql

5.0.91

5.1.45

5.1.48

5.5.4

msb_5_0_91

msb_5_1_48

rsandbox_5_1_48

master

node1

node2Wednesday, March 21, 12

MySQL Sandbox cookbook

$ perldoc MySQL::Sandbox::Recipes

Wednesday, March 21, 12

Early MySQL versions in a sandbox

5.6

5.6

5.6

Wednesday, March 21, 12

Where to get the software

http://dev.mysql.com

http://labs.mysql.com

Wednesday, March 21, 12

Wednesday, March 21, 12

Where is MySQL 5.6

Wednesday, March 21, 12

The bleeding edge

http://code.launchpad.net/mysql-server

Wednesday, March 21, 12

HANDS ONls labs

mysql-5.6.2-m5-osx10.6-x86_64.tar.gzmysql-5.6.5-m8-osx10.7-.tar.gzmysql-5.6.3-labs-innodb-fts-osx10.5-x86.tar.gzmysql-5.6.4-m7-osx10.5-x86.tar.gz

Wednesday, March 21, 12

Innodb fulltextmake_sandbox mysql-5.6.5-m8-osx10.7-.tar.gz ........Your sandbox server was installed in $HOME/sandboxes/msb_5_6_5

Wednesday, March 21, 12

testing innodb fulltext~/sandboxes/msb_5_6_5/useWelcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 2

Server version: 5.6.5-m8 Source distributionCopyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respective owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql [localhost] {msandbox} ((none)) >

Wednesday, March 21, 12

testing innodb fulltextcreate table mysql_manual ( id int not null auto_increment , title varchar(100) not null, chapter mediumtext, primary key (id),fulltext index (title, chapter)) engine = INNODB;

Wednesday, March 21, 12

testing innodb fulltextshow create table mysql_manual\G****************** 1. row ********* Table: mysql_manualCreate Table: CREATE TABLE `mysql_manual` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL, `chapter` mediumtext, PRIMARY KEY (`id`), FULLTEXT KEY `title` (`title`,`chapter`)) ENGINE=InnoDB DEFAULT CHARSET=latin1

Wednesday, March 21, 12

testing innodb fulltext

for P in $PWD/refman-5.5-en.html-chapter/*.html; do echo "insert into mysql_manual(title,chapter) values ('`basename $P .html`', load_file('$P'));"; done | ~/sandboxes/msb_5_6_5/use -vv test....insert into mysql_manual(title,chapter) values ('stored-programs-views', load_file('/Users/gmax/labs/refman-5.5-en.html-chapter/stored-programs-views.html'))Query OK, 1 row affected....

Using a copy of MySQL manual to fill the table

Wednesday, March 21, 12

testing innodb fulltextselect title from mysql_manual where match(title,chapter) against ('+optimize +queries' in boolean mode);+-------------------------+| title |+-------------------------+| backup-and-recovery |...| extending-mysql || functions || ha-overview |...| optimization || partitioning || replication || restrictions |+-------------------------+16 rows in set (0.00 sec)

Wednesday, March 21, 12

testing innodb fulltextselect title from mysql_manual where match(title,chapter) against ('"optimize queries" @10' in boolean mode);+------------------+| title |+------------------+| introduction || optimization |+------------------+2 rows in set (0.00 sec)

#### @10 = proximity operator##

Wednesday, March 21, 12

testing some replicationmake_replication_sandbox mysql-5.6.5-m8-osx10.7-.tar.gz ........replication directory installed in $HOME/sandboxes/rsandbox_mysql-5_6_5

Wednesday, March 21, 12

testing some replication~/sandboxes/rsandbox_mysql-5_6_5/s1show slave status\G******** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 127.0.0.1 Master_User: rsandbox Master_Port: 12630 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 2524 Relay_Log_File: mysql_sandbox12631-relay-bin.000002 Relay_Log_Pos: 2677 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes

Wednesday, March 21, 12

testing some replication~/sandboxes/rsandbox_mysql-5_6_5/s1show slave status\G....Master_Server_Id: 1Master_UUID: be3c022a-726f-11e1-a26a-a64f991393aaMaster_Info_File: /Users/gmax/sandboxes/rsandbox_mysql-5_6_5/node1/data/master.infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

Wednesday, March 21, 12

uncovering replication features

show variables like '%info%';+---------------------------+----------------+| Variable_name | Value |+---------------------------+----------------+| master_info_repository | FILE || relay_log_info_file | relay-log.info || relay_log_info_repository | FILE || sync_master_info | 0 || sync_relay_log_info | 0 |+---------------------------+----------------+show variables like '%worker%';+------------------------+-------+| Variable_name | Value |+------------------------+-------+| slave_parallel_workers | 0 |+------------------------+-------+

Wednesday, March 21, 12

uncovering replication features

STOP SLAVE;

set global master_info_repository='table';Query OK, 0 rows affected (0.00 sec)

slave1 [localhost] {msandbox} ((none)) > set global relay_log_info_repository='table';Query OK, 0 rows affected (0.00 sec)

slave1 [localhost] {msandbox} ((none)) > set global slave_parallel_workers=3;Query OK, 0 rows affected (0.00 sec)

Wednesday, March 21, 12

fixing replication tablesuse mysql;

slave1 [localhost] {msandbox} (mysql) > alter table slave_master_info engine=innodb;Query OK, 1 row affected (0.01 sec)Records: 1 Duplicates: 0 Warnings: 0

slave1 [localhost] {msandbox} (mysql) > alter table slave_relay_log_info engine=innodb;Query OK, 1 row affected (0.01 sec)Records: 1 Duplicates: 0 Warnings: 0

slave1 [localhost] {msandbox} (mysql) > alter table slave_worker_info engine=innodb;Query OK, 0 rows affected (0.01 sec)Records: 0 Duplicates: 0 Warnings: 0

Wednesday, March 21, 12

Look at the new featuresshow slave status\G........Master_UUID: be3c022a-726f-11e1-a26a-a64f991393aaMaster_Info_File: mysql.slave_master_info

Wednesday, March 21, 12

Look at the new featuresselect * from mysql.slave_master_info\G*************************** 1. row ****** Master_id: 101 Number_of_lines: 22 Master_log_name: mysql-bin.000001 Master_log_pos: 2524 Host: 127.0.0.1 User_name: rsandbox User_password: rsandbox Port: 12630.... Heartbeat: 1800 Bind: Ignored_server_ids: 0 Uuid: be3c022a-726f-11e1-a26a-a64f991393aa Retry_count: 86400

Wednesday, March 21, 12

Look at the new featuresselect * from mysql.slave_relay_log_info\G*************************** 1. row *************** Master_id: 101 Number_of_lines: 6 Relay_log_name: ./mysql_sandbox12631-relay-bin.000002 Relay_log_pos: 2677 Master_log_name: mysql-bin.000001 Master_log_pos: 2524 Sql_delay: 0Number_of_workers: 3

Wednesday, March 21, 12

Look at the new featuresselect * from mysql.slave_worker_info\G************** 3. row ********************* Master_id: 101 Worker_id: 2 Relay_log_name: ./mysql_sandbox12631-relay-bin.000003 Relay_log_pos: 1394 Master_log_name: mysql-bin.000001 Master_log_pos: 3651 Checkpoint_relay_log_name: ./mysql_sandbox12631-relay-bin.000003 Checkpoint_relay_log_pos: 1199Checkpoint_master_log_name: mysql-bin.000001 Checkpoint_master_log_pos: 3456 Checkpoint_seqno: 0 Checkpoint_group_size: 64 Checkpoint_group_bitmap:

Wednesday, March 21, 12

DEMO

Wednesday, March 21, 12

Participate!

Wednesday, March 21, 12

This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

THANKSLet's talk!

Wednesday, March 21, 12