The Codex of Business Writing Software for Real-World Solutions 2.pptx
Testing early mysql releases in a sandbox
1. Test early MySQL versions in a sandbox
Giuseppe Maxia
QA Director, Continuent, Inc
Oracle ACE Director for MySQL
1
Wednesday, March 21, 12
2. 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
3. MySQL Sandbox
lightning
presentation
Wednesday, March 21, 12
4. I used to install a lot of
MySQL databases for
testing
MANUALLY
Wednesday, March 21, 12
8. HOW MANY KEYSTROKES
to install a MySQL server?
10
sb 5.0.83
1234567890
Wednesday, March 21, 12
9. HOW MANY KEYSTROKES
to install 3 MySQL servers
in replication?
Wednesday, March 21, 12
10. HOW MANY KEYSTROKES
to install 3 MySQL servers
in replication?
11
sb r5.0.83
12345678901
Wednesday, March 21, 12
11. HOW LONG
does it take
to install a MySQL server?
Wednesday, March 21, 12
12. HOW LONG
does it take
to install a MySQL server?
< 5 seconds
time sb 5.0.83
0m1.518s
Wednesday, March 21, 12
13. HOW LONG
does it take
to install 3 MySQL servers in
replication?
Wednesday, March 21, 12
14. HOW LONG
does it take
to install 3 MySQL servers in
replication?
< 10 seconds
sb 5.0.83
0m4.515s
Wednesday, March 21, 12
15. MySQL Sandbox
http://mysqlsandbox.net
• 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
Wednesday, March 21, 12
16. overview
MySQL MySQL
server server
Data DB1 Data DB1
DB2 DB3
DATA DIRECTORY DB2 DB3
PORT
SOCKET
Wednesday, March 21, 12
17. overview
MySQL MySQL
server server
Data DB1
SAME Data DB1
DB2 DB3
DATA DB2 DB3
DIRECTORY?
/var/lib/mysql /var/lib/mysql
DATA CORRUPTION
Wednesday, March 21, 12
18. overview
MySQL MySQL
server server
SAME
PORT or
SOCKET?
3306 3306
/tmp/mysql.sock /tmp/mysql.sock
DOES NOT START
Wednesday, March 21, 12
20. The hard way
Read the manual
Wednesday, March 21, 12
21. The hard way
try to figure out
Read the manual
what to change
Wednesday, March 21, 12
22. The hard way
try to figure out
Read the manual Install
what to change
Wednesday, March 21, 12
23. The easy way
MySQL Sandbox
$ make_sandbox
/path/to/mysql-5.1.54_linux.tar.gz
# it should work always
Wednesday, March 21, 12
24. The easier way
Prepare once Install many times
# some $ make_sandbox 5.1.54
# preliminary
# work
Wednesday, March 21, 12
25. The easiest way
Prepare once Install many times
# some
# preliminary $ sb 5.1.54
# work
Wednesday, March 21, 12
26. MySQL Sandbox
VERSION
MySQL
server
Data DB1
DB2 DB3
$SANDBOX_HOME/msb_VERSION/data
VERSION
/tmp/mysql_VERSION.sock
Wednesday, March 21, 12
27. MySQL Sandbox
5.1.54
MySQL
server
Data DB1
DB2 DB3
$SANDBOX_HOME/msb_5_1_54/data
5154
/tmp/mysql_5154.sock
Wednesday, March 21, 12
28. MySQL Sandbox
5.5.9
MySQL
server
Data DB1
DB2 DB3
$SANDBOX_HOME/msb_5_5_09/data
5509
/tmp/mysql_5509.sock
Wednesday, March 21, 12
29. Single Sandbox
MySQL customized scripts
server
start
stop
restart
status
clear
send_kill
use
Wednesday, March 21, 12
30. Multiple Sandbox
MySQL customized scripts
server
start_all
stop_all
restart_all m n1
status_all s1 n2
clear_all s2 n3
send_kill_a
ll
use_all
Wednesday, March 21, 12
31. Where do you get it
•from CPAN
sudo su -
cpan MySQL::Sandbox
•from launchpad
http://launchpad.net/mysql-sandbox
Wednesday, March 21, 12
32. The easy replication way
MySQL Sandbox
$ make_replication_sandbox
/path/to/mysql-5.1.54_linux.tar.gz
Prepare once Install many times
# some $ make_replication_sandbox
# preparation 5.1.54
Wednesday, March 21, 12
33. default architecture
$HOME
/sandboxes opt
expanded
tarballs
$SANDBOX_HOME
mysql
$SANDBOX_BINARY
installed
sandboxes
Wednesday, March 21, 12
40. The bleeding edge
http://code.launchpad.net/mysql-server
Wednesday, March 21, 12
41. HANDS ON
ls labs
mysql-5.6.2-m5-osx10.6-x86_64.tar.gz
mysql-5.6.5-m8-osx10.7-.tar.gz
mysql-5.6.3-labs-innodb-fts-osx10.5-
x86.tar.gz
mysql-5.6.4-m7-osx10.5-x86.tar.gz
Wednesday, March 21, 12
42. Innodb fulltext
make_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
43. testing innodb fulltext
~/sandboxes/msb_5_6_5/use
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.6.5-m8 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. 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
44. testing innodb fulltext
create 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
46. testing innodb fulltext
Using a copy of MySQL manual to fill the table
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
....
Wednesday, March 21, 12
47. testing innodb fulltext
select 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
48. testing innodb fulltext
select 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
49. testing some replication
make_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
50. testing some replication
~/sandboxes/rsandbox_mysql-5_6_5/s1
show slave statusG
******** 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
51. testing some replication
~/sandboxes/rsandbox_mysql-5_6_5/s1
show slave statusG
....
Master_Server_Id: 1
Master_UUID: be3c022a-726f-11e1-a26a-a64f991393aa
Master_Info_File: /Users/gmax/sandboxes/
rsandbox_mysql-5_6_5/node1/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay
log; waiting for the slave I/O thread to update it
Wednesday, March 21, 12
52. 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
53. 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
55. Look at the new features
show slave statusG
....
....
Master_UUID: be3c022a-726f-11e1-a26a-
a64f991393aa
Master_Info_File:
mysql.slave_master_info
Wednesday, March 21, 12
56. Look at the new features
select * from mysql.slave_master_infoG
*************************** 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
57. Look at the new features
select * from mysql.slave_relay_log_infoG
*************************** 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: 0
Number_of_workers: 3
Wednesday, March 21, 12
58. Look at the new features
select * from mysql.slave_worker_infoG
************** 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: 1199
Checkpoint_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
61. THANKS
Let's talk!
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.
Wednesday, March 21, 12