Testing early mysql releases in a sandbox

1,101 views
1,021 views

Published on

Testing early versions of MySQL 5.6 using MySQL Sandbox.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,101
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Testing early mysql releases in a sandbox

  1. 1. Test early MySQL versions in a sandbox Giuseppe Maxia QA Director, Continuent, Inc Oracle ACE Director for MySQL 1Wednesday, March 21, 12
  2. 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.comWednesday, March 21, 12
  3. 3. MySQL Sandbox lightning presentationWednesday, March 21, 12
  4. 4. I used to install a lot of MySQL databases for testing MANUALLYWednesday, March 21, 12
  5. 5. Then, I decided to use Perl ...Wednesday, March 21, 12
  6. 6. DBA pop quizWednesday, March 21, 12
  7. 7. HOW MANY KEYSTROKES to install a MySQL server?Wednesday, March 21, 12
  8. 8. HOW MANY KEYSTROKES to install a MySQL server? 10 sb 5.0.83 1234567890Wednesday, March 21, 12
  9. 9. HOW MANY KEYSTROKES to install 3 MySQL servers in replication?Wednesday, March 21, 12
  10. 10. HOW MANY KEYSTROKES to install 3 MySQL servers in replication? 11 sb r5.0.83 12345678901Wednesday, March 21, 12
  11. 11. HOW LONG does it take to install a MySQL server?Wednesday, March 21, 12
  12. 12. HOW LONG does it take to install a MySQL server? < 5 seconds time sb 5.0.83 0m1.518sWednesday, March 21, 12
  13. 13. HOW LONG does it take to install 3 MySQL servers in replication?Wednesday, March 21, 12
  14. 14. HOW LONG does it take to install 3 MySQL servers in replication? < 10 seconds sb 5.0.83 0m4.515sWednesday, March 21, 12
  15. 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 SECONDSWednesday, March 21, 12
  16. 16. overview MySQL MySQL server server Data DB1 Data DB1 DB2 DB3 DATA DIRECTORY DB2 DB3 PORT SOCKETWednesday, March 21, 12
  17. 17. overview MySQL MySQL server server Data DB1 SAME Data DB1 DB2 DB3 DATA DB2 DB3 DIRECTORY? /var/lib/mysql /var/lib/mysql DATA CORRUPTIONWednesday, March 21, 12
  18. 18. overview MySQL MySQL server server SAME PORT or SOCKET? 3306 3306 /tmp/mysql.sock /tmp/mysql.sock DOES NOT STARTWednesday, March 21, 12
  19. 19. The hard wayWednesday, March 21, 12
  20. 20. The hard way Read the manualWednesday, March 21, 12
  21. 21. The hard way try to figure out Read the manual what to changeWednesday, March 21, 12
  22. 22. The hard way try to figure out Read the manual Install what to changeWednesday, March 21, 12
  23. 23. The easy way MySQL Sandbox $ make_sandbox /path/to/mysql-5.1.54_linux.tar.gz # it should work alwaysWednesday, March 21, 12
  24. 24. The easier way Prepare once Install many times # some $ make_sandbox 5.1.54 # preliminary # workWednesday, March 21, 12
  25. 25. The easiest way Prepare once Install many times # some # preliminary $ sb 5.1.54 # workWednesday, March 21, 12
  26. 26. MySQL Sandbox VERSION MySQL server Data DB1 DB2 DB3 $SANDBOX_HOME/msb_VERSION/data VERSION /tmp/mysql_VERSION.sockWednesday, March 21, 12
  27. 27. MySQL Sandbox 5.1.54 MySQL server Data DB1 DB2 DB3 $SANDBOX_HOME/msb_5_1_54/data 5154 /tmp/mysql_5154.sockWednesday, March 21, 12
  28. 28. MySQL Sandbox 5.5.9 MySQL server Data DB1 DB2 DB3 $SANDBOX_HOME/msb_5_5_09/data 5509 /tmp/mysql_5509.sockWednesday, March 21, 12
  29. 29. Single Sandbox MySQL customized scripts server start stop restart status clear send_kill useWednesday, March 21, 12
  30. 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_allWednesday, March 21, 12
  31. 31. Where do you get it •from CPAN sudo su - cpan MySQL::Sandbox •from launchpad http://launchpad.net/mysql-sandboxWednesday, March 21, 12
  32. 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.54Wednesday, March 21, 12
  33. 33. default architecture $HOME /sandboxes opt expanded tarballs $SANDBOX_HOME mysql $SANDBOX_BINARY installed sandboxesWednesday, March 21, 12
  34. 34. default architecture $HOME /sandboxes opt msb_5_0_91 mysql msb_5_1_48 5.0.91 rsandbox_5_1_48 5.1.45 master 5.1.48 node1 5.5.4 node2Wednesday, March 21, 12
  35. 35. MySQL Sandbox cookbook $ perldoc MySQL::Sandbox::RecipesWednesday, March 21, 12
  36. 36. Early MySQL versions in a sandbox 5.6 5.6 5.6Wednesday, March 21, 12
  37. 37. Where to get the software http://labs.mysql.com http://dev.mysql.comWednesday, March 21, 12
  38. 38. Wednesday, March 21, 12
  39. 39. Where is MySQL 5.6Wednesday, March 21, 12
  40. 40. The bleeding edge http://code.launchpad.net/mysql-serverWednesday, March 21, 12
  41. 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.gzWednesday, March 21, 12
  42. 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_5Wednesday, March 21, 12
  43. 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. 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
  45. 45. testing innodb fulltext show create table mysql_manualG ****************** 1. row ********* Table: mysql_manual Create 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=latin1Wednesday, March 21, 12
  46. 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. 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. 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. 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_5Wednesday, March 21, 12
  50. 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: YesWednesday, March 21, 12
  51. 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 itWednesday, March 21, 12
  52. 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. 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
  54. 54. fixing replication tables use 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: 0Wednesday, March 21, 12
  55. 55. Look at the new features show slave statusG .... .... Master_UUID: be3c022a-726f-11e1-a26a- a64f991393aa Master_Info_File: mysql.slave_master_infoWednesday, March 21, 12
  56. 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: 86400Wednesday, March 21, 12
  57. 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: 3Wednesday, March 21, 12
  58. 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
  59. 59. DEMOWednesday, March 21, 12
  60. 60. Participate!Wednesday, March 21, 12
  61. 61. THANKS Lets 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

×