BigID takes $2.1M to help enterprises grok customer data privacy risks

BigID The risks for businesses associated with storing and processing the personal data of their customers are growing as data volumes continue to increase and regulators sharpen their claws over data protection. But those risks are of course just another startup opportunity. Read More


Multi-cloud security startup vArmour raises $41M more, led in part by Telstra

Image (1) cybercrime.jpg for post 79689 Cybercrime is a rising problem — expected to cost organizations between $500 billion and $2 trillion by 2019. Now a startup that has built what it markets as an economical tool to fight cybercrime has raised some money to help it grow. vArmour — a startup that offers security solutions specifically aimed at enterprises that run services and apps across multiple clouds —… Read More


Cray’s latest supercomputer runs OpenStack and open source big data tools

Cray Urika-GX super computer Cray has always been associated with speed and power and its latest computing beast called the Cray Urika-GX system has been designed specifically for big data workloads. What’s more, it runs on OpenStack, the open source cloud platform and supports open source big data processing tools like Hadoop and Spark. Cray recognizes that the computing world had evolved since Seymour Cray… Read More


Percona disabling TLSv1.0 May 31st 2016

disabling TLSv1.0

disabling TLSv1.0As of May 31st, 2016, we will be disabling TLSv1.0 support on,, etc.

This is ahead of the PCI changes that will affect the June 30th 2016 deprecation the TLSv1.0 protocol. (PDF)

What does this mean for you the user?

Based on analysis of our IDS logs, this will affect around 6.32% of requests. As of May 31st, such requests will present an error when trying to negotiate a TLS connection.

Users are advised to update their clients accordingly. SSLabs provides a good test for browsers, though this does not support command line tools. Going forward, we will only support TLSv1.1 and TLSv1.2.

These changes come a little over a year from our previous SSL overhaul, and are part of our ongoing effort to ensure the security of our users.

Thank you for your time. Please leave any questions in the comments section, or email us at security(at)




Percona XtraBackup 2.4.3 is now available

Percona XtraBackup 2.4.3

Percona XtraBackup 2.4.3Percona
is glad to announce the GA release of Percona XtraBackup 2.4.3 on May 23rd, 2016. Downloads are available from our download site and from apt and yum repositories.

Percona XtraBackup enables MySQL backups without blocking user queries, making it ideal for companies with large data sets and mission-critical applications that cannot tolerate long periods of downtime. Offered free as an open source solution, Percona XtraBackup drives down backup costs while providing unique features for MySQL backups

New Features:

  • Percona XtraBackup has implemented new --reencrypt-for-server-id option. Using this option allows users to start the server instance with different server_id from the one the encrypted backup was taken from, like a replication slave or a Galera node. When this option is used, xtrabackup will, as a prepare step, generate a new master key with ID based on the new server_id, store it into keyring file and re-encrypt the tablespace keys inside of tablespace headers.

Bugs Fixed:

  • Running DDL statements on Percona Server 5.7 during the backup process could in some cases lead to failure while preparing the backup. Bug fixed #1555626.
  • MySQL 5.7 can sometimes skip redo logging when creating an index. If such ALTER TABLE is being issued during the backup, the backup would be inconsistent. xtrabackup will now abort with an error message if such ALTER TABLE has been done during the backup. Bug fixed #1582345.
  • .ibd files for remote tablespaces were not copied back to the original location pointed by the .isl files. Bug fixed #1555423.
  • When called with insufficient parameters, like specifying the empty --defaults-file option, Percona XtraBackup could crash. Bug fixed #1566228.
  • The documentation states that the default value for –ftwrl-wait-query-type is all, however it was update. Changed the default value to reflect the documentation. Bug fixed #1566315.
  • When –keyring-file-data option was specified, but no keyring file was found, xtrabackup would create an empty one instead of reporting an error. Bug fixed #1578607.
  • If ALTER INSTANCE ROTATE INNODB MASTER KEY was run at the same time when xtrabackup --backup was bootstrapping it could catch a moment when the key was not written into the keyring file yet and xtrabackup would overwrite the keyring with the old copy of a keyring, so the new key would be lost. Bug fixed #1582601.
  • The output of the --slave-info option was missing an apostrophe. Bug fixed #1573371.

Release notes with all the bugfixes for Percona XtraBackup 2.4.3 are available in our online documentation. Bugs can be reported on the launchpad bug tracker.


Russian Cosmonaut Museum

DSC_0104In 2015, we spent a couple of weeks in Western Russia, including some spectacular days in Moscow. As a space-nut, there was no way I was going to miss a trip to the Memorial Museum to Cosmonauts. We braved a 3-line trip through Moscow's subways (which are incredibly clean and efficient, by the way), and were confronted by this huge memorial. The museum is underground, beneath it.

There were no English speaking guides, and though some of the exhibit signs were in English, most were not, and it took all my space knowledge to piece together what we were looking at. 


Outside the museum is an avenue of statues and busts of famous space pioneers and cosmonauts. Standing at the entrance was this fellow, Sergei Korolev, regarded by many as the father of astronautics. He worked as the lead rocket engineer and designer for the Soviets during the Space Race in the 1950's and 1960's. 





Below are Strelka and Belka. They were launched into orbit on 19th August 1960 aboard Korabl-Sputnik 2 sat atop a Vostok-L carrier rocket. The two dogs were accompanied by some mice, rats and plants. They were recovered safely and in 1961, when Strelka had a litter of puppies, one was sent to Jacqueline Kennedy as a goodwill present.


Talking of Sputnik, below is a breakaway model of Sputnik 1. Sputnik 1 is of course famous as the first spacecraft to leave Earth's atmosphere on 4th October 1957. Each orbit took 96 minutes, during which everyone on Earth could listen to the beep-beep of its radio transmitter. After 21 days it fell silent, its battery exhausted. Sputnik 1 itself spent 3 months in orbit before burning up in the atmopshere.


Below is a Vostok capsule. This one is probably the Vostok 3KA used to carry a single dog into orbit. In a larger size, the Vostok capsules would go on to carry the first man into space in 1961, Yuri Gagarin. As you can see, this one is pretty small – I'm almost fatter than it is!


Below is Venera 9, one of my all time favourite unmanned space missions. The Venera series orbited and dispatched landers through the impenetrable Venusian atmosphere to the horrendously hot surface of Venus. This exhibit is shown without the huge solar panels and communications dish. Venera 9 entered Venus orbit on October 20th 1975. That egg shaped bulge at the left end is the lander and descent module. Though other Venera probes had landed successfully on the surface of Venus, Venera 9 was the first probe to return images from the surface of another planet. It lasted only 53 minutes before succumbing to the intense heat and pressure.


Below is Zond. This series of planetary probes were launched by the Soviets between 1964 and 1970. Zond 1 flew by Venus, Zond 2 went to Mars, but then the remainder of the series, up to Zond 8, were repurposed to study the Moon for the Soviet moon program.


Everyone know what this famous space station is? MIR. A series of 7 modules launched and joined in orbit. MIR had an operational life from 1986 to 2001, during which astronauts from several nations (including the USA) spent time there with the Russian cosmonauts.


And below is a life size replica of the MIR Core Module, the first component to be launched in 1986. It contained living quarters and a spherical airlock/docking port, onto which the later modules were attached. It was fun to walk about on this and see just how cramped it was.


Below is Luna 17. It landed in the Sea of Rains on the Moon on 17th November 1970. As well as collecting and analyzing soil samples, it deployed the first robotic rover, Lunokhod 1.


And here is Lunokhod, and it's completely massive! I guess the Luna 17 lander was considerably larger than it looks. Lunokhod 1 survived for almost a year and travelled 10.5 km across the Lunar surface. Lunokhod 2 travelled 35km near the edge of the Sea of Serenity.


A couple more pictures: First an inside view of the cramped Soyuz capsule, the mainstay of the Russian space program and still used to ferry astronauts between Earth and the ISS.


And a mockup of a Russian lunar lander.



Introduction to Troubleshooting Performance – Troubleshooting Slow Queries webinar: Q & A

Troubleshooting Slow Queries

Troubleshooting Slow QueriesIn this blog, I will provide answers to the Q & A for the Troubleshooting Slow Queries webinar.

First, I want to thank you for attending the April 28 webinar. The recording and slides for the webinar are available here. Below is the list of your questions that I wasn’t able to answer during the webinar, with responses:

Q: I’ve heard that is a bad idea to use

select *

; what do you recommend?

A: When I used


 in my slides, I wanted to underline the idea that sometimes you need to select all columns from the table. There is nothing bad about it if you need them.


 is bad when you need only a few columns from the table. In this case, you retrieve more data than needed, which affects performance. Another issue that  


 can cause is if you hard-code the statement into your application, then change table definition; the application could start retrieving columns in wrong order and output (e.g., email instead of billing address). Or even worse, it will try to access a non-existent index in the result set array. The best practice is to explicitly enumerate all columns that your application needs.

Q: I heard that using 


 length will affect the indexing principle during query execution (e.g., one field is varchar and its length is not fixed, some values have short text, some values have long text. at this time). If we use this field as indexing, what happens?

A: I assume you are asking about the ability to create an index with lengths smaller than the column length? They work as follows:

Assume you have a 


  field which contains these user questions:

  1. I’ve heard that is a bad idea to use select * what do you recommend?
  2. I heard that using 

     length will affect the indexing principle during query execution (e.g., one field is varchar and its length is not fixed, some values have short text, some values have long text. at this time). If we use this field as indexing, what happens?

  3. ….

Since this is a 


  field you cannot create and index on it without specifying its length, so you need to make the index as minimal as possible to uniquely identify questions. If you create an index with length 10 it will contain:

  1. I’ve heard
  2. I heard th

You will index only those parts of questions that are not very distinct from each other, and do not contain useful information about what the question is. You can create index of length 255:

  1. I’ve heard that is a bad idea to use select * what do you recommend?
  2. I heard that using index_field length will affect the indexing principle during query execution (e.g., one field is varchar and its length is not fixed, some values have short text, some values have long text. at this time). If we use this field as index

In this case, the index includes the whole first question and almost all the second question. This makes the index too large and requires us to use more disk space (which causes more IO). Also, information from the second question is probably too much.

If make index of length 75, we will have:

  1. I’ve heard that is a bad idea to use select * what do you recommend?
  2. I heard that using index_field length will affect the indexing principle du

This is more than enough for the first question and gives a good idea of what is in the second question. It also potentially will have enough unique entries to make its cardinality look more like the cardinality of real data distribution.

To conclude: choosing the correct index length is something that requires practice and analysis of your actual data. Try to make them as short as possible, but long enough so that the number of unique entries in the index will be similar to a number of unique entries in the table.

Q: Which view can we query to see stats?

A: Do you mean index statistics?

SHOW INDEX FROM table_name

 will do it.

Q: We have an InnoDB table with 47 fields (mostly text); some are ft-indexed. I tried to do an alter table, and it ran for 24 hours. What is the best way to run an alter table to add one extra field? The table has 1.9 M rows and 47 columns with many indexes.

A: Adding a column requires a table copy. Therefore, the speed of this operation depends on the table size and speed of your disk. If you are using version 5.6 and later, adding a column would not block parallel queries (and therefore is not a big deal). If you are using an older version, you can always use the pt-online-schema-change utility from Percona Toolkit. However, it will run even more slowly than the regular


. Unfortunately, you cannot speed up the execution of


 much. The only thing that you can do is to use a faster disk (with options, tuned to explore speed of the disk).

However, if you do not want to have this increased IO affect the production server, you can alter the table on the separate instance, then copy tablespace to production and then apply all changes to the original table from the binary logs. The steps will be something like:

  1. Ensure you use option

      and the big table has individual tablespace

  2. Ensure that binary log is enabled
  3. Start a new server (you can also use an existent stand-by slave).
  4. Disable writes to the table
  5. Record the binary log position
  6. Copy the tablespace to the new server as described here.
  7. Enable writes on the production server
  8. Run

     on the new server you created in step 2 (it will still take 24 hours)

  9. Stop writes to the table on the production server
  10. Copy the tablespace, altered in step 7
  11. Apply all writes to this table, which are in the binary logs after position, recorded in step 4.
  12. Enable writes to the table

This scenario will take even more time overall, but will have minimal impact on the production server

Q: If there is a compound index like index1(emp_id,date), will the following query be able to use index? “select * from table1 where emp_id = 10”

A: Yes. At least it should.

Q: Are 




 in extended info for explain not good?

A: Regarding


: it depends. For example, you will always have the word


” for tables which perform 


 and cannot use an index for


. This is not always bad. For example, in this query:

mysql> explain select emp_no, first_name from employees where emp_no <20000 order by first_nameG
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: employees
   partitions: NULL
         type: range
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 4
          ref: NULL
         rows: 18722
     filtered: 100.00
        Extra: Using where; Using filesort
1 row in set, 1 warning (0,01 sec)

the primary key used to resolve rows and


 were necessary and not avoidable. You can read about different


 algorithms here.


Using temporary

: this means what during query execution temporary table will be created. This is can be not good, especially if the temporary table is large and cannot fit into memory. In this case, it would be written to disk and slow down operations. But, again, sometimes creating temporary tables in not avoidable, for example, if you have both




 clauses which list columns differently as stated in the user manual.

Q: Is


 length more of a good thing for query execution?



 field is not


 for all queries that use and index, and just shows the length of the key part used. It is not good or bad, it is just for information. You can use this information, for example, to identify which part of combined index is used to resolve the query.

Q: Does an alter query go for an optimizer check?

A: No. You can check it either by enabling optimizer trace, running


 and find what trace is empty. Or by enabling the debug option and searching the resulting trace for



Q: A query involves four columns that are all individually covered by an index. The optimizer didn’t merge indexes because of cost, and even didn’t choose the composite index I created.

A: This depends on the table definition and query you used. I cannot provide a more detailed answer based only on this information.

Q cont.: Finally, only certain composite indexes were suitable, the column order in the complex index mattered a lot. Why couldn’t the optimizer merge the four individual single column indexes, and why did the order of the columns in the composite index matter?

A: Regarding why the optimizer could not merge four indexes, I need to see how the table is defined and which data is in these indexed columns. Regarding why the order of the columns in the composite index matters, it depends on the query. Why the optimizer can use an index, say, on

(col1, col2)

 where the conditions

col1=X AND col2=Y


col2=Y AND col2=X

 for the case when you use


, the order is important. For example, for the condition

col1=X OR col2=Y

, where the part


 is always executed and the part


  is executed only when


 is false. The same logic applies to queries like

SELECT col1 WHERE col2=Y ORDER BY col3

. See the user manual for details.

Q: When I try to obtain the optimizer trace on the console, the result is cut off. Even if I redirect the output to a file, how to overcome that?

A: Which version of MySQL Server do you use? The 


 column is defined as

longtext NOT NULL

, and should not cause such issues. If it does with a newer version, report a bug at

Q: Are there any free graphical visualizers for either EXPLAIN or the optimizer TRACE output?

A: There is graphical visualizer for


 in MySQL Workbench. But it works with online data only: you cannot run it on


 output, saved into a file. I don’t know about any visualizer for the optimizer


 output. However, since it is


 you can simply save it to file and open in web browser. It will allow a better view than if opened in simple text editor.

Q: When do you use force index instead of

use index


A: According to user manual “

USE INDEX (index_list)

 hint tells MySQL to use only one of the named indexes to find rows in the table” and “


  hint acts like

USE INDEX (index_list)

, with the addition that a table scan is assumed to be very expensive . . . a table scan is used only if there is no way to use one of the named indexes to find rows in the table.” This means that when you use


, you are giving a hint for the optimizer to prefer a particular index to others, but not enforcing index usage if the optimizer prefers a table scan, while


 requires using the index. I myself use only




  index hints.

Q: Very informative session. I missed the beginning part. Are you going to distribute the recoded session later?

A: Yes. As usual slides and recording available here.


Percona XtraDB Cluster 5.6.29-25.15 is now available

Percona XtraDB Cluster 5.6

Percona XtraDB Cluster 5.6Percona
is glad to announce the new release of Percona XtraDB Cluster 5.6 on May 20, 2016. Binaries are available from the downloads area or our software repositories.

Percona XtraDB Cluster 5.6.29-25.15 is now the current release, based on the following:

All of Percona software is open-source and free, and all the details of the release can be found in the 5.6.29-25.15 milestone at Launchpad.

For more information about relevant Codership releases, see this announcement.

Bugs Fixed:

  • Node eviction in the middle of SST now causes the node to shut down properly.
  • After an error during node startup, the state is now marked unsafe only if SST is required.
  • Fixed data inconsistency during multi-insert auto-increment workload on async master with binlog-format=STATEMENTwhen a node begins async slave with wsrep_auto_increment_control=ON.
  • Fixed crash when a prepare statement is aborted (due to a conflict with applier) and then replayed.
  • Removed a special case condition in wsrep_recover() that would not happen under normal conditions.
  • Percona XtraDB Cluster no longer fails during SST, if a node reserves a very large amount of memory for InnoDB buffer pool.
  • If the value of wsrep_cluster_address is not valid, trying to create a slave thread will now generate a warning instead of an error, and the thread will not be created.
  • Fixed error with loading data infile (LDI) into a multi-partitioned table.
  • The wsrep_node_name variable now defaults to host name.
  • Starting mysqld with unknown option now fails with a clear error message, instead of randomly crashing.
  • Optimized the operation of SST and IST when a node fails during startup.
  • The wsrep_desync variable can now be enabled only after a node is synced with cluster. That is, it cannot be set during node bootup configuration).
  • Fixed crash when setting a high flow control limit (fc_limit) and the recv queue fills up.
  • Only the default 16 KB page size (innodb_page_size=16384) is accepted until the relevant upstream bug is fixed by Codership (see All other sizes will report Invalid page size and shut down (the server will not start up).
  • If a node is executing RSU/FTWRL, explicit desync of the node will not happen until the implicit desync action is complete.
  • Fixed multiple bugs in the test suite to improve quality assurance.

Help us improve our software quality by reporting any bugs you encounter using our bug tracking system. As always, thanks for your continued support of Percona!


The Europas — It’s time for a different kind of tech conference

awards3 (1) Let’s face it. Some tech conferences have lost their way. While TechCrunch Disrupt remains a firmly curated, media-driven, event, with hundreds of journalists attending, a couple of other conferences have really gone for scale. A minimum of 15,000 people, thousands of companies, echoing halls — and a lot of investors (and journalists) turning their badges around so they don’t… Read More


Fixing MySQL scalability problems with ProxySQL or thread pool

Fixing MySQL scalability problems

In this blog post, we’ll discuss fixing MySQL scalability problems using either ProxySQL or thread pool.

In the previous post I showed that even MySQL 5.7 in read-write workloads is not able to maintain throughput. Oracle’s recommendation to play black magic with




 doesn’t always help. We need a different solution to deal with this scaling problem.

All the conditions are the same as in my previous run, but I will use:

  • ProxySQL limited to 200 connections to MySQL. ProxySQL has a capability to multiplex incoming connections; with this setting, even with 1000 connections to the proxy it will maintain only 200 connections to MySQL.
  • Percona Server with enabled thread pool, and a thread pool size of 64

You can see final results here:

Fixing MySQL scalability problems

There are good and bad sides for both solutions. With ProxySQL, there is a visible overhead on lower numbers of threads, but it keeps very stable throughput after 200 threads.

With Percona Server thread pool, there is little-to-no overhead if the number of connections is less than thread pool size, but after 200 threads it falls behind ProxySQL.

There is chart with response times

I would say the correct solution depends on your setup:

  • If you already use or plan to use ProxySQL, you may use it to prevent MySQL from saturation
  • If you use Percona Server, you might consider trying to adjust the thread pool



Powered by WordPress | Theme: Aeros 2.0 by