Planet MySQL

Replication Test Coverage in MySQL 8.0

In the Replication QA team, we have been continuing to improve test coverage for Replication and Group Replication primarily to ensure that we support the newest and latest offerings of MySQL Server 8.0 such as Generated Columns, Set Persist, User Roles, and User Management DDLs that are now atomic.…

Webinar Wed, 5/23: Troubleshooting MySQL Concurrency Issues with Load Testing Tools

Please join Percona’s Principal Support Escalation Specialist, Sveta Smirnova, as she presents Troubleshooting MySQL Concurrency Issues with Load Testing Tools on Wednesday, May 23, 2018 at 11:00 AM PDT (UTC-7) / 2:00 PM EDT (UTC-4).

Register Now


Normally, we use benchmarking tools when we are developing applications. When applications are deployed, benchmarks tests are usually too late to help.

This webinar doesn’t cover actual benchmarks, but it does look at how you can use benchmarking tools for troubleshooting. When you need to repeat a situation caused by concurrent client execution, they can be your best option. These types of issues include all kinds of locking and performance issues, along with stalls and crashes.

In this webinar Sveta will cover some of the main tools she uses, such as (but not limited to) SysBench and mysqlslap. She will show how to use the tools’ standard options while working with specific custom problems, and how to script them to develop test cases that are as close to real life scenarios as possible.

Register for the webinar.

Sveta Smirnova, Principal Support Escalation Specialist

Sveta joined Percona in 2015. Her main professional interests are problem-solving, working with tricky issues, bugs, finding patterns that can quickly solve typical issues and teaching others how to deal with MySQL issues, bugs and gotchas effectively. Before joining Percona, Sveta worked as Support Engineer in MySQL Bugs Analysis Support Group in MySQL AB-Sun-Oracle. She is the author of book “MySQL Troubleshooting” and JSON UDF functions for MySQL.

The post Webinar Wed, 5/23: Troubleshooting MySQL Concurrency Issues with Load Testing Tools appeared first on Percona Database Performance Blog.

Capturing Per-Process Metrics with Percona Monitoring and Management (PMM)

In this blog post, I will show you how to use Percona Monitoring and Management (PMM) to capture per-process metrics in five minutes or less.

While Percona Monitoring and Management (PMM) captures a lot of host metrics, it currently falls short providing per-process information, such as which particular process uses a lot of CPU resources, causes Disk IO or consumes a lot of memory.

In our database performance optimization and troubleshooting practice, this information has proven quite useful in many cases: batch jobs taking much more resources than developers would estimate and misconfigured Percona XtraBackup or Percona Toolkit are among the most common offenders.

Per-process metrics information can also be very helpful when troubleshooting database software memory leaks or memory fragmentation.

You don’t know which processes cause you problems at the outset, so it is important to capture information about all of the processes (or specifically exclude the processes you do not want to capture information about) rather than capture information about selected few.

While capturing such helpful information is not available in PMM out of the box (yet), you can easily achieve it using PMM’s External Exporter support and the excellent Prometheus Process Exporter by Nick Cabatoff.

These instructions are for Debian/Ubuntu  Linux Distributions but they should work with RedHat/CentOS based versions as well – just use RPM package instead of DEB

1: Download the process exporter packages from GitHub:


2: Install the package

(Note: the file will be different depending on the platform and current release.)

dpkg -i process-exporter_0.2.11_linux_amd64.deb

3: Run the Exporter

service process-exporter start

4: Register Exporter with Percona Monitoring and Management

Assuming the current node is already monitored by PMM you just need one command:

pmm-admin add external:service processes-my-host --service-port=9256 --interval=10s

This captures process metrics every 10 seconds (adjust interval if desired).

Important note: due to some internal limitations, you need to use a different service name (“processes-my-host”)  for each host. I suggest just adding the hostname to the descriptive name “processes” for simplicity.

5: Get Matching Dashboard from

While you can browse the data captured by the Advanced Data Exploration Dashboard, it is not any fun. I created a PMM-style dashboard and published it on I based it on Nick’s original dashboard.

To add this dashboard to your PMM Server, click Dashboard Search on your PMM Server.

From there, click on “Import Dashboard”. Use 6033 as the Dashboard ID.

6: You’re done!

You should have data flowing, and you should be able to see the data on the graphs.

In this example, I have pt-query-digest (shown as Perl) parsing the log file and pushing MySQL Server away from memory.

Note, as you likely have many processes on the system, the graphs are designed to show only the top processes. All running processes, however, are available in the drop-down if you want to access the history for a specific process.

Let us know what you think. We are looking at how to integrate this functionality directly into Percona Monitoring and Management!

The post Capturing Per-Process Metrics with Percona Monitoring and Management (PMM) appeared first on Percona Database Performance Blog.

Experience, Not Conversion, is the Key to the Switching Economy

In a world increasingly defined by instant-gratification, the demand for positive and direct shopping experiences has risen exponentially. Today’s always-on customers are drawn to the most convenient products and services available. As a result, we are witnessing higher customer switching rates, with consumers focusing more on convenience than on branding, reputation, or even on price.  

In this switching economy – where information and services are always just a click away –  we tend to reach for what suits our needs in the shortest amount of time. This shift in decision making has made it harder than ever for businesses to build loyalty among their customers and to guarantee repeat purchases. According to recent research, only 1 in 5 consumers now consider it a hassle to switch between brands, while a third would rather shop for better deals than stay loyal to a single organization. 

What's Changed? 

The consumer mindset for one. And the switching tools available to customers have also changed. Customers now have the ability to research extensively before they purchase, with access to reviews and price comparison sites often meaning that consumers don’t even make it to a your website before being captured by a competitor. 

This poses a serious concern for those brands that have devoted their time – and marketing budgets – to building great customer experiences across their websites. 

Clearly this is not to say that on-site experiences aren’t important, but rather that they are only one part of the wider customer journey. In an environment as complex and fast moving as the switching economy, you must look to take a more omnichannel approach to experience, examining how your websites, mobile apps, customer service teams, external reviews and in-store experiences are all shaping the customers’ perceptions of your brand. 

What Still Needs to Change?

Only by getting to know your customers across all of these different channels can you future-proof your brand in the switching economy. To achieve this, you must establish a new set of metrics that go beyond website conversion. The days of conversion optimization being viewed as the secret sauce for competitive differentiation are over; now brands must recognize that high conversion rates are not necessarily synonymous with a great customer experience – or lifetime loyalty. 

Today, the real measure of success does not come from conversion, but from building a true understanding of your customers – across every touchpoint in the omnichannel journey. Through the rise of experience analytics, you finally have the tools and technologies needed to understand customers in this way, and to tailor all aspects of your brand to maximize convenience, encourage positive mindsets and pre-empt when your customers are planning to switch to a different brand. 

It is only through this additional layer of insight that businesses and brands will rebuild the notion of customer loyalty, and ultimately, overcome the challenges of the switching economy. 

Want to learn more about simplifying and improving the customer experience? Read Customer Experience Simplified: Deliver The Experience Your Customers Want to discover how to provide customer experiences that are managed as carefully as the product, the price, and the promotion of the marketing mix.


【東京】MySQL 8.0 新機能紹介セミナー

2018年6月1日 1:30 PM - 4:00 PM @日本オラクル 本社(東京・外苑前)

このイベントでは、MySQL 8.0の新機能の中から、オプティマイザーとパフォーマンス/スケーラビリティ改善に関係するトピックをご紹介させて頂きます。

・MySQL 8.0のオプティマイザーの改善点/新機能について知る
・MySQL 8.0のパフォーマンスやスケーラビリティの改善点/新機能について知る

【大阪】Oracle Journey to Cloud セミナー

2018年6月27日 2:00 PM - 4:30 PM @日本オラクル関西オフィス(大阪)

2017年秋に発表された、世界初の自律型データベース・クラウドの構想をはじめ最新版Oracle Databaseの最新情報とクラウド時代におけるデータベース基盤の最適化についてご紹介します。 さらにその最新データベース基盤を支えるためのプラットフォーム選択のポイントや導入事例をご紹介いたします。


【東京】MySQL 8.0 新機能紹介セミナー

2018年6月1日 1:30 PM - 4:00 PM @日本オラクル 本社(東京・外苑前)

このイベントでは、MySQL 8.0の新機能の中から、オプティマイザーとパフォーマンス/スケーラビリティ改善に関係するトピックをご紹介させて頂きます。

・MySQL 8.0のオプティマイザーの改善点/新機能について知る
・MySQL 8.0のパフォーマンスやスケーラビリティの改善点/新機能について知る

【大阪】Oracle Journey to Cloud セミナー

2018年6月27日 2:00 PM - 4:30 PM @日本オラクル関西オフィス(大阪)

2017年秋に発表された、世界初の自律型データベース・クラウドの構想をはじめ最新版Oracle Databaseの最新情報とクラウド時代におけるデータベース基盤の最適化についてご紹介します。 さらにその最新データベース基盤を支えるためのプラットフォーム選択のポイントや導入事例をご紹介いたします。

How to set up MySQL InnoDB Cluster? Part One

This post is about setting up MySQL InnoDB Cluster with 5 nodes on a sandbox deployment.  Here, we focus on implementation part, the core concepts will be explained in separate posts.

  • MySQL Engine
  • MySQL Shell
  • MySQL Router
Deploying MySQL InnoDB Cluster involves the following steps:
  • Deploying MySQL Engine (Sandbox Instance)
  • Creating an InnoDB Cluster
  • Adding nodes to InnoDB Cluster
  • Configuring MySQL Router for High Availability.
  • Testing High Availability.

Deploying MySQL Engine:

If the MySQL engines are already installed on all the nodes, you can skip this step and directly move into creating an InnoDB Cluster part.

I am deploying 5 Sandbox instances (which is in-built on MySQL Shell application) on a same machine. On production system, there will be separate nodes for each MySQL Engines. Let’s begin with the deployments:

To open MySQL Shell     : Start -> cmd -> Type mysqlsh (OR) Start -> MySQL Shell

To change script mode  : \JS – JavaScript Mode | \PY – Python Mode | \SQL – SQL Mode

MySQL JS > dba.deploySandboxInstance(port)

deploySandboxInstance()module will deploy new Sandbox Instance on the mentioned port, let’s deploy the following 5 Sandbox instances:

dba.deploySandboxInstance (3307)

dba.deploySandboxInstance (3308)

dba.deploySandboxInstance (3309)

dba.deploySandboxInstance (3310)

dba.deploySandboxInstance (3311)

Sample Output:

MySQL JS > dba.deploySandboxInstance (3307)

A new MySQL sandbox instance will be created on this host in


Warning: Sandbox instances are only suitable for deploying and running on your local machine for testing purposes and are not accessible from external networks.

Please enter a MySQL root password for the new instance: ***

Deploying new MySQL instance...

Instance localhost: 3307 successfully deployed and started.

Use shell.connect('root@localhost:3307'); to connect to the instance.


To connect the deployed sandbox instance:

MySQL JS > \connect user@host:portand enter the password when prompted. (OR)

MySQL JS > shell.connect(‘user@host:port’)

Sample Output:

MySQL localhost: 3307 ssl JS > \connect root@localhost:3307

Creating a session to 'root localhost: 3307’

Enter password: ***

Fetching schema names for auto completion... Press ^C to stop.

Closing old connection...

Your MySQL connection id is 16

Server version: 8.0.11 MySQL Community Server - GPL

No default schema selected; type \use to set one.

MySQL localhost: 3307 ssl JS > \ssl

Switching to SQL mode... Commands end with;

MySQL localhost: 3307 ssl SQL > select @@port;


| @@port |


|   3307 |


1 row in set (0.0006 sec)

MySQL localhost: 3307 ssl SQL >

Creating InnoDB Cluster:

To create an InnoDB cluster, connect to seed (primary) server, which contains the original data by using above method and follow the below steps:
var cluster = dba.createCluster('ClusterName')
Sample Output:
MySQL localhost:3307 ssl  JS > var cluster = dba.createCluster('DBCluster') A new InnoDB cluster will be created on instance 'root@localhost:3307'. Validating instance at localhost:3307...Instance detected as a sandbox.

Please note that sandbox instances are only suitable for deploying test clusters for use within the same host.

This instance reports its own address as L-IS-RATHISH

Instance configuration is suitable.

Creating InnoDB cluster 'DBCluster' on 'root@localhost:3307'...

Adding Seed Instance...

Cluster successfully created. Use Cluster.addInstance() to add MySQL instances.

At least 3 instances are needed for the cluster to be able to withstand up to one server failure.
Adding nodes to InnoDB Cluster:
The secondary replication nodes will be added to cluster by using the addInstance() method.

mysql-js> cluster.addInstance('user@host:port')

Let us add the nodes, one by one:




Sample Output:
MySQL  localhost:3307 ssl  JS > cluster.addInstance('root@localhost:3311');

A new instance will be added to the InnoDB cluster. Depending on the amount of data on the cluster this might take from a few seconds to several hours.

Please provide the password for 'root@localhost:3311': ***

Adding instance to the cluster ...

Validating instance at localhost:3311...

Instance detected as a sandbox.

Please note that sandbox instances are only suitable for deploying test clusters for use within the same host.

This instance reports its own address as L-IS-RATHISH

Instance configuration is suitable.

The instance 'root@localhost:3311' was successfully added to the cluster.
Configuring MySQL Router for High Availability:
MySQL Router routes client connections to servers in the cluster and it provides separate ports for Read and Read/Write operations.

MySQL Router takes its configuration from InnoDB Cluster’s metadata and configure itself by using –-bootstrap option. It is recommended to install MySQL Router on a separate server or can be installed on the application server.

The MySQL Router command is given below, this should be run on the server with Read/Write (R/W) role.

shell> mysqlrouter --bootstrap user@host:port

The server roles can be checked by using the status() method. Let us check the status of our cluster:

MySQL  localhost:3307 ssl  JS > cluster.status()


    "clusterName": "DBCluster",

    "defaultReplicaSet": {

        "name": "default",

        "primary": "localhost:3307",

        "ssl": "REQUIRED",

        "status": "OK",

        "statusText": "Cluster is ONLINE and can tolerate up to 2 failures.",

        "topology": {

            "localhost:3307": {

                "address": "localhost:3307",

                "mode": "R/W",

                "readReplicas": {},

                "role": "HA",

                "status": "ONLINE"


            "localhost:3308": {

                "address": "localhost:3308",

                "mode": "R/O",

                "readReplicas": {},

                "role": "HA",

                "status": "ONLINE"


            "localhost:3309": {

                "address": "localhost:3309",

                "mode": "R/O",

                "readReplicas": {},

                "role": "HA",

                "status": "ONLINE"


            "localhost:3310": {

                "address": "localhost:3310",

                "mode": "R/O",

                "readReplicas": {},

                "role": "HA",

                "status": "ONLINE"


            "localhost:3311": {

                "address": "localhost:3311",

                "mode": "R/O",

                "readReplicas": {},

                "role": "HA",

                "status": "ONLINE"




    "groupInformationSourceMember": "mysql://root@localhost:3307"


 MySQL  localhost:3307 ssl  JS >

The server root@localhost:3307 is currently assigned with R/W role. Configure MySQL Router on this server:

C:\Windows\system32>mysqlrouter --bootstrap root@localhost:3307

Please enter MySQL password for root:

Reconfiguring system MySQL Router instance...

WARNING: router_id 1 not found in metadata

MySQL Router has now been configured for the InnoDB cluster 'DBCluster'.

The following connection information can be used to connect to the cluster.

Classic MySQL protocol connections to cluster 'DBCluster':

- Read/Write Connections: localhost:6446

- Read/Only Connections: localhost:6447

X protocol connections to cluster 'DBCluster':

- Read/Write Connections: localhost:64460

- Read/Only Connections: localhost:64470

Existing configurations backed up to 'C:/Program Files/MySQL/MySQL Router 8.0/mysqlrouter.conf.bak'

Connecting InnoDB Cluster:

From MySQL Router configuration, we get the connection information, by default, port 6446 used for Read /Write connections and Port 6447 used for Read/Only connections. MySQL Router allows to configure custom port numbers for R/W and R/O client connections.

Let us connect to first connect to Read/Write port and then connect to Read/Only port for testing.

Read/Write Instance:

C:\Users\rathish.kumar>mysql -u root -h localhost -P6446 -p

Enter password: *

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 176

Server version: 8.0.11 MySQL Community Server - GPL

Copyright (c) 2000, 2018, 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> select @@port;


| @@port |


|   3307 |


1 row in set (0.00 sec)

mysql> create database ClustDB;

Query OK, 1 row affected (0.09 sec)

mysql> use ClustDB;

Database changed

mysql> create table t1 (id int auto_increment primary key);

Query OK, 0 rows affected (0.18 sec)

mysql> insert into t1 (id) values(1);

Query OK, 1 row affected (0.06 sec)

Read/Only Instance:

C:\Users\rathish.kumar>mysql -u root -h localhost -P6447 -p

Enter password: *

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 47

Server version: 8.0.11 MySQL Community Server - GPL

Copyright (c) 2000, 2018, 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> select @@port;


| @@port |


|   3308 |


1 row in set (0.00 sec)

mysql> select * from ClustDB.t1;


| id |


|  1 |


1 row in set (0.00 sec)

mysql> insert into ClustDB.t1 (id) values (2);

ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statement


Testing High Availability:

We have connected to R/W and R/O instances, and it is working as expected. Now let’s test the High Availability by killing primary seed node (3307) and Read/Only instance (3308).



Sample output:

MySQL  localhost:3307 ssl  JS > dba.killSandboxInstance(3307);

The MySQL sandbox instance on this host in

C:\Users\rathish.kumar\MySQL\mysql-sandboxes\3307 will be killed

Killing MySQL instance...

Instance localhost:3307 successfully killed.

Now refresh run the query on the existing Read/Write and Read/Only connections and check the port:          

Read/Only Instance:

mysql> select @@port;

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id:    38

Current database: *** NONE ***


| @@port |


|   3310 |


1 row in set (1.30 sec)


This error is due to connection rerouting while we are still connected to server. This error will not occur on new connections. Let us try with Read/Write connections:

Read/Write Instance:

C:\Users\rathish.kumar>mysql -u root -h localhost -P6446 -p

Enter password: *

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 32

Server version: 8.0.11 MySQL Community Server - GPL

Copyright (c) 2000, 2018, 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> select @@port;


| @@port |


|   3311 |


1 row in set (0.00 sec)


There is no changes required from applications, the InnoDB Cluster will identify the changes and automatically configure itself and high availability achieved with the help of MySQL Router.

I suggest you to test InnoDB Cluster on lab environment and share your findings on comment section for other readers. I will be coming with other articles on working with InnoDB Cluster and Troubleshooting InnoDB Cluster. Need of any assistance on InnoDB Cluster, please share it on comment section.

Percona Server for MySQL 5.5.60-38.12 Is Now Available

Percona announces the release of Percona Server for MySQL 5.5.60-38.12 on May 18, 2018. Based on MySQL 5.5.60, including all the bug fixes in it, Percona Server for MySQL 5.5.60-38.12 is now the current stable release in the 5.5 series.

Percona Server for MySQL is open-source and free. Downloads are available here and from the Percona Software Repositories.

Bugs Fixed
  • mysqldump utility with --innodb-optimize-keys option was incorrectly working with foreign keys pointing to the same table, producing invalid SQL statements. Bugs fixed #1125 and #3863.
  • A typo in plugin.cmake file prevented to compile plugins statically into the server. Bug fixed #3871 (upstream #89766).
  • Using -DWITHOUT_<PLUGIN>=ON CMake variable to exclude a plugin from the build didn’t work for some plugins, including a number of storage engines. Bug fixed #3901.
  • A fix was introduced to remove GCC 8 compilation warnings for the Percona Server build. Bug fixed #3950.
  • A code clean-up was done to fix compilation warnings and errors specific for clang 6. Bug fixed #3893 (upstream #90111).
  • Percona Server Debian packages description included reference to /etc/mysql/my.cnf file, which is not actually present in these packages. Bug fixed #2046.
  • A clean-up in Percona Server binlog-related code was made to avoid uninitialized memory comparison. Bug fixed #3925 (upstream #90238).
  • The temporary file I/O was not instrumented for Performance Schema. Bug fixed #3937 (upstream #90264).A key_block_size value was set automatically by the Improved MEMORY Storage Engine, which resulted in warnings when changing the engine type to InnoDB, and constantly growing key_block_size during alter operations. Bugs fixed  #3936, #3940, and #3943.

Other bugs fixed: #3767 “Fix compilation warnings/errors with clang”, #3778 “5.5 Tree received Percona-TokuBackup submodule where it should not”, #3794 “MTR test main.percona_show_temp_tables_stress does not wait for events to start”,  #3798 “MTR test innodb.percona_extended_innodb_status fails if InnoDB status contains unquoted special characters”, and #3926 “Potentially truncated bitmap file name in log_online_open_bitmap_file_read_only() (storage/innobase/log/”.

Find the release notes for Percona Server for MySQL 5.5.60-38.12 in our online documentation. Report bugs in the Jira bug tracker.

The post Percona Server for MySQL 5.5.60-38.12 Is Now Available appeared first on Percona Database Performance Blog.

Cloud Disaster Recovery for MariaDB and MySQL

MySQL has a long tradition in geographic replication. Distributing clusters to remote data centers reduces the effects of geographic latency by pushing data closer to the user. It also provides a capability for disaster recovery. Due to the significant cost of duplicating hardware in a separate site, not many companies were able to afford it in the past. Another cost is skilled staff who is able to design, implement and maintain a sophisticated multiple data centers environment.

With the Cloud and DevOps automation revolution, having distributed datacenter has never been more accessible to the masses. Cloud providers are increasing the range of services they offer for a better price.One can build cross-cloud, hybrid environments with data spread all over the world. One can make flexible and scalable DR plans to approach a broad range of disruption scenarios. In some cases, that can just be a backup stored offsite. In other cases, it can be a 1 to 1 copy of a production environment running somewhere else.

Related blog posts  Become a ClusterControl DBA: Safeguarding your Data  How to do Point-in-Time Recovery of MySQL & MariaDB Data using ClusterControl  Zero Downtime Network Migration with MySQL Galera Cluster using Relay Node

In this blog we will take a look at some of these cases, and address common scenarios.

Storing Backups in the Cloud

A DR plan is a general term that describes a process to recover disrupted IT systems and other critical assets an organization uses. Backup is the primary method to achieve this. When a backup is in the same data center as your production servers, you risk that all data may be wiped out in case you lose that data center. To avoid that, you should have the policy to create a copy in another physical location. It's still a good practice to keep a backup on disk to reduce the time needed to restore. In most cases, you will keep your primary backup in the same data center (to minimize restore time), but you should also have a backup that can be used to restore business procedures when primary datacenter is down.

ClusterControl: Upload Backup to the cloud

ClusterControl allows seamless integration between your database environment and the cloud. It provides options for migrating data to the cloud. We offer a full combination of database backups for Amazon Web Services (AWS), Google Cloud Services or Microsoft Azure. Backups can now be executed, scheduled, downloaded and restored directly from your cloud provider of choice. This ability provides increased redundancy, better disaster recovery options, and benefits in both performance and cost savings.

ClusterControl: Managing Cloud Credentials

The first step to set up "data center failure - proof backup" is to provide credentials for your cloud operator. You can choose from multiple vendors here. Let's take a look at the process set up for the most popular cloud operator - AWS.

ClusterControl: adding cloud credentials

All you need is the AWS Key ID and the secret for the region where you want to store your backup. You can get that from AWS console. You can follow a few steps to get it.

  1. Use your AWS account email address and password to sign in to the AWS Management Console as the AWS account root user.
  2. On the IAM Dashboard page, choose your account name in the navigation bar, and then select My Security Credentials.
  3. If you see a warning about accessing the security credentials for your AWS account, choose to Continue to Security Credentials.
  4. Expand the Access keys (access key ID and secret access key) section.
  5. Choose to Create New Access Key. Then choose Download Key File to save the access key ID and secret access key to a file on your computer. After you close the dialog box, you will not be able to retrieve this secret access key again.
ClusterControl: Hybrid cloud backup

When all is set, you can adjust your backup schedule and enable backup to cloud option. To reduce network traffic make sure to enable data compression. It makes backups smaller and minimizes the time needed for upload. Another good practice is to encrypt the backup. ClusterControl creates a key automatically and uses it if you decide to restore it. Advanced backup policies should have different keep times for backups stored on servers in the same datacenter, and the backups stored in another physical location. You should set a more extended retention period for cloud-based backups, and shorter period for backups stored near the production environment, as the probability of restore drops with the backup lifetime.

ClusterControl: backup retention policy Extend your cluster with asynchronous replication

Galera with asynchronous replication can be an excellent solution to build an active DR node in a remote data center. There are a few good reasons to attach an asynchronous slave to a Galera Cluster. Long-running OLAP type queries on a Galera node might slow down a whole cluster. With delay apply option, delayed replication can save you from human errors so all those golden enters will be not immediately applied to your backup node.

ClusterControl: delayed replication

In ClusterControl, extending a Galera node group with asynchronous replication is done in a single page wizard. You need to provide the necessary information about your future or existing slave server. The slave will be set up from an existing backup, or a freshly streamed XtraBackup from the master to the slave.

Load balancers in multi-datacenter

Load balancers are a crucial component in MySQL and MariaDB database high availability. It’s not enough to have a cluster spanning across multiple data centers. You still need your services to access them. A failure of a load balancer that is available in one data center will make your entire environment unreachable.

Web proxies in cluster environment

One of the popular methods to hide the complexity of the database layer from an application is to use a proxy. Proxies act as an entry point to the databases, they track the state of the database nodes and should always direct traffic to only the nodes that are available. ClusterControl makes it easy to deploy and configure several different load balancing technologies for MySQL and MariaDB, including ProxySQL, HAProxy, with a point-and-click graphical interface.

ClusterControl: load balancer HA Related webinar  How to Get Started with Open Source Database Management

It also allows making this component redundant by adding keepalived on top of it. To prevent your load balancers from being a single point of failure, one would set up two identical (one active and one in different DC as standby) HAProxy, ProxySQL or MariaDB Maxscale instances and use Keepalived to run Virtual Router Redundancy Protocol (VRRP) between them. VRRP provides a Virtual IP address to the active load balancer and transfers the Virtual IP to the standby HAProxy in case of failure. It is seamless because the two proxy instances need no shared state.

Of course, there are many things to consider to make your databases immune to data center failures.
Proper planning and automation will make it work! Happy Clustering!

Tags:  MySQL MariaDB cloud disaster recovery

How to Persist Global Variables Without Using Option Files in MySQL 8.0

A really convenient feature in MySQL 8.0 is the ability to persist the values of global variables across server restarts, without writing them into an options file. This was developed primarily for the benefit of Cloud installations of MySQL, but is very handy for a DBA in on-premise installations too.

To use this feature you need to have the SYSTEM_VARIABLES_ADMIN and PERSIST_RO_VARIABLES_ADMIN privileges.

To demonstrate, we'll increase the value of the max_connections system variable from its default of 151 to 152 and then restart the MySQL server to check that MySQL remembers the new value.

mysql> SHOW GLOBAL VARIABLES LIKE 'max_connections'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 151 | +-----------------+-------+ 1 row in set (#.## sec)

Use SET PERSIST to persist the change that we're about to make:

mysql> SET PERSIST max_connections = 152; Query OK, 0 rows affected (#.## sec)

You can also use the following variant:

mysql> SET @@persist.max_connections = 152; Query OK, 0 rows affected (0.01 sec)

Let's take advantage of another feature in MySQL 8.0: the RESTART SQL command. This enables you to restart the MySQL server without leaving the mysql prompt. You must have the SHUTDOWN privilege to use it:

mysql> RESTART; Query OK, 0 rows affected (#.## sec)

Did the server remember the change? Let's see:

mysql> SHOW GLOBAL VARIABLES LIKE 'max_connections'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 152 | +-----------------+-------+ 1 row in set (#.## sec)

In case you’re wondering how you would keep track of these changes if they’re not being written to an options file, MySQL 8.0 stores the change in a file called mysqld-auto.cnf, which resides in the data directory (typically /var/lib/mysql). This file also tells you who made the change, and when it was made:

# cat /var/lib/mysql/mysqld-auto.cnf { "Version":1, "mysql_server":{ "max_connections":{ "Value":"152", "Metadata":{ "Timestamp":1526635140519175, "User":"root", "Host":"localhost" } } } }

You can also query the Performance Schema for this information.

mysql> SELECT * FROM performance_schema.persisted_variables; +-----------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +-----------------+----------------+ | max_connections | 152 | +-----------------+----------------+ 1 row in set (#.## sec)

Don't edit the mysqld-auto.cnf file or the persisted_variables table directly: let the server handle it. If you want to clear all of the persisted variable settings, execute RESET PERSIST.

MariaDB 10.2.15 and MariaDB Connector/J 2.2.4 now available

The MariaDB Foundation is pleased to announce the availability of MariaDB 10.2.15, the latest stable release in the MariaDB 10.2 series, and MariaDB Connector/J 2.2.4, the latest stable release in the MariaDB Connector/J 2.2 series. See the release notes and changelogs for details. Download MariaDB 10.2.15 Release Notes Changelog What is MariaDB 10.2? MariaDB APT […]

The post MariaDB 10.2.15 and MariaDB Connector/J 2.2.4 now available appeared first on

MariaDB Server 10.2.15 and Connector/J 2.2.4 now available

MariaDB Server 10.2.15 and Connector/J 2.2.4 now available dbart Fri, 05/18/2018 - 01:08

The MariaDB project is pleased to announce the immediate availability of MariaDB Server 10.2.15 and MariaDB Connector/J 2.2.4. See the release notes and changelogs for details and visit to download.

Download MariaDB Server 10.2.15

Release Notes Changelog What is MariaDB 10.2?

Download MariaDB Connector/J 2.2.4

Release Notes Changelog About MariaDB Connector/J

The MariaDB project is pleased to announce the immediate availability of MariaDB Server 10.2.15 and MariaDB Connector/J 2.2.4. See the release notes and changelogs for details.

Login or Register to post comments

MySQL InnoDB Cluster Sandbox

InnoDB Cluster is major revolution for MySQL Replication but it is often hard to test out new technologies without a major investment in time, hardware, and frustration.  But what if there was a quick and easy way to set up a test InnoDB Cluster?

SandboxThe details on how to set up a Sandbox InnoDB Cluster  is detailed at but for those seeking a quick and dirty example please keep reading.

Step 1 - Fire up the MySQL Shell and Crate Sandbox Instances Start the MySQL shell and create a Sandbox instance. In this example we set up a sandbox instance at port 3310.

An InnoDB Cluster needs three nodes for fault tolerance so we need to fire up to more sandbox instances on ports 3311 and 3312.

Step 2 -- Create Cluster Connect to one of the sandbox instances, the server of 3310 in this example. Now we use the shell to create a cluster names mydemo.

Step 3 -- Add Instances to Cluster Now we add the other two sandbox instances to the cluster.

Check Status And with that we can use cluster.status() to see that the sandbox InnoDB cluster is ready to use. We have two read only nodes and one read write node.
Step 4 -- Start MySQL Router Finally we start MySQL Router!

And there is how you set up a test instance of an InnoDB cluster in just a few minutes.

How Monyog Helps Profile Slow Queries in MariaDB

MariaDB came into being the day that Oracle announced the purchase of Sun in 2010.  In order to keep it free under the GNU GPL, Michael Widenius forked MySQL and took several MySQL developers with him in the process.  Since then, MariaDB has been a drop-in replacement for MySQL, albeit with more features and better performance.

In the Improve MariaDB Performance using Query Profiling blog, we learned some useful techniques for tracking and analyzing slow queries using a couple of MariaDB server’s built-in tools: the Slow Query Log and the Performance Schema.  

The Slow Query Log records queries that are deemed to be slow and potentially problematic, that is, queries that take longer than the long_query_time global system variable value to run.

The Performance Schema is a storage engine that contains a database called performance_schema, which in turn consists of a number of tables.  It may be utilized to view raw data in the summary views as well as review performance over time.

Both of the above tools come with their own pros and cons.  For example, the slow query log is easy to work with and may be viewed with any text editor.  The Performance Schema tables may be queried with regular SQL statements for a wide range of performance information.  At the same time, both tools tend to produce a wealth of data that can be a burden to wade through.

That’s where a professional monitoring tool add tremendous value.

More than a Real-time monitoring tool, Monyog features RDS OS and file-based log monitoring, including the General Query, Slow Query and Error logs in a single view.  It also lets you view RDS OS metrics like CPU Utilization, RAM usage etc. using the CloudWatch API.

Configuring the Slow Query Log

In MariaDB, as in MySQL, the Slow Query Log is disabled by default.  It must be enabled by setting the slow_query_log global system variable to 1.  There are a few other system variables for:

  1. Setting the time in seconds/microseconds that define a slow query.
  2. Writing to a file or table.
  3. Providing the name of the slow query log file.
  4. Logging queries that don’t use indexes.

In Monyog, you can configure all of these settings via the ADVANCED tab of the Server Settings dialog.  It is accessible by clicking:

  1. The Servers icon (#1 in the image below).
  2. The ellipsis on the server summary box (#2 in the image below).
  3. The Edit Server item from the popup (not pictured).
  4. The ADVANCED header (underlined in blue in the image below).
  5. The MySQL Query Log item (highlighted in blue in the image below).

The ADVANCED tab of the MySQL Query Log item contains settings for the General Query, Slow Query and Error logs.

The Server Settings dialog also allows us to apply the Slow Query Log settings to the current server or to all servers with tags same as the current server.

Clicking the SAVE button closes the dialog and persists the Slow Log settings.

Dashboard Metrics

The Dashboard displays a set of charts so that DBAs can easily understand the complete security, availability, and performance picture of all their MySQL servers in one place.  Monyog ships with a default dashboard called “Performance metrics”, but DBAs can create their own set of charts for database and OS specific metrics for one or more servers. These include query performance metrics such as Queries Executed, Statements, and Query Cache Efficiency.

All charts and graphs displayed on the Dashboard can be exported in PDF/JPG/PNG formats. To export a chart, click the download icon and select your preferred file format from the drop-down context menu.

Viewing MySQL Logs Details

The Monyog Monitors page displays a detailed display of server parameters and metrics. Clicking the MySQL Logs item under the MONITOR GROUP header brings up details about the General Query, Slow Query (highlighted with a red box in the image below) and Error logs for monitored servers.  

Slow Query information includes:

  • Slow log – Enabled? (Yes/no)
  • Min. execution time for a query to be considered slow, in seconds
  • No. of slow queries
  • Log queries not using indexes? (Yes/no)

Trend Values Graph

A graph or chart is a visual information graphic representation of tabular numeric data. Graphs are often used to make it easier to understand large quantities of data and the relationship between different parts of the data. Graphs can usually be read more quickly than the raw data that they come from.

One type of chart is called a Trend chart or run chart.  It’s utilized to show trends in data over time. Due to data fluctuations, single point measurements can be misleading.  Displaying data over time increases understanding of the real performance, particularly with regard to an established target or goal.

Clicking on a Trend value graph icon in the No. of slow queries row will display a graph, depicting query performance over time.

Following is an example of a trend chart for the Master server:

The SERVERS legend lists all of the servers from the SQL Logs screen.  Each is assigned its own color for easy identification in the graph. Servers whose trend values do not appear in the graph are “greyed out”.  Clicking a Server toggles its inclusion in the graph, thus saving having to return to the SQL Logs screen to select or deselect it. For example, the above graph was produced by clicking the Trend value graph icon in the Master column of the Monitors table.  Hence, the other three servers are greyed out in the legend.  Clicking any of these Servers will add it to the graph, while clicking the Master server will remove it from the graph.

Hovering the mouse over the graph line will display the details for that point on the graph:

Clicking anywhere outside of the graph dialog closes the dialog.

All charts and graphs displayed by the Monitors can be exported in CSV format. To export a chart select the option from the drop-down context menu.

Displaying Trend Values for a Specific Timeframe

The trend graphs explored above presents the current trend data.  In Monyog Professional, Enterprise and Ultimate editions, you can also select a specific time-frame for which to include in the graph by choosing the History item from the TIMEFRAME dropdown.

This will display an additional dropdown for selecting the timeframe range.  It contains a number of intervals such as “Today”, “Yesterday”, and “Last 2 Days” as well as start and end fields to set a custom range.  Clicking on either custom range fields presents a calendar widget for choosing an exact date and time.

Now, clicking on the ‘Trend Graph’ icon in the No. of slow queries row displays the trends graph.

Along with the graph, the Historical Trend Graph also shows the monitor values for each server in tabular form underneath the graph. You can enable the option Show Only Changed Values to restrict values to those before and after changes.

Displaying Delta Results

The third type of Time Frame, Delta, displays results based on data for the period between the last data collection and the collection before that. This setting can help give you a better idea of the current situation, and how much it differs from the ‘average’ or ‘normal’ situation.

Query Analyzer

In the ‘Query Analyzer’ tab select which of the MySQL servers you want and the type of log (including the Slow Query log) you want to analyze. Next click the Analyze button to begin the analysis.

After a few seconds an analysis result like the following will appear:

The Query Analyzer screen is divided into 2 parts: the top half of the screen contains the Top Queries based on Total Time while the bottom half shows all of the queries using results paging.

Top Queries based on Total Time

This section of the screen displays the top queries, sorted so that the slowest query appears at the top. It includes:

  • The query statement
  • COUNT: how many times the statement appears in the log.
  • TOTAL TIME:  How much time the queries took to execute, in hh:mm:ss:ms format.
  • AVERAGE LATENCY: The average query execution time, in hh:mm:ss:ms format.
  • USER@HOST: The user and host that executed the query.

Each statement is presented as a bar chart at the very top of the query data whereby each query is represented using a unique color.  Each query’s Total Execution Time appears from left-to-right so that the slowest would be displayed at the far left. The bar chart helps to quickly assess how slow each of the slowest queries compares to the slowest.  In the image above, we can see that the slowest query was several magnitudes slower than all of the other slow queries times combined!

Clicking on a row brings up the Query Details.  This includes additional information such as the query’s first and last seen date & times, its Max Time, Rows Sent, and Rows Examined:

This is also true of the Queries section.


The Queries section provides a more complete list of analyzed queries.  In addition to having the ability to navigate through all of the queries via paging, it also features:

  • Filtering:
    Queries can be filtered to narrow down the list to those that you are interested in.  The four filtering options are:
    • Containing
    • Not containing
    • Matching regex
    • Not matching regex

Here is a filter that restricts results to statements that contain the regex “sakila*”:

  • Sorting:
    Rows can be sorted by any column by clicking the header.  An arrow shows sorting order, i.e. ascending, descending.

  • Managing Columns:
    Individual columns may be added and removed from the query list via the Manage Columns dialog:

It’s accessible by clicking the Show/Hide Columns icon next to the Results Navigation controls:

Export as CSV

To the immediate left of the Show/Hide Columns icon, the Export as CSV icon saves the query data to a Comma Separated Values (.csv) file.

CSV files may be read by applications like MS Excel.

Changing the Field Delimiter

The option to define the field delimiter is provided because some localized Windows programs that use the comma (,) as a decimal sign will require a semicolon (;) as field separator. This includes Microsoft Office programs like Excel and Access. On Linux, the situation is less uniform but some localized applications such as OpenOffice Calc (spreadsheet app) requires a semicolon (;) as the field separator.

Users can change the CSV export settings by using General > CSV EXPORT from the Settings screen.

Filter settings

The Query Analyzer offers a few options specific to the Slow Query Log.  These are accessible by clicking the Settings icon (highlighted in red below).

Options include:

  • Filter Users/Filter Hosts:
    A list of users/hosts to include or exclude from the analysis.  Both these options accept the asterisk “*” wildcard character.
  • Include Users executing the queries with Host names:
    If this option is selected it will display both the ‘user’ and ‘host’ of that particular query and it will group the query analyzer table based on ‘user@host’ and ‘query’.
  • Read All:
    Selecting the Read All option causes the Query Analyzer to consider the whole file for analyzing. It won’t consider any particular timeframe but displays all queries within the specified KB, MB or bytes size/chunk as set in the Reading limit from file option. Otherwise, it reads the last specified chunk in KB, MB or bytes set in the Reading limit from file option in the log file.  Note that it is the “smallest” of those two settings that will have effect for the analysis.  
  • Reading limit from file:
    Specifies the number of KB, MB or bytes size/chunk to read from the log file according to the Read All setting.



Both of the Slow Query Log and Performance Schema come with their own pros and cons.  Whereas the slow query log is easy to work with and may be viewed with any text editor, the Performance Schema tables may be queried with regular SQL statements for a wide range of performance information.  At the same time, both tools tend to produce a wealth of data that can be a burden to wade through.

That’s where a professional monitoring tool like Monyog can add tremendous value.  Specifically:

  • The Monyog Monitors page displays a detailed display of server parameters and metrics for the General Query, Slow Query and Error logs for monitored servers.  
    It provides Trend charts that show trends in data over time.  The data timeframe may be current, historical, or a delta.
  • The Query Analyzer screen contains the Top Queries based on Total Time as well as a list of all queries using results paging.

Query profiling is a useful technique for analyzing the overall performance of a database. Employing Monyog to monitor the MariaDB Slow Query Log and the Performance Schema is one of the most efficient ways to do that.

The post How Monyog Helps Profile Slow Queries in MariaDB appeared first on Monyog Blog.

Cassandra on Fedora 27

The last time that I installed Cassandra was on a version of Fedora 20. So, I new the first thing to check was the installation of Java. You can check the Java installation with two statements on a fresh installation of Fedora 27. You need to check the Java runtime and then the Java Software Development Kit before installing, starting, and using Cassandra.

Installing Prerequisites

You check the Java runtime with this command:

java -version

It should return:

openjdk version "1.8.0_171" OpenJDK Runtime Environment (build 1.8.0_171-b10) OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)

You check the Java Software Development Kit (JSDK) with this command:

javac -version

It should return:

javac 1.8.0_171

After verifying the Java and JSDK installation, you can install the Cassandra packages with the following yum command as the root user or a user with sudoer privileges:

yum install -y *cassandra*

You should see a successful installation log like:

Last metadata expiration check: 2:01:07 ago on Wed 16 May 2018 09:48:04 PM MDT. Dependencies resolved. ================================================================================================ Package Arch Version Repository Size ================================================================================================ Installing: cassandra x86_64 3.11.1-4.fc27 updates 175 k cassandra-java-driver noarch 3.1.4-2.fc27 fedora 1.0 M cassandra-java-driver-extras noarch 3.1.4-2.fc27 fedora 60 k cassandra-java-driver-javadoc noarch 3.1.4-2.fc27 fedora 675 k cassandra-java-driver-mapping noarch 3.1.4-2.fc27 fedora 87 k cassandra-java-driver-parent noarch 3.1.4-2.fc27 fedora 15 k cassandra-java-driver-tests noarch 3.1.4-2.fc27 fedora 21 k cassandra-javadoc x86_64 3.11.1-4.fc27 updates 3.3 M cassandra-parent x86_64 3.11.1-4.fc27 updates 17 k cassandra-server x86_64 3.11.1-4.fc27 updates 179 k python-cassandra-driver-doc x86_64 3.13.0-1.fc27 updates 64 k python2-cassandra-driver x86_64 3.13.0-1.fc27 updates 2.6 M python3-cassandra-driver x86_64 3.13.0-1.fc27 updates 2.8 M Installing dependencies: airline noarch 0.7-6.fc27 fedora 89 k antlr3-java noarch 1:3.5.2-16.fc27 fedora 173 k apache-commons-configuration noarch 1.10-10.fc27 fedora 358 k avalon-framework noarch 4.3-18.fc27 fedora 89 k avalon-logkit noarch 2.1-28.fc27 fedora 85 k bean-validation-api noarch 1.1.0-8.fc27 fedora 61 k caffeine noarch 2.3.5-3.fc27 fedora 724 k cassandra-java-libs x86_64 3.11.1-4.fc27 updates 5.3 M cassandra-python2-cqlshlib x86_64 3.11.1-4.fc27 updates 631 k classmate noarch 1.3.1-3.fc27 fedora 72 k compress-lzf noarch 1.0.3-7.fc27 fedora 86 k concurrentlinkedhashmap-lru noarch 1.4.2-5.fc27 fedora 59 k dain-snappy noarch 0.4-4.fc27 fedora 67 k ecj noarch 1:4.7.1-1.fc27 fedora 2.2 M fastutil noarch 7.0.7-4.fc27 fedora 14 M felix-framework noarch 5.6.0-3.fc27 fedora 672 k findbugs noarch 3.0.1-11.fc27 fedora 4.5 M findbugs-bcel noarch 6.0-0.9.20140707svn1547656.fc27 fedora 572 k fontbox noarch 1.8.13-1.fc26 fedora 228 k fop noarch 2.0-7.fc27 fedora 4.5 M hibernate-validator noarch 5.2.4-3.fc27 fedora 632 k high-scale-lib noarch 1.1.4-9.fc27 fedora 105 k jBCrypt noarch 0.4-5.fc27 fedora 22 k jFormatString noarch 0-0.26.20131227gitf159b88.fc27 fedora 38 k jackson noarch 1.9.11-12.fc27 fedora 1.0 M jamm noarch 0.3.1-5.fc27 fedora 35 k jboss-logging noarch 3.3.0-3.fc27 fedora 73 k jcip-annotations noarch 1-21.20060626.fc27 fedora 13 k jna x86_64 4.4.0-7.fc27 fedora 237 k joda-time noarch 2.9.3-4.tzdata2016c.fc27 fedora 522 k jsr-311 noarch 1.1.1-14.fc27 fedora 50 k log4j-over-slf4j noarch 1.7.25-4.fc27 updates 36 k logback noarch 1.1.7-3.fc27 fedora 3.0 M lz4-java x86_64 1.3.0-8.fc27 fedora 151 k maven-archiver noarch 3.1.1-3.fc27 fedora 38 k maven-common-artifact-filters noarch 3.0.1-3.fc27 fedora 60 k maven-compiler-plugin noarch 3.6.1-3.fc27 fedora 67 k maven-doxia-core noarch 1.7-5.fc27 fedora 166 k maven-doxia-logging-api noarch 1.7-5.fc27 fedora 30 k maven-doxia-module-apt noarch 1.7-5.fc27 fedora 63 k maven-doxia-module-fml noarch 1.7-5.fc27 fedora 51 k maven-doxia-module-fo noarch 1.7-5.fc27 fedora 72 k maven-doxia-module-markdown noarch 1.7-5.fc27 fedora 29 k maven-doxia-module-xdoc noarch 1.7-5.fc27 fedora 50 k maven-doxia-module-xhtml noarch 1.7-5.fc27 fedora 31 k maven-doxia-sink-api noarch 1.7-5.fc27 fedora 25 k maven-doxia-sitetools noarch 1.7.4-4.fc27 fedora 186 k maven-failsafe-plugin noarch 2.19.1-8.fc27 fedora 65 k maven-javadoc-plugin noarch 2.10.4-4.fc27 fedora 222 k maven-plugin-annotations noarch 3.5-3.fc27 fedora 26 k maven-reporting-api noarch 1:3.0-12.fc27 fedora 23 k maven-shared-incremental noarch 1.1-13.fc27 fedora 26 k maven-surefire noarch 2.19.1-8.fc27 fedora 496 k maven-surefire-plugin noarch 2.19.1-8.fc27 fedora 40 k metrics noarch 3.1.2-5.fc27 fedora 109 k metrics-jvm noarch 3.1.2-5.fc27 fedora 45 k metrics-reporter-config noarch 3.2.2-2.fc27 fedora 57 k objectweb-asm3 noarch 3.3.1-15.fc27 fedora 397 k ohc noarch 0.6.1-1.fc27 fedora 147 k parboiled noarch 1.1.6-12.fc27 fedora 281 k pegdown noarch 1.4.2-11.fc27 fedora 85 k plexus-archiver noarch 3.4-3.fc27 fedora 179 k plexus-compiler noarch 2.8.1-5.fc27 fedora 69 k plexus-component-api noarch 1.0-0.23.alpha15.fc27 fedora 31 k plexus-i18n noarch 1.0-0.10.b10.4.fc27 fedora 23 k plexus-interactivity-api noarch 1.0-0.24.alpha6.fc27 fedora 19 k plexus-io noarch 2.7.1-3.fc27 fedora 88 k python-blist x86_64 1.3.6-12.fc27 fedora 66 k python-scales noarch 1.0.5-10.fc27 fedora 68 k python2-futures noarch 3.1.1-2.fc27 fedora 32 k python2-simplejson x86_64 3.10.0-5.fc27 fedora 278 k python3-blist x86_64 1.3.6-12.fc27 fedora 66 k python3-scales noarch 1.0.5-10.fc27 fedora 70 k python3-simplejson x86_64 3.10.0-5.fc27 fedora 278 k sigar x86_64 1.6.5-0.20.git58097d9.fc27 fedora 76 k sigar-java x86_64 1.6.5-0.20.git58097d9.fc27 fedora 391 k snappy-java x86_64 fedora 80 k sonatype-oss-parent noarch 7-13.fc27 fedora 15 k stream-lib noarch 2.6.0-8.fc27 fedora 161 k xmlunit noarch 1.6-6.fc27 fedora 365 k Transaction Summary ================================================================================================ Install 93 Packages Total download size: 56 M Installed size: 172 M Downloading Packages: (1/93): cassandra-java-driver-extras-3.1.4-2.fc27.noarch.rpm 199 kB/s | 60 kB 00:00 (2/93): cassandra-java-driver-mapping-3.1.4-2.fc27.noarch.rpm 531 kB/s | 87 kB 00:00 (3/93): cassandra-java-driver-parent-3.1.4-2.fc27.noarch.rpm 308 kB/s | 15 kB 00:00 (4/93): cassandra-java-driver-tests-3.1.4-2.fc27.noarch.rpm 397 kB/s | 21 kB 00:00 (5/93): metrics-3.1.2-5.fc27.noarch.rpm 1.1 MB/s | 109 kB 00:00 (6/93): cassandra-java-driver-javadoc-3.1.4-2.fc27.noarch.rpm 864 kB/s | 675 kB 00:00 (7/93): cassandra-java-driver-3.1.4-2.fc27.noarch.rpm 1.2 MB/s | 1.0 MB 00:00 (8/93): maven-failsafe-plugin-2.19.1-8.fc27.noarch.rpm 957 kB/s | 65 kB 00:00 (9/93): maven-compiler-plugin-3.6.1-3.fc27.noarch.rpm 369 kB/s | 67 kB 00:00 (10/93): sonatype-oss-parent-7-13.fc27.noarch.rpm 170 kB/s | 15 kB 00:00 (11/93): maven-surefire-plugin-2.19.1-8.fc27.noarch.rpm 309 kB/s | 40 kB 00:00 (12/93): maven-javadoc-plugin-2.10.4-4.fc27.noarch.rpm 1.0 MB/s | 222 kB 00:00 (13/93): maven-shared-incremental-1.1-13.fc27.noarch.rpm 236 kB/s | 26 kB 00:00 (14/93): plexus-compiler-2.8.1-5.fc27.noarch.rpm 760 kB/s | 69 kB 00:00 (15/93): maven-plugin-annotations-3.5-3.fc27.noarch.rpm 287 kB/s | 26 kB 00:00 (16/93): maven-archiver-3.1.1-3.fc27.noarch.rpm 662 kB/s | 38 kB 00:00 (17/93): felix-framework-5.6.0-3.fc27.noarch.rpm 1.8 MB/s | 672 kB 00:00 (18/93): maven-common-artifact-filters-3.0.1-3.fc27.noarch.rpm 656 kB/s | 60 kB 00:00 (19/93): maven-doxia-sink-api-1.7-5.fc27.noarch.rpm 296 kB/s | 25 kB 00:00 (20/93): maven-surefire-2.19.1-8.fc27.noarch.rpm 2.0 MB/s | 496 kB 00:00 (21/93): maven-reporting-api-3.0-12.fc27.noarch.rpm 363 kB/s | 23 kB 00:00 (22/93): maven-doxia-sitetools-1.7.4-4.fc27.noarch.rpm 1.1 MB/s | 186 kB 00:00 (23/93): plexus-archiver-3.4-3.fc27.noarch.rpm 1.2 MB/s | 179 kB 00:00 (24/93): plexus-interactivity-api-1.0-0.24.alpha6.fc27.noarch.r 163 kB/s | 19 kB 00:00 (25/93): maven-doxia-logging-api-1.7-5.fc27.noarch.rpm 273 kB/s | 30 kB 00:00 (26/93): maven-doxia-core-1.7-5.fc27.noarch.rpm 1.8 MB/s | 166 kB 00:00 (27/93): maven-doxia-module-apt-1.7-5.fc27.noarch.rpm 623 kB/s | 63 kB 00:00 (28/93): maven-doxia-module-fml-1.7-5.fc27.noarch.rpm 742 kB/s | 51 kB 00:00 (29/93): maven-doxia-module-fo-1.7-5.fc27.noarch.rpm 770 kB/s | 72 kB 00:00 (30/93): maven-doxia-module-markdown-1.7-5.fc27.noarch.rpm 341 kB/s | 29 kB 00:00 (31/93): maven-doxia-module-xdoc-1.7-5.fc27.noarch.rpm 469 kB/s | 50 kB 00:00 (32/93): maven-doxia-module-xhtml-1.7-5.fc27.noarch.rpm 290 kB/s | 31 kB 00:00 (33/93): plexus-i18n-1.0-0.10.b10.4.fc27.noarch.rpm 161 kB/s | 23 kB 00:00 (34/93): plexus-io-2.7.1-3.fc27.noarch.rpm 899 kB/s | 88 kB 00:00 (35/93): dain-snappy-0.4-4.fc27.noarch.rpm 445 kB/s | 67 kB 00:00 (36/93): plexus-component-api-1.0-0.23.alpha15.fc27.noarch.rpm 322 kB/s | 31 kB 00:00 (37/93): apache-commons-configuration-1.10-10.fc27.noarch.rpm 1.9 MB/s | 358 kB 00:00 (38/93): xmlunit-1.6-6.fc27.noarch.rpm 1.6 MB/s | 365 kB 00:00 (39/93): pegdown-1.4.2-11.fc27.noarch.rpm 1.2 MB/s | 85 kB 00:00 (40/93): avalon-framework-4.3-18.fc27.noarch.rpm 770 kB/s | 89 kB 00:00 (41/93): fontbox-1.8.13-1.fc26.noarch.rpm 1.2 MB/s | 228 kB 00:00 (42/93): parboiled-1.1.6-12.fc27.noarch.rpm 1.6 MB/s | 281 kB 00:00 (43/93): avalon-logkit-2.1-28.fc27.noarch.rpm 1.2 MB/s | 85 kB 00:00 (44/93): fop-2.0-7.fc27.noarch.rpm 4.8 MB/s | 4.5 MB 00:00 (45/93): cassandra-3.11.1-4.fc27.x86_64.rpm 290 kB/s | 175 kB 00:00 (46/93): airline-0.7-6.fc27.noarch.rpm 917 kB/s | 89 kB 00:00 (47/93): antlr3-java-3.5.2-16.fc27.noarch.rpm 1.4 MB/s | 173 kB 00:00 (48/93): caffeine-2.3.5-3.fc27.noarch.rpm 5.6 MB/s | 724 kB 00:00 (49/93): compress-lzf-1.0.3-7.fc27.noarch.rpm 899 kB/s | 86 kB 00:00 (50/93): concurrentlinkedhashmap-lru-1.4.2-5.fc27.noarch.rpm 734 kB/s | 59 kB 00:00 (51/93): cassandra-java-libs-3.11.1-4.fc27.x86_64.rpm 4.2 MB/s | 5.3 MB 00:01 (52/93): cassandra-python2-cqlshlib-3.11.1-4.fc27.x86_64.rpm 708 kB/s | 631 kB 00:00 (53/93): ecj-4.7.1-1.fc27.noarch.rpm 6.8 MB/s | 2.2 MB 00:00 (54/93): jBCrypt-0.4-5.fc27.noarch.rpm 306 kB/s | 22 kB 00:00 (55/93): high-scale-lib-1.1.4-9.fc27.noarch.rpm 437 kB/s | 105 kB 00:00 (56/93): jamm-0.3.1-5.fc27.noarch.rpm 586 kB/s | 35 kB 00:00 (57/93): jackson-1.9.11-12.fc27.noarch.rpm 7.9 MB/s | 1.0 MB 00:00 (58/93): joda-time-2.9.3-4.tzdata2016c.fc27.noarch.rpm 3.6 MB/s | 522 kB 00:00 (59/93): lz4-java-1.3.0-8.fc27.x86_64.rpm 2.1 MB/s | 151 kB 00:00 (60/93): metrics-jvm-3.1.2-5.fc27.noarch.rpm 742 kB/s | 45 kB 00:00 (61/93): logback-1.1.7-3.fc27.noarch.rpm 10 MB/s | 3.0 MB 00:00 (62/93): metrics-reporter-config-3.2.2-2.fc27.noarch.rpm 512 kB/s | 57 kB 00:00 (63/93): ohc-0.6.1-1.fc27.noarch.rpm 1.4 MB/s | 147 kB 00:00 (64/93): snappy-java- 1.2 MB/s | 80 kB 00:00 (65/93): sigar-java-1.6.5-0.20.git58097d9.fc27.x86_64.rpm 3.1 MB/s | 391 kB 00:00 (66/93): stream-lib-2.6.0-8.fc27.noarch.rpm 1.8 MB/s | 161 kB 00:00 (67/93): jsr-311-1.1.1-14.fc27.noarch.rpm 815 kB/s | 50 kB 00:00 (68/93): objectweb-asm3-3.3.1-15.fc27.noarch.rpm 5.3 MB/s | 397 kB 00:00 (69/93): jna-4.4.0-7.fc27.x86_64.rpm 306 kB/s | 237 kB 00:00 (70/93): hibernate-validator-5.2.4-3.fc27.noarch.rpm 6.3 MB/s | 632 kB 00:00 (71/93): findbugs-bcel-6.0-0.9.20140707svn1547656.fc27.noarch.r 7.3 MB/s | 572 kB 00:00 (72/93): jFormatString-0-0.26.20131227gitf159b88.fc27.noarch.rp 805 kB/s | 38 kB 00:00 (73/93): jcip-annotations-1-21.20060626.fc27.noarch.rpm 277 kB/s | 13 kB 00:00 (74/93): findbugs-3.0.1-11.fc27.noarch.rpm 6.7 MB/s | 4.5 MB 00:00 (75/93): bean-validation-api-1.1.0-8.fc27.noarch.rpm 1.2 MB/s | 61 kB 00:00 (76/93): cassandra-server-3.11.1-4.fc27.x86_64.rpm 728 kB/s | 179 kB 00:00 (77/93): classmate-1.3.1-3.fc27.noarch.rpm 1.4 MB/s | 72 kB 00:00 (78/93): jboss-logging-3.3.0-3.fc27.noarch.rpm 1.3 MB/s | 73 kB 00:00 (79/93): sigar-1.6.5-0.20.git58097d9.fc27.x86_64.rpm 1.5 MB/s | 76 kB 00:00 (80/93): cassandra-parent-3.11.1-4.fc27.x86_64.rpm 130 kB/s | 17 kB 00:00 (81/93): python-cassandra-driver-doc-3.13.0-1.fc27.x86_64.rpm 245 kB/s | 64 kB 00:00 (82/93): python2-cassandra-driver-3.13.0-1.fc27.x86_64.rpm 3.3 MB/s | 2.6 MB 00:00 (83/93): python-blist-1.3.6-12.fc27.x86_64.rpm 306 kB/s | 66 kB 00:00 (84/93): cassandra-javadoc-3.11.1-4.fc27.x86_64.rpm 2.1 MB/s | 3.3 MB 00:01 (85/93): python-scales-1.0.5-10.fc27.noarch.rpm 183 kB/s | 68 kB 00:00 (86/93): python2-futures-3.1.1-2.fc27.noarch.rpm 89 kB/s | 32 kB 00:00 (87/93): python2-simplejson-3.10.0-5.fc27.x86_64.rpm 742 kB/s | 278 kB 00:00 (88/93): python3-blist-1.3.6-12.fc27.x86_64.rpm 705 kB/s | 66 kB 00:00 (89/93): python3-scales-1.0.5-10.fc27.noarch.rpm 707 kB/s | 70 kB 00:00 (90/93): python3-simplejson-3.10.0-5.fc27.x86_64.rpm 1.4 MB/s | 278 kB 00:00 (91/93): log4j-over-slf4j-1.7.25-4.fc27.noarch.rpm 148 kB/s | 36 kB 00:00 (92/93): python3-cassandra-driver-3.13.0-1.fc27.x86_64.rpm 2.4 MB/s | 2.8 MB 00:01 (93/93): fastutil-7.0.7-4.fc27.noarch.rpm 2.2 MB/s | 14 MB 00:06 ------------------------------------------------------------------------------------------------ Total 4.4 MB/s | 56 MB 00:12 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : maven-doxia-logging-api-1.7-5.fc27.noarch 1/93 Installing : maven-doxia-sink-api-1.7-5.fc27.noarch 2/93 Installing : metrics-3.1.2-5.fc27.noarch 3/93 Installing : cassandra-java-driver-3.1.4-2.fc27.noarch 4/93 Installing : maven-plugin-annotations-3.5-3.fc27.noarch 5/93 Installing : metrics-jvm-3.1.2-5.fc27.noarch 6/93 Installing : maven-reporting-api-1:3.0-12.fc27.noarch 7/93 Installing : joda-time-2.9.3-4.tzdata2016c.fc27.noarch 8/93 Installing : jna-4.4.0-7.fc27.x86_64 9/93 Installing : maven-common-artifact-filters-3.0.1-3.fc27.noarch 10/93 Installing : maven-surefire-2.19.1-8.fc27.noarch 11/93 Installing : maven-failsafe-plugin-2.19.1-8.fc27.noarch 12/93 Installing : maven-surefire-plugin-2.19.1-8.fc27.noarch 13/93 Installing : ohc-0.6.1-1.fc27.noarch 14/93 Installing : cassandra-java-driver-extras-3.1.4-2.fc27.noarch 15/93 Installing : cassandra-java-driver-mapping-3.1.4-2.fc27.noarch 16/93 Installing : log4j-over-slf4j-1.7.25-4.fc27.noarch 17/93 Installing : python3-simplejson-3.10.0-5.fc27.x86_64 18/93 Installing : python3-scales-1.0.5-10.fc27.noarch 19/93 Installing : python3-blist-1.3.6-12.fc27.x86_64 20/93 Installing : python2-simplejson-3.10.0-5.fc27.x86_64 21/93 Installing : python-scales-1.0.5-10.fc27.noarch 22/93 Installing : python2-futures-3.1.1-2.fc27.noarch 23/93 Installing : python-blist-1.3.6-12.fc27.x86_64 24/93 Installing : python2-cassandra-driver-3.13.0-1.fc27.x86_64 25/93 Installing : cassandra-python2-cqlshlib-3.11.1-4.fc27.x86_64 26/93 Installing : sigar-1.6.5-0.20.git58097d9.fc27.x86_64 27/93 Running scriptlet: sigar-1.6.5-0.20.git58097d9.fc27.x86_64 27/93 Installing : jboss-logging-3.3.0-3.fc27.noarch 28/93 Installing : classmate-1.3.1-3.fc27.noarch 29/93 Installing : bean-validation-api-1.1.0-8.fc27.noarch 30/93 Installing : hibernate-validator-5.2.4-3.fc27.noarch 31/93 Installing : metrics-reporter-config-3.2.2-2.fc27.noarch 32/93 Installing : jcip-annotations-1-21.20060626.fc27.noarch 33/93 Installing : jFormatString-0-0.26.20131227gitf159b88.fc27.noarch 34/93 Installing : findbugs-bcel-6.0-0.9.20140707svn1547656.fc27.noarch 35/93 Installing : findbugs-3.0.1-11.fc27.noarch 36/93 Installing : airline-0.7-6.fc27.noarch 37/93 Installing : fastutil-7.0.7-4.fc27.noarch 38/93 Installing : stream-lib-2.6.0-8.fc27.noarch 39/93 Installing : objectweb-asm3-3.3.1-15.fc27.noarch 40/93 Installing : jsr-311-1.1.1-14.fc27.noarch 41/93 Installing : jackson-1.9.11-12.fc27.noarch 42/93 Installing : snappy-java- 43/93 Installing : sigar-java-1.6.5-0.20.git58097d9.fc27.x86_64 44/93 Installing : lz4-java-1.3.0-8.fc27.x86_64 45/93 Installing : logback-1.1.7-3.fc27.noarch 46/93 Installing : jamm-0.3.1-5.fc27.noarch 47/93 Installing : jBCrypt-0.4-5.fc27.noarch 48/93 Installing : high-scale-lib-1.1.4-9.fc27.noarch 49/93 Installing : ecj-1:4.7.1-1.fc27.noarch 50/93 Installing : concurrentlinkedhashmap-lru-1.4.2-5.fc27.noarch 51/93 Installing : compress-lzf-1.0.3-7.fc27.noarch 52/93 Installing : caffeine-2.3.5-3.fc27.noarch 53/93 Installing : antlr3-java-1:3.5.2-16.fc27.noarch 54/93 Installing : cassandra-java-libs-3.11.1-4.fc27.x86_64 55/93 Installing : avalon-logkit-2.1-28.fc27.noarch 56/93 Installing : avalon-framework-4.3-18.fc27.noarch 57/93 Installing : parboiled-1.1.6-12.fc27.noarch 58/93 Installing : pegdown-1.4.2-11.fc27.noarch 59/93 Installing : fontbox-1.8.13-1.fc26.noarch 60/93 Installing : fop-2.0-7.fc27.noarch 61/93 Installing : apache-commons-configuration-1.10-10.fc27.noarch 62/93 Installing : xmlunit-1.6-6.fc27.noarch 63/93 Installing : maven-doxia-core-1.7-5.fc27.noarch 64/93 Installing : maven-doxia-module-xhtml-1.7-5.fc27.noarch 65/93 Installing : maven-doxia-module-markdown-1.7-5.fc27.noarch 66/93 Installing : maven-doxia-module-apt-1.7-5.fc27.noarch 67/93 Installing : maven-doxia-module-fml-1.7-5.fc27.noarch 68/93 Installing : maven-doxia-module-fo-1.7-5.fc27.noarch 69/93 Installing : maven-doxia-module-xdoc-1.7-5.fc27.noarch 70/93 Installing : plexus-component-api-1.0-0.23.alpha15.fc27.noarch 71/93 Installing : plexus-interactivity-api-1.0-0.24.alpha6.fc27.noarch 72/93 Installing : plexus-io-2.7.1-3.fc27.noarch 73/93 Installing : dain-snappy-0.4-4.fc27.noarch 74/93 Installing : plexus-archiver-3.4-3.fc27.noarch 75/93 Installing : maven-archiver-3.1.1-3.fc27.noarch 76/93 Installing : plexus-i18n-1.0-0.10.b10.4.fc27.noarch 77/93 Installing : maven-doxia-sitetools-1.7.4-4.fc27.noarch 78/93 Installing : maven-javadoc-plugin-2.10.4-4.fc27.noarch 79/93 Installing : plexus-compiler-2.8.1-5.fc27.noarch 80/93 Installing : maven-shared-incremental-1.1-13.fc27.noarch 81/93 Installing : maven-compiler-plugin-3.6.1-3.fc27.noarch 82/93 Installing : felix-framework-5.6.0-3.fc27.noarch 83/93 Installing : sonatype-oss-parent-7-13.fc27.noarch 84/93 Installing : cassandra-java-driver-parent-3.1.4-2.fc27.noarch 85/93 Installing : cassandra-java-driver-tests-3.1.4-2.fc27.noarch 86/93 Installing : cassandra-3.11.1-4.fc27.x86_64 87/93 warning: user cassandra does not exist - using root warning: group cassandra does not exist - using root Running scriptlet: cassandra-server-3.11.1-4.fc27.x86_64 88/93 /var/tmp/rpm-tmp.CAL3sJ: line 3: getrnt: command not found Installing : cassandra-server-3.11.1-4.fc27.x86_64 88/93 Running scriptlet: cassandra-server-3.11.1-4.fc27.x86_64 88/93 Installing : python3-cassandra-driver-3.13.0-1.fc27.x86_64 89/93 Installing : python-cassandra-driver-doc-3.13.0-1.fc27.x86_64 90/93 Installing : cassandra-parent-3.11.1-4.fc27.x86_64 91/93 Installing : cassandra-javadoc-3.11.1-4.fc27.x86_64 92/93 Installing : cassandra-java-driver-javadoc-3.1.4-2.fc27.noarch 93/93 Running scriptlet: cassandra-java-driver-javadoc-3.1.4-2.fc27.noarch 93/93 Running as unit: run-rfbf2f7cbd32a4b7c9ec02dd10f9c5c87.service Verifying : cassandra-java-driver-3.1.4-2.fc27.noarch 1/93 Verifying : cassandra-java-driver-extras-3.1.4-2.fc27.noarch 2/93 Verifying : cassandra-java-driver-javadoc-3.1.4-2.fc27.noarch 3/93 Verifying : cassandra-java-driver-mapping-3.1.4-2.fc27.noarch 4/93 Verifying : cassandra-java-driver-parent-3.1.4-2.fc27.noarch 5/93 Verifying : cassandra-java-driver-tests-3.1.4-2.fc27.noarch 6/93 Verifying : metrics-3.1.2-5.fc27.noarch 7/93 Verifying : maven-compiler-plugin-3.6.1-3.fc27.noarch 8/93 Verifying : maven-failsafe-plugin-2.19.1-8.fc27.noarch 9/93 Verifying : maven-javadoc-plugin-2.10.4-4.fc27.noarch 10/93 Verifying : maven-surefire-plugin-2.19.1-8.fc27.noarch 11/93 Verifying : sonatype-oss-parent-7-13.fc27.noarch 12/93 Verifying : felix-framework-5.6.0-3.fc27.noarch 13/93 Verifying : maven-shared-incremental-1.1-13.fc27.noarch 14/93 Verifying : plexus-compiler-2.8.1-5.fc27.noarch 15/93 Verifying : maven-plugin-annotations-3.5-3.fc27.noarch 16/93 Verifying : maven-surefire-2.19.1-8.fc27.noarch 17/93 Verifying : maven-archiver-3.1.1-3.fc27.noarch 18/93 Verifying : maven-common-artifact-filters-3.0.1-3.fc27.noarch 19/93 Verifying : maven-doxia-sink-api-1.7-5.fc27.noarch 20/93 Verifying : maven-doxia-sitetools-1.7.4-4.fc27.noarch 21/93 Verifying : maven-reporting-api-1:3.0-12.fc27.noarch 22/93 Verifying : plexus-archiver-3.4-3.fc27.noarch 23/93 Verifying : plexus-interactivity-api-1.0-0.24.alpha6.fc27.noarch 24/93 Verifying : maven-doxia-logging-api-1.7-5.fc27.noarch 25/93 Verifying : maven-doxia-core-1.7-5.fc27.noarch 26/93 Verifying : maven-doxia-module-apt-1.7-5.fc27.noarch 27/93 Verifying : maven-doxia-module-fml-1.7-5.fc27.noarch 28/93 Verifying : maven-doxia-module-fo-1.7-5.fc27.noarch 29/93 Verifying : maven-doxia-module-markdown-1.7-5.fc27.noarch 30/93 Verifying : maven-doxia-module-xdoc-1.7-5.fc27.noarch 31/93 Verifying : maven-doxia-module-xhtml-1.7-5.fc27.noarch 32/93 Verifying : plexus-i18n-1.0-0.10.b10.4.fc27.noarch 33/93 Verifying : dain-snappy-0.4-4.fc27.noarch 34/93 Verifying : plexus-io-2.7.1-3.fc27.noarch 35/93 Verifying : plexus-component-api-1.0-0.23.alpha15.fc27.noarch 36/93 Verifying : xmlunit-1.6-6.fc27.noarch 37/93 Verifying : apache-commons-configuration-1.10-10.fc27.noarch 38/93 Verifying : fop-2.0-7.fc27.noarch 39/93 Verifying : pegdown-1.4.2-11.fc27.noarch 40/93 Verifying : avalon-framework-4.3-18.fc27.noarch 41/93 Verifying : fontbox-1.8.13-1.fc26.noarch 42/93 Verifying : parboiled-1.1.6-12.fc27.noarch 43/93 Verifying : avalon-logkit-2.1-28.fc27.noarch 44/93 Verifying : cassandra-3.11.1-4.fc27.x86_64 45/93 Verifying : cassandra-java-libs-3.11.1-4.fc27.x86_64 46/93 Verifying : cassandra-python2-cqlshlib-3.11.1-4.fc27.x86_64 47/93 Verifying : airline-0.7-6.fc27.noarch 48/93 Verifying : antlr3-java-1:3.5.2-16.fc27.noarch 49/93 Verifying : caffeine-2.3.5-3.fc27.noarch 50/93 Verifying : compress-lzf-1.0.3-7.fc27.noarch 51/93 Verifying : concurrentlinkedhashmap-lru-1.4.2-5.fc27.noarch 52/93 Verifying : ecj-1:4.7.1-1.fc27.noarch 53/93 Verifying : high-scale-lib-1.1.4-9.fc27.noarch 54/93 Verifying : jBCrypt-0.4-5.fc27.noarch 55/93 Verifying : jackson-1.9.11-12.fc27.noarch 56/93 Verifying : jamm-0.3.1-5.fc27.noarch 57/93 Verifying : jna-4.4.0-7.fc27.x86_64 58/93 Verifying : joda-time-2.9.3-4.tzdata2016c.fc27.noarch 59/93 Verifying : logback-1.1.7-3.fc27.noarch 60/93 Verifying : lz4-java-1.3.0-8.fc27.x86_64 61/93 Verifying : metrics-jvm-3.1.2-5.fc27.noarch 62/93 Verifying : metrics-reporter-config-3.2.2-2.fc27.noarch 63/93 Verifying : ohc-0.6.1-1.fc27.noarch 64/93 Verifying : sigar-java-1.6.5-0.20.git58097d9.fc27.x86_64 65/93 Verifying : snappy-java- 66/93 Verifying : stream-lib-2.6.0-8.fc27.noarch 67/93 Verifying : findbugs-3.0.1-11.fc27.noarch 68/93 Verifying : jsr-311-1.1.1-14.fc27.noarch 69/93 Verifying : objectweb-asm3-3.3.1-15.fc27.noarch 70/93 Verifying : hibernate-validator-5.2.4-3.fc27.noarch 71/93 Verifying : fastutil-7.0.7-4.fc27.noarch 72/93 Verifying : findbugs-bcel-6.0-0.9.20140707svn1547656.fc27.noarch 73/93 Verifying : jFormatString-0-0.26.20131227gitf159b88.fc27.noarch 74/93 Verifying : jcip-annotations-1-21.20060626.fc27.noarch 75/93 Verifying : cassandra-server-3.11.1-4.fc27.x86_64 76/93 Verifying : bean-validation-api-1.1.0-8.fc27.noarch 77/93 Verifying : classmate-1.3.1-3.fc27.noarch 78/93 Verifying : jboss-logging-3.3.0-3.fc27.noarch 79/93 Verifying : sigar-1.6.5-0.20.git58097d9.fc27.x86_64 80/93 Verifying : cassandra-javadoc-3.11.1-4.fc27.x86_64 81/93 Verifying : cassandra-parent-3.11.1-4.fc27.x86_64 82/93 Verifying : python-cassandra-driver-doc-3.13.0-1.fc27.x86_64 83/93 Verifying : python2-cassandra-driver-3.13.0-1.fc27.x86_64 84/93 Verifying : python-blist-1.3.6-12.fc27.x86_64 85/93 Verifying : python-scales-1.0.5-10.fc27.noarch 86/93 Verifying : python2-futures-3.1.1-2.fc27.noarch 87/93 Verifying : python2-simplejson-3.10.0-5.fc27.x86_64 88/93 Verifying : python3-cassandra-driver-3.13.0-1.fc27.x86_64 89/93 Verifying : python3-blist-1.3.6-12.fc27.x86_64 90/93 Verifying : python3-scales-1.0.5-10.fc27.noarch 91/93 Verifying : python3-simplejson-3.10.0-5.fc27.x86_64 92/93 Verifying : log4j-over-slf4j-1.7.25-4.fc27.noarch 93/93 Installed: cassandra.x86_64 3.11.1-4.fc27 cassandra-java-driver.noarch 3.1.4-2.fc27 cassandra-java-driver-extras.noarch 3.1.4-2.fc27 cassandra-java-driver-javadoc.noarch 3.1.4-2.fc27 cassandra-java-driver-mapping.noarch 3.1.4-2.fc27 cassandra-java-driver-parent.noarch 3.1.4-2.fc27 cassandra-java-driver-tests.noarch 3.1.4-2.fc27 cassandra-javadoc.x86_64 3.11.1-4.fc27 cassandra-parent.x86_64 3.11.1-4.fc27 cassandra-server.x86_64 3.11.1-4.fc27 python-cassandra-driver-doc.x86_64 3.13.0-1.fc27 python2-cassandra-driver.x86_64 3.13.0-1.fc27 python3-cassandra-driver.x86_64 3.13.0-1.fc27 airline.noarch 0.7-6.fc27 antlr3-java.noarch 1:3.5.2-16.fc27 apache-commons-configuration.noarch 1.10-10.fc27 avalon-framework.noarch 4.3-18.fc27 avalon-logkit.noarch 2.1-28.fc27 bean-validation-api.noarch 1.1.0-8.fc27 caffeine.noarch 2.3.5-3.fc27 cassandra-java-libs.x86_64 3.11.1-4.fc27 cassandra-python2-cqlshlib.x86_64 3.11.1-4.fc27 classmate.noarch 1.3.1-3.fc27 compress-lzf.noarch 1.0.3-7.fc27 concurrentlinkedhashmap-lru.noarch 1.4.2-5.fc27 dain-snappy.noarch 0.4-4.fc27 ecj.noarch 1:4.7.1-1.fc27 fastutil.noarch 7.0.7-4.fc27 felix-framework.noarch 5.6.0-3.fc27 findbugs.noarch 3.0.1-11.fc27 findbugs-bcel.noarch 6.0-0.9.20140707svn1547656.fc27 fontbox.noarch 1.8.13-1.fc26 fop.noarch 2.0-7.fc27 hibernate-validator.noarch 5.2.4-3.fc27 high-scale-lib.noarch 1.1.4-9.fc27 jBCrypt.noarch 0.4-5.fc27 jFormatString.noarch 0-0.26.20131227gitf159b88.fc27 jackson.noarch 1.9.11-12.fc27 jamm.noarch 0.3.1-5.fc27 jboss-logging.noarch 3.3.0-3.fc27 jcip-annotations.noarch 1-21.20060626.fc27 jna.x86_64 4.4.0-7.fc27 joda-time.noarch 2.9.3-4.tzdata2016c.fc27 jsr-311.noarch 1.1.1-14.fc27 log4j-over-slf4j.noarch 1.7.25-4.fc27 logback.noarch 1.1.7-3.fc27 lz4-java.x86_64 1.3.0-8.fc27 maven-archiver.noarch 3.1.1-3.fc27 maven-common-artifact-filters.noarch 3.0.1-3.fc27 maven-compiler-plugin.noarch 3.6.1-3.fc27 maven-doxia-core.noarch 1.7-5.fc27 maven-doxia-logging-api.noarch 1.7-5.fc27 maven-doxia-module-apt.noarch 1.7-5.fc27 maven-doxia-module-fml.noarch 1.7-5.fc27 maven-doxia-module-fo.noarch 1.7-5.fc27 maven-doxia-module-markdown.noarch 1.7-5.fc27 maven-doxia-module-xdoc.noarch 1.7-5.fc27 maven-doxia-module-xhtml.noarch 1.7-5.fc27 maven-doxia-sink-api.noarch 1.7-5.fc27 maven-doxia-sitetools.noarch 1.7.4-4.fc27 maven-failsafe-plugin.noarch 2.19.1-8.fc27 maven-javadoc-plugin.noarch 2.10.4-4.fc27 maven-plugin-annotations.noarch 3.5-3.fc27 maven-reporting-api.noarch 1:3.0-12.fc27 maven-shared-incremental.noarch 1.1-13.fc27 maven-surefire.noarch 2.19.1-8.fc27 maven-surefire-plugin.noarch 2.19.1-8.fc27 metrics.noarch 3.1.2-5.fc27 metrics-jvm.noarch 3.1.2-5.fc27 metrics-reporter-config.noarch 3.2.2-2.fc27 objectweb-asm3.noarch 3.3.1-15.fc27 ohc.noarch 0.6.1-1.fc27 parboiled.noarch 1.1.6-12.fc27 pegdown.noarch 1.4.2-11.fc27 plexus-archiver.noarch 3.4-3.fc27 plexus-compiler.noarch 2.8.1-5.fc27 plexus-component-api.noarch 1.0-0.23.alpha15.fc27 plexus-i18n.noarch 1.0-0.10.b10.4.fc27 plexus-interactivity-api.noarch 1.0-0.24.alpha6.fc27 plexus-io.noarch 2.7.1-3.fc27 python-blist.x86_64 1.3.6-12.fc27 python-scales.noarch 1.0.5-10.fc27 python2-futures.noarch 3.1.1-2.fc27 python2-simplejson.x86_64 3.10.0-5.fc27 python3-blist.x86_64 1.3.6-12.fc27 python3-scales.noarch 1.0.5-10.fc27 python3-simplejson.x86_64 3.10.0-5.fc27 sigar.x86_64 1.6.5-0.20.git58097d9.fc27 sigar-java.x86_64 1.6.5-0.20.git58097d9.fc27 snappy-java.x86_64 sonatype-oss-parent.noarch 7-13.fc27 stream-lib.noarch 2.6.0-8.fc27 xmlunit.noarch 1.6-6.fc27 Complete!

Starting Cassandra

After you install Cassandra, you can start it as any sudoer user with the following syntax:

sudo cassandra -R

Using Cassandra

You can connect to the Cassandra server with the cqlsh client software. You use the following syntax:


You should see the Cassandra version information, and then you can type help at the cqlsh> prompt to see the available commands:


Here’s my script that creates Cassandra keyspace, which is more or less a database. You use the USE command to connect to the keyspace or database, like you would in MySQL. You do not have sequences in Cassandra because they’re not a good fit for a distributed architecture. Cassandra does not support a native procedural extension like relational databases. You must create User-defined functions (UDFs) by embedding the logic in Java.

This script does the following:

  • Creates a keyspace
  • Uses the keyspace
  • Conditionally drops tables and functions
  • Creates two tables
  • Inserts data into the two tables
  • Queries data from the tables

I also included a call to a UDF inside a query in two of the examples. One of the queries demonstrates how to return a JSON structure from a query. To simplify things and provide clarification of the scripts behaviors, the details are outlined below.

  • The first segment of the script creates the keyspace, changes the scope to use the keyspace, conditionally drop tables, create tables, and insert values into the tables:

    /* Create a keyspace in Cassandra, which is like a database in MySQL or a schema in Oracle. */ CREATE KEYSPACE IF NOT EXISTS student WITH REPLICATION = { 'class':'SimpleStrategy' ,'replication_factor': 1 } AND DURABLE_WRITES = true; /* Use the keyspace or connect to the database. */ USE student; /* Drop the member table from the student keyspace. */ DROP TABLE IF EXISTS member; /* Create a member table in the student keyspace. */ CREATE TABLE member ( member_number VARCHAR , member_type VARCHAR , credit_card_number VARCHAR , credit_card_type VARCHAR , PRIMARY KEY ( member_number )); /* Conditionally drop the contact table from the student keyspace. */ DROP TABLE IF EXISTS contact; /* Create a contact table in the student keyspace. */ CREATE TABLE contact ( contact_number VARCHAR , contact_type VARCHAR , first_name VARCHAR , middle_name VARCHAR , last_name VARCHAR , member_number VARCHAR , PRIMARY KEY ( contact_number )); /* Insert a row into the member table. */ INSERT INTO member ( member_number, member_type, credit_card_number, credit_card_type ) VALUES ('SFO-12345','GROUP','2222-4444-5555-6666','VISA'); /* Insert a row into the contact table. */ INSERT INTO contact ( contact_number, contact_type, first_name, middle_name, last_name, member_number ) VALUES ('CUS_00001','FAMILY','Barry', NULL,'Allen','SFO-12345'); /* Insert a row into the contact table. */ INSERT INTO contact ( contact_number, contact_type, first_name, middle_name, last_name, member_number ) VALUES ('CUS_00002','FAMILY','Iris', NULL,'West-Allen','SFO-12345'); /* Insert a row into the member table. */ INSERT INTO member ( member_number, member_type, credit_card_number, credit_card_type ) VALUES ('SFO-12346','GROUP','3333-8888-9999-2222','VISA'); /* Insert a row into the contact table. */ INSERT INTO contact ( contact_number, contact_type, first_name, middle_name, last_name, member_number ) VALUES ('CUS_00003','FAMILY','Caitlin','Marie','Snow','SFO-12346');
  • The following queries the member table:

    /* Select all columns from the member table. */ SELECT * FROM member;

    It returns the following:

    member_number | credit_card_number | credit_card_type | member_type ---------------+---------------------+------------------+------------- SFO-12345 | 2222-4444-5555-6666 | VISA | GROUP SFO-12346 | 3333-8888-9999-2222 | VISA | GROUP
  • Create a concatenate User-defined function (UDF) for Cassandra. The first step requires you to edit the cassandra.yaml file, which you find in the /etc/cassandra/default.conf directory. There is a single parameter that you need to edit, and it is the enable_user_defined_functions parameter. By default the parameter is set to false, and you need to enable it to create UDFs.

    After you make the edit, the cassandra.yaml file should look like this:

    # If unset, all GC Pauses greater than gc_log_threshold_in_ms will log at # INFO level # UDFs (user defined functions) are disabled by default. # As of Cassandra 3.0 there is a sandbox in place that should prevent execution of evil code. enable_user_defined_functions: true

    After you make the change, you can create your own UDF. The following UDF formats the first, middle, and last name so there’s only one whitespace between the first and last name when there middle name value is null.

    This type of function must use a CALLED ON NULL INPUT clause in lieu of a RETURNS NULL ON NULL INPUT clause. The latter would force the function to return a null value if any one of the parameters were null.

    /* Drop the concatenate function because a replace disallows changing a RETURNS NULL ON NULL INPUT with a CALLED ON NULL INPUT without raising an "89: InvalidRequest" exception. */ DROP FUNCTION concatenate; /* Create a user-defined function to concatenate names. */ CREATE OR REPLACE FUNCTION concatenate (first_name VARCHAR, middle_name VARCHAR, last_name VARCHAR) CALLED ON NULL INPUT RETURNS VARCHAR LANGUAGE java AS $$ /* Concatenate first and last names when middle name is null, and first, middle, and last names when middle name is not null. */ String name; /* Check for null middle name. */ if (middle_name == null) { name = first_name + " " + last_name; } else { name = first_name + " " + middle_name + " " + last_name; } return name; $$;
  • Query the values from the contact table with the UDF function in the SELECT-list:

    /* Query the contact information. */ SELECT member_number , contact_number , contact_type , concatenate(first_name, middle_name, last_name) AS full_name FROM contact;

    It returns the following:

    member_number | contact_number | contact_type | full_name ---------------+----------------+--------------+-------------------- SFO-12345 | CUS_00001 | FAMILY | Barry Allen SFO-12345 | CUS_00002 | FAMILY | Iris West-Allen SFO-12346 | CUS_00003 | FAMILY | Caitlin Marie Snow
  • Query the values from the contact table with a JSON format:

    /* Query the contact information and return in a JSON format. */ SELECT JSON contact_number , contact_type , concatenate(first_name, middle_name, last_name) AS full_name FROM contact;

    It returns the following:

    [json] ------------------------------------------------------------------------------------------------- {"contact_number": "CUS_00001", "contact_type": "FAMILY", "full_name": "Barry Allen"} {"contact_number": "CUS_00002", "contact_type": "FAMILY", "full_name": "Iris West-Allen"} {"contact_number": "CUS_00003", "contact_type": "FAMILY", "full_name": "Caitlin Marie Snow"}

You can call the script from a relative directory inside cqlsh, like this:

source 'cstudent.cql'

At the end of the day, the concept of adding and removing nodes is attractive. Though, the lack of normal relational mechanics and narrowly supported set of CQL semantics leaves me with open questions. For example, is clustering without a coordinator really valuable enough to settle for eventual, or tunable, consistency with such a narrowly scoped query language?

As always, I hope this helps those looking for a quick how-to on Cassandra.

MySQL on Fedora 27

While updating my class image to Fedora 27, I noticed that it installed the Akonadi Server. The documentation on the Akonadi server lacked some straightforward documentation. It also offered a bundled set of software that limited how to approach MySQL development.

So, I removed all those packages with the following syntax:

dnf remove `rpm -qa | grep akonadi`

After removing those Akonadi packages, I installed the MySQL Community Edition from the Fedora repo with this syntax:

yum install -y community-mysql*

Having installed MySQL Community Edition, I started the service with this command:

sudo service mysql start

Then, I ran the mysql_secure_installation script to secure the installation:


The script set the root user’s password, remove the anonymous user, disallow remote root login, and remove the test databases. Then, I verified connecting to the MySQL database with the following syntax:

mysql -uroot -ppassword

I enabled the MySQL Service to start with each reboot of the Fedora instance. I used the following command:

systemctl enable mysqld.service

It creates the following link:

ln -s '/etc/systemd/system/' '/usr/lib/systemd/system/mysqld.service'

Now, I need to install and configure Apache, PHP, and upgrade Oracle Database 11g XE’s APEX 4 to 5.

MariDB to Hadoop in Spanish

Nicolas Tobias has written an awesome guide to setting up replication from MariaDB to Hadoop/HDFS using Tungsten Replicator, in Spanish! He’s planning more of these so if you like what you see, please let him know!

Semana santa y yo con nuevas batallas que contar.
Me hayaba yo en el trabajo, pensando en que iba a invertir la calma que acompa;a a los dias de vacaciones que libremente podemos elegir trabajar y pense: No seria bueno terminar esa sincronizacion entre los servidores de mariaDB y HIVE?

Ya habia buscado algo de info al respecto en Enero hasta tenia una PoC montada con unas VM que volvi a encender, pero estaba todo podrido: no arrancaba, no funcionba ni siquiera me acordaba como lo habia hecho y el history de la shell er un galimatias. Decidi que si lo rehacia todo desde cero iba a poder dejarlo escrito en un playbook y ademas, aprenderlo y automatizarlo hasta el limite de poder desplegar de forma automatica on Ansible.

via De MariaDB a HDFS: Usando Continuent Tungsten. Parte 1 |

MySQL 8.0 InnoDB Cluster and Persistent Configurations

There are lots of new features in MySQL 8.0 that was recently released including our Document Store capability.  There are a few core capabilities related to InnoDB Cluster in 8.0 that I’d like to share but some will arrive in some coming blogs.  Primarily here I’ll point out some nice details with InnoDB Cluster 8.0… Read More »