Activity Not Available
I Use This!


Analyzed about 1 month ago. based on code collected about 1 month ago.
Posted 2 days ago by Severalnines
Remember to join us Tuesday, August 30th for the first part of our upcoming webinar trilogy on MySQL Query Tuning. This first of three in-depth webinar sessions led by Krzysztof Książek, Senior Support Engineer at Severalnines, covers MySQL query ... [More] tuning process and tools. When done right, Tuning MySQL queries and indexes can increase the performance of your application and decrease response times. We will be covering this complex topic over the course of three webinars of 60 minutes each, so feel free to also register for parts 2 & 3 here. In this first part of the trilogy we will discuss building, collecting, analysing, tuning and testing processes as well as the main tools involved, tcpdump and pt-query-digest. Register below to join us and get your questions answered around MySQL query tuning. Date & Registration Part 1: Query tuning process and tools Tuesday, August 30th Register Feel free to also register for Parts 2 & 3. Agenda MySQL Query Tuning Trilogy: Process and tools Query tuning process Build Collect Analyse Tune Test Tools tcpdump pt-query-digest Speaker Krzysztof Książek, Senior Support Engineer at Severalnines, is a MySQL DBA with experience in managing complex database environments for companies like Zendesk, Chegg, Pinterest and Flipboard. He’s the main author of the Severalnines blog and webinar series: Become a MySQL DBA. We look forward to “seeing” you there! Tags: MySQLquery tuningsql tuningtcpdumppt-query-digestMariaDBperformancewebinar [Less]
Posted 2 days ago by Mark Callaghan
I spent a few years at Facebook where I was extremely busy helping to make MySQL better at web-scale. I worked a lot with Domas. He found so many problems and I helped fix them along with a few others (the MySQL db-eng team was small). Domas made it ... [More] easy to understand what was broken and there was a lot of low-hanging fruit. This slide deck is one perspective on what we did. I doubt I have the energy to go through another few years like that, but it was a great time. The timing was also right as there were many people at Oracle/MySQL pushing to make MySQL scale on modern hardware. [Less]
Posted 3 days ago by MySQL Performance Blog
Percona announces the release of Percona Server 5.6.32-78.0 on August 22nd, 2016. Download the latest version from the Percona web site or the Percona Software Repositories. Based on MySQL 5.6.32, including all the bug fixes in it, Percona Server ... [More] 5.6.32-78.0 is the current GA release in the Percona Server 5.6 series. Percona Server is open-source and free – this is the latest release of our enhanced, drop-in replacement for MySQL. Complete details of this release are available in the 5.6.32-78.0 milestone on Launchpad. New Features: Percona Server Audit Log Plugin now supports filtering by user and SQL command. Percona Server now supports tree map file block allocation strategy for TokuDB. Bugs Fixed: Fixed potential cardinality 0 issue for TokuDB tables if ANALYZE TABLE finds only deleted rows and no actual logical rows before it times out. Bug fixed #1607300 (#1006, #732). TokuDB database.table.index names longer than 256 characters could cause server crash if background analyze table status was checked while running. Bug fixed #1005. PAM Authentication Plugin would abort authentication while checking UNIX user group membership if there were more than a thousand members. Bug fixed #1608902. If DROP DATABASE would fail to delete some of the tables in the database, the partially-executed command is logged in the binlog as DROP TABLE t1, t2, ... for the tables for which drop succeeded. A slave might fail to replicate such DROP TABLE statement if there exist foreign key relationships to any of the dropped tables and the slave has a different schema from master. Fix by checking, on the master, whether any of the database to be dropped tables participate in a Foreign Key relationship, and fail the DROP DATABASE statement immediately. Bug fixed #1525407 (upstream #79610). PAM Authentication Plugin didn’t support spaces in the UNIX user group names. Bug fixed #1544443. Due to security reasons ld_preload libraries can now only be loaded from the system directories (/usr/lib64, /usr/lib) and the MySQL installation base directory. Percona Server 5.6 could not be built with the -DMYSQL_MAINTAINER_MODE=ON option. Bug fixed #1590454. In the client library, any EINTR received during network I/O was not handled correctly. Bug fixed #1591202 (upstream #82019). The included .gitignore in the percona-server source distribution had a line *.spec, which means someone trying to check in a copy of the percona-server source would be missing the spec file required to build the RPMs. Bug fixed #1600051. Audit Log Plugin did not transcode queries. Bug fixed #1602986. LeakSanitizer-enabled build failed to bootstrap server for MTR. Bug fixed #1603978 (upstream #81674). Fixed MYSQL_SERVER_PUBLIC_KEY connection option memory leak. Bug fixed #1604419. The fix for bug #1341067 added a call to free some of the heap memory allocated by OpenSSL. This is not safe for repeated calls if OpenSSL is linked twice through different libraries and each is trying to free the same. Bug fixed #1604676. If the changed page bitmap redo log tracking thread stops due to any reason, then shutdown will wait for a long time for the log tracker thread to quit, which it never does. Bug fixed #1606821. Audit Log Plugin events did not report the default database. Bug fixed #1435099. Canceling the TokuDB Background ANALYZE TABLE job twice or while it was in the queue could lead to server assertion. Bug fixed #1004. Fixed various spelling errors in comments and function names. Bug fixed #728 (Otto Kekäläinen). Implemented set of fixes to make PerconaFT build and run on the AArch64 (64-bit ARMv8) architecture. Bug fixed #726 (Alexey Kopytov). Other bugs fixed: #1603073, #1604323, #1604364, #1604462, #1604774, #1606782, #1607224, #1607359, #1607606, #1607607, #1607671, #1608385, #1608437, #1608845, #1609422, #1610858, #1612084, #1612551, #1455430, #1455432, #1610242, #998, #1003, #729, and #730. Release notes for Percona Server 5.6.32-78.0 are available in the online documentation. Please report any bugs on the launchpad bug tracker. [Less]
Posted 3 days ago by MariaDB
Mon, 2016-08-22 22:40GuestThe following is a guest blog post from Subodh Kumar, head of technology at Magicbricks, India's largest online property portal. To support our growing online traffic, Magicbricks migrated from a proprietary database to ... [More] MariaDB (version 10.1.x). With this migration, we’ve re-factored our application architecture to separate read and write database calls. This has allowed us to load balance our heavy read calls across multiple instances of Slaves without any worries of lag during data syncs. Using MariaDB, we are now able to serve approximately 7 million page views (from our web and mobile sites) and approximately 6 million API calls per day. MariaDB has not only helped us support this high volume of traffic but has also smoothened our database related operations. We were easily able to setup a multi-master, near real-time replication. Not to mention, this is with no additional license requirements which was a primary consideration with proprietary database servers that we had previously deployed. This deployment has made Magicbricks scale its applications with any number of database instances as desired. The average load factor with the previous proprietary database was around 15 to 20, which has now been tremendously reduced to approximately three after the MariaDB deployment. Tags: CommunityScaling [Less]
Posted 3 days ago by Trent Hornibrook
Yesterday I wrote a blog on some metrics I like to start with when running a delivery team. There are two items that I missed in blog.Building the right thingChecking those metrics"Building the thing right" is not "building the right ... [More] thing"@mysqldbahelp nice write up. I think they cover "are we building the thing right" but need others for "are we building the right thing".— mark barber (@mark_barbs) 22 August 2016 Agile Coach Mark Barber reminded me that measurement is all well and good, but if the item being built is not 'right' then its waste.Having showcases with appropriate stakeholders should ensure that the thing being built is indeed right. The closer you can get the business into the workings of the delivery team, the faster that feedback will be consequently reducing the time waste of 'doing the wrong thing'.Invest in looking at your metricsCapturing metrics is all well and good, but pointless if the data is not looked at at a regular cadence. Set aside time every two weeks to a month to look at the data and try and diagnose what it means. Better yet, take it to the team and have them provide input into the diagnosis (which will generate buy in on capturing the data).Look to make a single change at that cadence and checkpoint at the next heart beat. Not every change will be positive, but doing nothing   is significantly worse than trying something and failing (fast). [Less]
Posted 3 days ago by MySQL Performance Blog
In this post, we’ll look at a scalability fix for issues the query rewrite plugin had on performance. Several months ago, Vadim blogged about the impact of a query rewrite plugin on performance. We decided to re-evaluate the latest release of ... [More] 5.7(5.7.14), which includes fixes for this issue. I reran tests for MySQL 5.7.13 and 5.7.14 using the same setup and the same test: sysbench OLTP_RO without and with the query rewrite plugin enabled. MySQL 5.7.14 performs much better, with almost no overhead. Let’s check PMP for these runs: MySQL 5.7.13 206 __lll_lock_wait(,pthread_mutex_lock(,plugin_unlock_list,mysql_audit_release,handle_connection,pfs_spawn_thread,start_thread(,clone( 152 __lll_lock_wait(,pthread_mutex_lock(,plugin_foreach_with_mask,mysql_audit_acquire_plugins,mysql_audit_notify,invoke_pre_parse_rewrite_plugins,mysql_parse,dispatch_command,do_command,handle_connection,pfs_spawn_thread,start_thread(,clone( 97 __lll_lock_wait(,pthread_mutex_lock(,plugin_lock,acquire_plugins,plugin_foreach_with_mask,mysql_audit_acquire_plugins,mysql_audit_notify,invoke_pre_parse_rewrite_plugins,mysql_parse,dispatch_command,do_command,handle_connection,pfs_spawn_thread,start_thread(,clone( 34 __io_getevents_0_4(,LinuxAIOHandler::collect,LinuxAIOHandler::poll,os_aio_handler,fil_aio_wait,io_handler_thread,start_thread(,clone( 18 send(,vio_write,net_write_packet,net_flush,net_send_eof,THD::send_statement_status,dispatch_command,do_command,handle_connection,pfs_spawn_thread,start_thread(,clone( 9 recv(,vio_read,net_read_raw_loop,net_read_packet,my_net_read,Protocol_classic::read_packet,Protocol_classic::get_command,do_command,handle_connection,pfs_spawn_thread,start_thread(,clone( 8 poll(,vio_io_wait,vio_socket_io_wait,vio_read,net_read_raw_loop,net_read_packet,my_net_read,Protocol_classic::read_packet,Protocol_classic::get_command,do_command,handle_connection,pfs_spawn_thread,start_thread(,clone( MySQL 5.7.14 309 send(,vio_write,net_write_packet,net_flush,net_send_eof,THD::send_statement_status,dispatch_command,do_command,handle_connection,pfs_spawn_thread,start_thread(,clone( 43 recv(,vio_read,net_read_raw_loop,net_read_packet,my_net_read,Protocol_classic::read_packet,Protocol_classic::get_command,do_command,handle_connection,pfs_spawn_thread,start_thread(,clone( 34 __io_getevents_0_4(,LinuxAIOHandler::collect,LinuxAIOHandler::poll,os_aio_handler,fil_aio_wait,io_handler_thread,start_thread(,clone( 15 poll(,vio_io_wait,vio_socket_io_wait,vio_read,net_read_raw_loop,net_read_packet,my_net_read,Protocol_classic::read_packet,Protocol_classic::get_command,do_command,handle_connection,pfs_spawn_thread,start_thread(,clone( 7 send(,vio_write,net_write_packet,net_flush,net_send_ok,Protocol_classic::send_ok,THD::send_statement_status,dispatch_command,do_command,handle_connection,pfs_spawn_thread,start_thread(,clone( 7 pthread_cond_wait,os_event::wait_low,srv_worker_thread,start_thread(,clone( 7 pthread_cond_wait,os_event::wait_low,buf_flush_page_cleaner_worker,start_thread(,clone( sign of extra locks with the plugin API in PMP for MySQL 5.7.14. Good job! Also, note that the fix for this issue should help to improve performance for any other audit based API plugins. [Less]
Posted 3 days ago by Gabriela Martinez
Dear MySQL users, MySQL Connector/Net 7.0.4 is the first development release that expands cross-platform support to Linux and OS X when using Microsoft’s .NET Core framework. Now, .NET developers can use the X DevAPI with .NET Core and Entity ... [More] Framework Core (EF Core) 1.0 to create server applications that run on Windows, Linux and OS X. We are very excited about this change and really look forward to your feedback on it! MySQL Connector/Net 7.0.4 is also the third development release of MySQL Connector/Net to add support for the new X DevAPI. The X DevAPI enables application developers to write code that combines the strengths of the relational and document models using a modern, NoSQL-like syntax that does not assume previous experience writing traditional SQL. To learn more about how to write applications using the X DevAPI, see For more information about how the X DevAPI is implemented in Connector/Net, see Please note that the X DevAPI requires at least MySQL Server version 5.7.12 or higher with the X Plugin enabled. For general documentation about how to get started using MySQL as a document store, see To download MySQL Connector/Net 7.0.4 M3, see the “Development Releases” tab at Also you can find the new nuget packages for the .net core framework at the nuget gallery or using the following direct links: MySql.Data package for core framework MySql.Data.EntityFrameworkcore for core framework Packages for full .net framework MySql.Data package MySql.Data.Entity package MySql.Web package MySql.Fabric package Functionality Added or Changed in 7.0.4 M3 development release Added X DevAPI support for URI connection strings in the following formats: mysqlx://[[:]@][:] mysqlx://[[:]@][:]/ mysqlx://[[:]@][:]/[]?=[&=] mysqlx+ssh://[[:]@][:] Added X DevAPI support for flexible parameter lists that do not require string parsing. Views are no longer implemented using a separate View class in the X DevAPI. Instead, the IsView property has been added to the Table class and views are implemented as tables. Added in MySql.Data support for .NET Core 1.0, which runs on Windows, OS X, and Linux. Added in MySQL.Data.EntityFrameworkCore support for Entity Framework (EF) Core (includes support for .NET Framework 4.5.1). Bugs Fixed Passing no document or a DbDoc object that contained an empty array to the Add() method of a collection would throw an exception. Now, passing in either an empty document or array of documents returns a Results object in which RecordsAffected is zero. (Bug #23542066) Passing a DbDoc object that contained an array to the Add() method of a collection would throw an exception. (Bug #23542031) We love to hear your thoughts or any comments you have about our product. Please send us your feedback at our forums, fill a bug at our community site, or leave us any comment at the social media channels. MySQL Connector/net Forums MySQL Connector/net Documentation MySQL on Facebook Enjoy and thanks for the support! On behalf of the MySQL Connector/Net team [Less]
Posted 3 days ago by Gabriela Martinez
Dear MySQL users, MySQL Connector/Net 6.8.8 and 6.9.9 are maintenance releases for the 6.8 and 6.9 series of the .NET driver for MySQL. They can be used for production environments. It is appropriate for use with MySQL server versions 5.5-5.7. These ... [More] are now available in source and binary form from our downloads and mirror sites. (note that not all mirror sites may be up to date at this point-if you can’t find this version on some mirror, please try again later or choose another download site.) Functionality Added or Changed Added TLS support for TLSv1.1 and TLSv1.2 when connecting to MySQL Server 5.7. Bugs Fixed Improvements were made to how the connector handles aborted connections. (Bug #23346197, Bug #80997). With Entity Framework 6, building a table with a primary key would not enclose the key name in quotes, which caused a syntax error. (Bug #22696180, Bug #22696207, Bug #76292). The connector was not disposing the transaction returned by DBContext.Database.BeginTransaction() when exiting a using code block. (Bug #22514355, Bug #22514363). The connector did not attempt to enumerate stored procedures via mysql.proc(). Instead it looked up stored procedures in INFORMATION_SCHEMA.ROUTINES. This could have led to performance degradation in certain scenarios. (Bug #20960373, Bug #23528155, Bug #74116) For documentation please check at the official site. Nuget packages are available at: 6.9.9 Packages MySql.Data 6.9.9 MySql.Data.Entity 6.9.9 MySql.Fabric 6.9.9 MySql.Web 6.9.9 6.8.8 Packages MySql.Data 6.8.8 MySql.Data.Entity 6.8.8 MySql.Web 6.8.8 We love to hear your thoughts or any comments you have about our product. Please send us your feedback at our forums, fill a bug at our community site, or leave us any comment at the social media channels. MySQL Connector/net Forums MySQL Connector/net Documentation MySQL on Facebook Enjoy and thanks for the support! On behalf of the MySQL Connector/Net team [Less]
Posted 3 days ago by Frederic Descamps
MySQL Group Replication is just one component of the upcoming MySQL HA Solution as Matt Lord explained it in his GR quick start guide. So while mysql-router is back to school to become smarter and learn how to take the right decision we can already ... [More] use existing 3rd party solutions. To be honest, if people are already using a load balancer/proxy with MySQL asynchronous, semi-sync or other virtual synchronous solution and want to evaluate and migrate to MySQL’s native Group Replication, they might not migrate load balancer at the same time as they move to GR. Step-by-step migration, one component at the time is always recommended in complex architecture. So in this post, I want to cover HAProxy and a dedicated health check  related to what might be the more common architecture. Matt already explained in his start guide how to use GR with HA.  He also provided and healthcheck scripts and a HAProxy configuration when using only one member (recommended for WRITEs) and the other ones stay as backup. What is then that most common architecture ? So due to the GR limitations (DDL, FK, …) it is recommended to send the WRITEs to one node (unless you really know your workload and what you are doing). For the READs, we can use any of the group members (unless they still have a large queue to process). Usually people use then 2 different ports, one to send the WRITEs and one to send the READs. Of course the application should be able to define which type of query is needed and use the right connection (db handler). This is an illustration of the architecture:   So HAProxy is listening on :3307 to handle all writes and send them only on one dedicated member. Failover for writes will happen only is MySQL has a problem or becomes read-only. Reads are sent to port :3308 and HAProxy will round-robin those reads to all members of the group. This is the HAProxy configuration: frontend mysql-gr-front_write bind *:3307 mode tcp default_backend mysql-gr-back_write backend mysql-gr-back_write mode tcp balance leastconn option httpchk server mysql1 check port 6446 inter 1000 rise 1 fall 2 on-marked-up shutdown-backup-sessions server mysql2 check port 6446 inter 1000 rise 1 fall 2 backup server mysql3 check port 6446 inter 1000 rise 1 fall 2 backup frontend mysql-gr-front_read bind *:3308 mode tcp default_backend mysql-gr-back_read backend mysql-gr-back_read mode tcp balance leastconn option httpchk server mysql1 check port 6447 inter 1000 rise 1 fall 2 server mysql2 check port 6447 inter 1000 rise 1 fall 2 server mysql3 check port 6447 inter 1000 rise 1 fall 2 We will then setup 2 different xinetd services to check the status of the MySQL Group Member and decide if the node can be used for reads and or writes. To perform such check, I’m using Matt Lord’s script that I modified to accept two arguments: the amount of max transactions behind into a member’s queue (default 100) the role : WRITE or READ This script is available on github : We have then: /etc/xinetd.d/mysql_gr_routing_check_write # default: on # description: check to see if the node is a viable routing candidate service mysql_gr_routing_check_write { disable = no flags = REUSE socket_type = stream port = 6446 wait = no user = mysql server = /usr/local/bin/ server_args = 100 write log_on_failure += USERID only_from = localhost per_source = UNLIMITED } /etc/xinetd.d/mysql_gr_routing_check_read # default: on # description: check to see if the node is a viable routing candidate service mysql_gr_routing_check_read { disable = no flags = REUSE socket_type = stream port = 6447 wait = no user = mysql server = /usr/local/bin/ server_args = 100 read log_on_failure += USERID only_from = localhost per_source = UNLIMITED } Don’t forget to update /etc/services with: mysql_gr_routing_check_write 6446/tcp # MySQL Group Replication mysql_gr_routing_check_read  6447/tcp  # MySQL Group Replication So now we can test the health check on both ports: [root@mysql1 bin]# telnet 6446 Trying Connected to Escape character is '^]'. HTTP/1.1 200 OK Content-Type: text/plain Connection: close Content-Length: 40 Group Replication member is a viable routing candidate for write. Connection closed by foreign host. [root@mysql1 bin]# telnet 6447 Trying Connected to Escape character is '^]'. HTTP/1.1 200 OK Content-Type: text/plain Connection: close Content-Length: 40 Group Replication member is a viable routing candidate for read. Connection closed by foreign host. Perfect This is an illustration of this setup in HAProxy Web frontend: Let’s check this in action: [Less]
Posted 3 days ago by Andy Bang
MySQL Enterprise Monitor 3.0.27 is now available for download on the My Oracle Support (MOS) web site. This is a maintenance release that includes a few enhancements and fixes a number of bugs. You can find more information on the contents of ... [More] this release in the change log: (also included at the end of this note for convenience) You will find binaries for the new release on My Oracle Support: Choose the "Patches & Updates" tab, and then choose the "Product or Family (Advanced Search)" side tab in the "Patch Search" portlet. IMPORTANT: MySQL Enterprise Monitor (MEM) 3.2 offers many significant improvements over MEM 3.0 and 3.1 and we highly recommend that you consider upgrading. More information on MEM 3.2 is available here: What's New in MySQL Enterprise Monitor 3.2 MySQL Enterprise Monitor MySQL Enterprise Monitor Frequently Asked Questions MySQL Enterprise Monitor Change History More information on MySQL Enterprise and the Enterprise Monitor can be found here: If you are not a MySQL Enterprise customer and want to try the Monitor and Query Analyzer using our 30-day free customer trial, go to, or contact Sales at Thanks and Happy Monitoring! - The MySQL Enterprise Tools Development Team ========== Changes in MySQL Enterprise Monitor 3.0.27 Functionality Added or Changed * The required privileges for configuring a non-bundled repository were updated in this release. (Bug #21534737) * The MySQL server, bundled with the MySQL Enterprise Service Manager, has been upgraded to MySQL 5.6.31. * The Tomcat server, bundled with the MySQL Enterprise Service Manager, has been upgraded to 7.0.69. * The OpenSSL libraries used by the MySQL Enterprise Monitor installers and MySQL Enterprise Monitor Aggregator have been upgraded to 1.0.1t. * The bundled Tomcat Native library is updated to support OpenSSL 1.0.1t. * The bundled JRE was updated to 1.8.0_102 for both the Agent and Service Manager. Bugs Fixed * The documentation did not specify the correct format for the ssl-ca- keystore-path parameter. It was listed as a file path, but is a URL. For example: ssl-ca-keystore-path=file:///mysql/enterprise/agent/etc/mykeystore (Bug #24386496) * The InnoDB Redo Log Pending Writes graph was not displayed for MySQL 5.7 instances. (Bug #23563358) * The LDAP and SSL documentation did not contain information on how to connect to LDAP servers which implement AES256. (Bug #23507489) * LDAP configuration was not validated when saved. As a result, if the LDAP connection information was incorrectly configured, NullPointerExceptions were logged, and it was not possible to connect to the LDAP server. (Bug #23299288) * The help text of the Binary Log Space Exceeds Specified Limit advisor was updated. (Bug #2078129) * Selecting the From/To filter field on the Overview page selected the Graph Time Range drop-down list instead. It was possible to navigate to the From/To filter field using the tab button, only. [Less]