Percona XtraDB Cluster 8.0 is on the final stretch before GA release, and we have pre-release packages available for testing.
I wanted to see how Percona XtraDB Cluster 8.0 performs in CPU and IO-bound scenarios, like in my previous posts about MySQL Group Replication.
In this blog, I want to evaluate Percona XtraDB Cluster 8.0 scaling capabilities in cases when we increase the number of nodes and increase user connections. The version I used is available here: Percona-XtraDB-Cluster-8.0.18.
For this testing, I deploy multi-node bare metal servers, where each node and client are dedicated to an individual server and connected between themselves by a 10Gb network.
Also, I will use a 3-node and 5-node Percona XtraDB Cluster setup. Hardware specifications:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
System | Supermicro; SYS-F619P2-RTN; v0123456789 (Other) Service Tag | S292592X0110239C Platform | Linux Release | Ubuntu 18.04.4 LTS (bionic) Kernel | 5.3.0-42-generic Architecture | CPU = 64-bit, OS = 64-bit Threading | NPTL 2.27 SELinux | No SELinux detected Virtualized | No virtualization detected # Processor ################################################## Processors | physical = 2, cores = 40, virtual = 80, hyperthreading = yes Models | 80xIntel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz Caches | 80x28160 KB # Memory ##################################################### Total | 187.6G |
For the benchmark, I use sysbench-tpcc 1000W prepared database as:
1 |
./tpcc.lua --mysql-host=172.16.0.11 --mysql-user=sbtest --mysql-password=sbtest --mysql-db=sbtest --time=300 --threads=64 --report-interval=1 --tables=10 --scale=100 --db-driver=mysql --use_fk=0 --force_pk=1 --trx_level=RC prepare |
The configs, scripts, and raw results are available on our GitHub. The workload is “in-memory”, that is data (about 100GB) which should fit into innodb_buffer_pool (also 100GB).
Results
Let’s review the results I’ve got. First, let’s take a look at how the performance changes when we increase user threads from 1 to 256 for 3 nodes.
To see the density of the results in more details, let’s draw the chart with the individual scales for each set of threads:
Timeline with 1 sec resolution for 64 threads:
3 nodes vs. 5 nodes
Now let’s look at the performance under 5 nodes (compared to 3 nodes):
Actually, there does not seem to be a huge difference. 5 nodes adds extra overhead, but it is minimal.
Percona XtraDB Cluster vs. Group Replication
Now as we have results for both Percona XtraDB Cluster and Group Replication, we can compare how they perform under identical workloads. In this case, we compare the 3 nodes setup:
We can see that Percona XtraDB Cluster consistently shows better average throughput, with much less variance, compared to Group Replication.
Conclusion
Percona XtraDB Cluster 8.0 scales well with the increasing amount of threads in workload and also with increasing nodes from 3 to 5. Also, in my opinion, Percona XtraDB Cluster 8.0 outperforms Group Replication setup, showing better average throughput and much less variance of the results.
Appendix
The results and charts are prepared with R notebook, which you can run by yourself in mybinder if you would like to get different slices and dimensions.
Notebook with the static charts