Planet MySQL

Percona Live Europe Session Interview: MySQL on Docker – Containerizing the Dolphin

One of the widely discussed technologies at Percona Live Europe was the logistics of running MySQL in containers. Containers – particularly Docker – have become a hot topic, so there was a good-sized crowd on day one of the conference for Ashraf Sharif, Senior Support Engineer with Severalnines. He presented his talk “MySQL on Docker: Containerizing the Dolphin”. 

During his presentation, Ashraf shared some recommendations for best practices when setting out on containerizing MySQL. He sees the trend of moving to containers as a progression from the use of virtual hosts.

After his talk on day one of the Percona Live Europe conference, I caught up with Ashraf and asked about his presentation. I was interested in which concepts are most important for ensuring a smoother implementation.

If you enjoy this brief presentation and would like to find out more, then you might like to subscribe to Ashraf’s blog on the Severalnines website where he regularly posts insights on his special interests of system scalability and high availability.

MySQL Connector/Node.js 8.0.8-dmr has been released

MySQL Connector/Node.js is a new Node.js driver for use with the X
DevAPI. This release, v8.0.8, is the second development release of the
MySQL Connector/Node.js 8.0 series.

The X DevAPI enables application developers to write code that combines
the strengths of the relational and document models using a modern,
NoSQL-like syntax that does not assume previous experience writing
traditional SQL.

MySQL Connector/Node.js can be downloaded through npm (see
https://www.npmjs.com/package/@mysql/xdevapi for details) or from
https://dev.mysql.com/downloads/connector/nodejs/.

To learn more about how to write applications using the X DevAPI, see
http://dev.mysql.com/doc/x-devapi-userguide/en/. For more information
about how the X DevAPI is implemented in MySQL Connector/Node.js, and
its usage, see http://dev.mysql.com/doc/dev/connector-nodejs/.

Note

Please note that the X DevAPI requires at least MySQL Server version
5.7.12 or higher with the X Plugin enabled. For general documentation
about how to get started using MySQL as a document store, see
http://dev.mysql.com/doc/refman/5.7/en/document-store.html.

Functionality Added or Changed

Bugs Fixed

  • Added support for the parentheses-based IN syntax, such as IN (x, y, z, …), as defined in the X DevAPI. (Bug #26666817)

On behalf of the MySQL/Oracle Release Engineering Team
Piotr Obrzut

MySQL Connector/Java 8.0.8-dmr has been released

Dear MySQL users,

MySQL Connector/J 8.0.8 Development Release is a development milestone
release for the 8.0.x series.

This release includes the following new features and changes, also
described in more detail on

https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/news-8-0-8.html

MySQL Connectors and other MySQL client tools and applications now
synchronize the first digit of their version number with the (highest)
MySQL server version they support.
This change makes it easy and intuitive to decide which client version
to use for which server version.

As always, we recommend that you check the “CHANGES” file in the download
archive to be aware of changes in behavior that might affect your application.

To download MySQL Connector/J 8.0.8 dmr, see the “Development
Releases” tab at http://dev.mysql.com/downloads/connector/j/

Enjoy!

Changes in MySQL Connector/J 8.0.8 (2017-09-28, Development Milestone) Version 8.0.8 Development Milestone is the latest development release of the 8.0 branch of MySQL Connector/J, providing an insight into upcoming features. It is suitable for use with MySQL Server versions 5.5, 5.6, 5.7, and 8.0. It supports the Java Database Connectivity (JDBC) 4.2 API. Functionality Added or Changed * Packaging: RPM and Debian packages for installing Connector/J are now available from the Connector/J Download page (http://dev.mysql.com/downloads/connector/j/). * X DevAPI: Connector/J has implemented a new interface of the X Dev API that allows the retrieving, adding, removing, and updating of persistent session continuation data. The implementation includes the following: + A SessionConfig object that holds the information for a session configuration data set. + A PersistenceHandler interface that allows custom implementations of persistence handlers. + A PasswordHandler interface that allows custom implementations of password handling code. + A SessionConfigManager class for editing and fetching Sessionconfig objects, and defining instances of the PersistenceHandler and PasswordHandler. See MySQL Connector/J X DevAPI Reference (http://dev.mysql.com/doc/dev/connector-j) for more details. * X DevAPI: A new connection property, xdevapi.auth, has been added for specifying the authentication mechanism for connections using the X Protocol. Allowed values are MYSQL41, PLAIN, and EXTERNAL. See the entry for the new property in Configuration Properties (http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html) for details. * X DevAPI: To support row locks (http://dev.mysql.com/doc/refman/5.7/en/innodb-locking-reads.html) for the find() method of the X DevAPI, the FindStatement and the SelecStatement interfaces have been extended with the following methods: + lockExclusive(), which works like SELECT ... FOR UPDATE for relational tables. + lockShared(), which works like the SELECT ... LOCK IN SHARED MODE (for MySQL 5.7) or SELECT ... FOR SHARE (for MySQL 8.0) for relational tables. See MySQL Connector/J X DevAPI Reference (http://dev.mysql.com/doc/dev/connector-j) for more details. * X DevAPI: Connector/J now supports the expanded syntax for the IN and NOT IN operator, which can check if a sub-expression is contained inside another one; for example: // For documents coll.find("$.b IN [100,101,102]").execute(); coll.find("'some text with 5432' in $.a").execute(); coll.find("1 in [1, 2, 4]").execute(); coll.find("{'a': 3} not in {'a': 1, 'b': 2}").execute(); // For relational tables tbl.select().where("3 not in [1, 2, 4]").execute(); tbl.select().where("'qqq' not in $.a").execute(); tbl.select().where("{'a': 1} in {'a': 1, 'b': 2}").execute(); * X DevAPI: A number of changes have been implemented for the "drop" methods for the X DevAPI: + Removed dropCollection(schemaName, collectionName) and dropTable(schemaName, tableName) from Session. + Added dropCollection(collectionName) and dropTable(tableName) to Schema. + Schema.dropView() now executes immediately and returns void; also, the ViewDrop interface has been removed. + Collection.dropIndex() now executes immediately and returns void; also the DropCollectionIndexStatement interface has been removed. + The "drop" methods now succeed even if the objects to be dropped do not exist. * Conversion from the MySQL TIME data to java.sql.Date is now supported. In the past, a getDate() retrieving data from a TIME column would throw an SQLException. Now, such a retrieval returns a java.sql.Date object containing the time value expressed in number of milliseconds from the Java epoch; also returned is the warning: "Date part does not exist in SQL TIME field, thus it is set to January 1, 1970 GMT while converting to java.sql.Date." (Bug #26750807) * A new connection property, enabledTLSProtocols, can now be used to override the default restrictions on the TLS versions to be used for connections, which are determined by the version of the MySQL Server that is being connected to. By providing a comma-separated list of values to this option (for example, "TLSv1,TLSv1.1,TLSv1.2") users can, for example, prevent connections from using older TLS version, or allow connections to use TLS versions only supported by a user-compiled MySQL Server. See the entry for the new property in Configuration Properties (http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html) for details. Thanks to Todd Farmer for contributing the code. (Bug #26646676) * Updated the timezone mappings using the latest IANA and CLDR time zone databases. (Bug #25946965) * A new option for the loadBalancingStrategy connection property called serverAffinity has been added. The servers listed in the new connection property serverAffinityOrder (which should be a subset of the servers in the host list of the connection URL) are contacted in the order they are listed until a server is available or until the list of servers is exhausted, at which point a random load-balancing strategy is used with the hosts not listed by serverAffinityOrder. See descriptions for loadBalancingStrategy and serverAffinityOrder in Configuration Properties (http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html) for details. (Bug #20182108) Bugs Fixed * Important Change: Following the changes in MySQL Server 8.0.3, the system variables tx_isolation and tx_read_only have been replaced with transaction_isolation and transaction_read_only in the code of Connector/J. Users should update Connector/J to this latest release in order to connect to MySQL 8.0.3. They should also make the same adjustments to their own applications if they use the old variables in their codes. (Bug #26440544) * X DevAPI: Calling schema.dropView() with a null argument resulted in a NullPointerException. (Bug #26750807) * X DevAPI: When dropCollection() was applied on a null collection, a NullPointerException occurred. (Bug #26393132) * When using cached server-side prepared statements, a memory leak occurred as references to opened statements were being kept while the statements were being decached; it happened when either the close() method has been called twice on a statement, or when there were conflicting cache entries for a statement and the older entry had not been closed and removed from the opened statement list. This fix makes sure the statements are properly closed in both cases. Thanks to Eduard Gurskiy for contributing to the fix. (Bug #26633984, Bug #87429) * The regression test for Bug#63800 failed because the default value of the system variable explicit_defaults_for_timestamp of MySQL Server has been changed since release 8.0.2. The test has been adjusted to take the change into consideration. (Bug #26501245) * Running callable statements against MySQL Server 8.0 resulted in the SQLException: ResultSet is from UPDATE. No Data. (Bug #26259384) * Secure JDBC connections did not fall back to the default truststore when a custom one was not provided. (Bug #26243128) * In com/mysql/jdbc/ServerPreparedStatement.java, the arguments resultSetType and resultSetConcurrency for a call of Connection.preparedStatement() were swapped. (Bug #25874048, Bug #85885) * Some JDBC proxied objects were missing the proper handlings of the equals() methods, thus even comparison of one of these proxied objects to its own self with equals() yielded false. This patch introduces proper handlings for the equals() method in all the relevant proxies. (Bug #21931572, Bug #78313) * A server-side prepared statement was not closed when the same statement was being prepared again while the original statement was being cached. This was caused by the silent replacement of the cache entry of the old statement by the new. When this happened repeatedly, it caused eventually the complaint that max_prepared_stmt_count was exceeded. This fix makes sure that when a cache entry for a statement replaces an older one, the older statement is immediately closed. (Bug #20066806, Bug #74932)

On behalf of Oracle MySQL Release Team
Balasubramanian Kandasamy

MySQL Connector/Net 8.0.9-dmr has been released

Dear MySQL users,

MySQL Connector/Net 8.0.9 is the sixth development release that expands
cross-platform support to Linux and macOS when using Microsoft’s .NET Core
framework. Now, .NET developers can use the X DevAPI with .NET Core and
Entity Framework Core (EF Core) 1.0 to create server applications that run
on Windows, Linux and macOS. We are very excited about this change and
really look forward to your feedback on it!

MySQL Connector/Net 8.0.9 is also the eighth development release of MySQL
Connector/Net to add support for the new X DevAPI.  The X DevAPI enables
application developers to write code that combines the strengths of the
relational and document models using a modern, NoSQL-like syntax that
does not assume previous experience writing traditional SQL.

To learn more about how to write applications using the X DevAPI, see
http://dev.mysql.com/doc/x-devapi-userguide/en/index.html. For more
information about how the X DevAPI is implemented in Connector/Net, see
http://dev.mysql.com/doc/dev/connector-net.

Please note that the X DevAPI requires at least MySQL Server version
5.7.12 or higher with the X Plugin enabled. For general documentation
about how to get started using MySQL as a document store, see
http://dev.mysql.com/doc/refman/5.7/en/document-store.html.

To download MySQL Connector/Net 8.0.9-dmr, see the “Development
Releases” tab at http://dev.mysql.com/downloads/connector/net/

Changes in MySQL Connector/Net 8.0.9 (2017-09-28, Development Milestone) * Functionality Added or Changed * Bugs Fixed Functionality Added or Changed * For accuracy, the following Entity Framework 6 items were renamed: + NuGet package - MySql.Data.EntityFramework (was MySql.Data.Entity) + Namespace - MySql.Data.EntityFramework (was MySql.Data.Entity) + Assembly - MySql.Data.EntityFramework.dll (was MySql.Data.Entity.EF6.dll) (Bug #26396260) * X DevAPI: The SessionConfigManager.Update method was removed and the SessionConfigManager.Save method now always overwrites the data with the given key. For example: SessionConfigManager.Save( "mysess", "{ \"uri\": \"mysqlx://myuser@localhost/mysess\", \"appdata\": { \"biz\": \"quux\" } }" ); SessionConfigManager.Save( "mysess", "{ \"uri\": \"mysqlx://test@localhost/mysess\", \"appdata\": { \"tar\": \"zzzz\" } }" ); The mysess.uri and mysess.appdata values set by the first statement are replaced with the new values set by the second statement. (Bug #25829054, Bug #25860579) * MySQL Connector/Net now supports MySQL servers configured to use utf8mb4 as the default character set. * The following methods are available for use with EF Core in asynchronous command and connection operations: + Microsoft.EntityFrameworkCore.DbContext.AddAsync + Microsoft.EntityFrameworkCore.DbContext.AddRangeAsync + Microsoft.EntityFrameworkCore.DbContext.FindAsync + Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync + Microsoft.EntityFrameworkCore.Infrastructure.Databas eFacade.EnsureDeletedAsync + Microsoft.EntityFrameworkCore.Infrastructure.Databas eFacade.EnsureCreatedAsync + Microsoft.EntityFrameworkCore.DbContext.ToListAsync * X DevAPI: The following methods execute directly, whereas each method previously required .execute() as the final item in the method chain: + BaseSession.DropSchema + Collection.DropIndex + Schema.DropCollection + Schema.DropView In addition, the methods now succeed even if the objects to be dropped do not exist. * The AutoEnlist and IncludeSecurityAsserts connection-string options are not appropriate for use by applications that target .NET Core and now return an error when used. * EF Core: Support for explicit loading was added. Explicit loading is an object-relational mapper (O/RM) pattern introduced in EF Core 1.1.0, which enables .NET developers to explicitly load related data from the database at a later time. * The following connection-string options are not currently supported for use by applications that target .NET Core and now return an error when used: + SharedMemoryName + IntegratedSecurity + PipeName + Logging + UseUsageAdvisor + UsePerformanceMonitor + InteractiveSession + Replication * X DevAPI: To provide safe transactional document and row updates, the following new methods were added: + FindStatement.LockShared + FindStatement.LockExclusive + TableSelectStatement.LockShared + TableSelectStatement.LockExclusive The LockShared() and LockExclusive() methods can be called any number of times with either the Collection.Find() or Table.Select() method chains and in any combination. If multiple calls to the methods are made, only the final method is invoked. For additional information about the two types of locking, see Shared and Exclusive Locks (http://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html#innodb-shared-exclusive-locks). * X DevAPI: When creating a new session, multiple hosts can be tried until a successful connection is established. A list of hosts can be given in a connection string or as session creation options, with or without priorities. var mySession = MySQLX.GetSession( "mysqlx://dbuser:password@[" + "(address=localhost:33060, priority=90)," + "(address=192.1.10.10:33060, priority=100)," + "(address=[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33060, priority=30) " + "]" ); var mySession = MySQLX.GetSession( "user=dbuser;" + "password=dbpassword;" + "server=" + "(address=192.1.10.10, priority=90)," + "(address=server.example.com, priority=100)," + "(address=localhost, priority=30);" + "port=33060;" ); * X DevAPI: The IN and NOT IN operators have been updated to expand the range of operands that can be evaluated by the Find(), Modify(), and Remove() methods for collections and the Select(), Update(), and Delete() methods for tables. This update provides support for expressions using the following syntax: compExpr ["NOT"] "IN" compExpr The previous syntax used with IN and NOT IN operators is still valid and it takes precedence over the new syntax when both are present. * X DevAPI: Several new direct-execution methods were added to the Collection class that operate at a single document level, unlike the other CRUD methods that operate on all documents that match a filter. The new methods are: ReplaceOne(), AddOrReplaceOne(), GetOne(), and RemoveOne(). * Support for connections using Unix domain socket files was extended to include MySQL servers deployed on Linux hosts. X DevAPI connection example: "server=/path/to/socket;protocol=unix;user=root;password=mypass;ssl-mode=none" Classic MySQL connection example: "server=/path/to/socket;protocol=unix;user=root;password=mypass" * Connections to the MySQL server now can be made using accounts that authenticate with the sha256_password plugin. For more information, see SHA-256 Pluggable Authentication (http://dev.mysql.com/doc/refman/5.7/en/sha256-pluggable-authentication.html). In addition, a new connection option was added to extend authentication support for connections made using the X Protocol with either basic or URI connection strings and as an anonymous type. The auth connection option enables the MYSQL41, PLAIN, or EXTERNAL authentication mechanism if supported by the server. For a description of the auth option, see Connector/Net Connection-String Options Reference (http://dev.mysql.com/doc/connector-net/en/connector-net-connection-options.html). Bugs Fixed * Assemblies within NuGet packages were not fully signed. (Bug #26739307) * EF Core: Some methods in the DbContext class were not supported for use with asynchronous operations. (Bug #26448321, Bug #84814) * X DevAPI: Priority assignment when connecting to the server in client-side failover situations was not supported in earlier versions of the connector by design. Priority-based failover is now available. (Bug #26198794) * EF Core: When attempting to commit a transaction in which the FirstOrDefaultAsync method was called, the connector returned "System.InvalidOperationException: Connection must be valid and open to commit transaction." instead of committing the transaction. (Bug #26026972, Bug #86199) * X DevAPI: Passing in a value of 0 or lower to the Limit method now produces a more relevant error message indicating that the argument is out of range. (Bug #24384660) * X DevAPI: Passing in the NULL value as a parameter to the DbDoc.SetValue method resulted in an exception. This fix ensures that NULL is accepted for this method. (Bug #23542093) Nuget packages are available at: https://www.nuget.org/packages/MySql.Data/8.0.9-dmr https://www.nuget.org/packages/MySql.Web/8.0.9-dmr https://www.nuget.org/packages/MySql.Data.EntityFrameworkCore/8.0.9-dmr https://www.nuget.org/packages/MySql.Data.EntityFrameworkCore.Design/8.0.9-dmr Enjoy and thanks for the support!

On Behalf of the MySQL/ORACLE RE Team
Gipson Pulla

Percona Live Dublin - Event Recap & Our Sessions

Severalnines was pleased to yet again sponsor Percona Live Europe, the Open Source Database Conference which was held this year in Dublin, Ireland.

At the Conference

Severalnines team members flew in from around the world to partner up with our two local Dubliners to demo ClusterControl in the exhibit hall and present three sessions (see below).

On our Twitter feed we live tweeted both of the keynote sessions to help keep those who weren’t able to attend up-to-speed on the latest happenings in the database world.

We were also able to sit down with René Cannaò, creator of ProxySQL to talk about what’s new with the exciting load balancing technology.

Our Sessions

Members of the Severalnines team presented three technical sessions, all of which were widely attended… some with standing room only!

MySQL Load Balancers - MaxScale, ProxySQL, HAProxy, MySQL Router & nginx - A Close Up Look

Session Details: Load balancing MySQL connections and queries using HAProxy has been popular in the past years. Recently however, we have seen the arrival of MaxScale, MySQL Router, ProxySQL and now also Nginx as a reverse proxy.

For which use cases do you use them and how well do they integrate in your environment? This session aims to give a solid grounding in load balancer technologies for MySQL and MariaDB.

We review the main open-source options available: from application connectors (php-mysqlnd, jdbc), TCP reverse proxies (HAproxy, Keepalived, Nginx) and SQL-aware load balancers (MaxScale, ProxySQL, MySQL Router).

We also look into the best practices for backend health checks to ensure load balanced connections are routed to the correct nodes in several MySQL clustering topologies. You'll gain a good understanding of how the different options compare, and enough knowledge to decide which ones to explore further.

MySQL on Docker - Containerizing the Dolphin

Session Details: Docker is becoming more mainstream and adopted by users as a method to package and deploy self-sufficient applications in primarily stateless Linux containers. It's a great toolset on top of OS-level virtualization (LXC, a.k.a containers) and plays well in the world of micro services.

However, Docker containers are transient by default. If a container is destroyed, all data created is also lost. For a stateful service like a database, this is a major headache to say the least.

There are a number ways to provide persistent storage in Docker containers. In this presentation, we will talk about how to setup a persistence data service with Docker that can be torn down and brought up across hosts and containers.

We touch upon orchestration tools, shared volumes, data-only-containers, security and configuration management, multi-host networking, service discovery and implications on monitoring when we move from host-centric to role-centric services with shorter life cycles.

Automating and Managing MongoDB: An Analysis of Ops Manager vs. ClusterControl Related resources  Follow Severalnines on Twitter  Database Load Balancing with ProxySQL - Tutoria  MySQL on Docker: Running Galera Cluster in Production with ClusterControl on Kubernetes

Session Details: In any busy operations environment, there are countless tasks to perform - some monthly, or weekly, some daily or more frequently, and some on an ad-hoc basis. And automation is key to performing fast, efficient and consistently repeatable software deployments and recovery.

There are many generic tools available, both commercial and open source, to aid with the automation of operational tasks. Some of these tools are even deployed in the database world. However, there are a small number of specialist domain-specific automation tools available also, and we are going to compare two of these products: MongoDB?s own Ops Manager, and ClusterControl from Severalnines.

We cover Installation and maintenance, Complexity of architecture, Options for redundancy, Comparative functionality, Monitoring, Dashboard, Alerting, Backing up and restoring, Automated deployment of advanced configurations, and Upgrading existing deployments

Thanks to the Percona Team for organising another great conference and to everyone who participated from near and afar! We hope to see you again soon!

Tags:  percona live percona MySQL docker proxysql MongoDB clustercontrol presentation event conference

MySQL Connector/Python 8.0.5 DMR has been released

Dear MySQL users,

MySQL Connector/Python 8.0.5 dmr is the sixth development release of the
MySQL Connector Python 8.0 series. This series adds support for the new X
DevAPI. The X DevAPI enables application developers to write code that
combines the strengths of the relational and document models using a
modern, NoSQL-like syntax that does not assume previous experience
writing traditional SQL.

To learn more about how to write applications using the X DevAPI, see
http://dev.mysql.com/doc/x-devapi-userguide/en/.

For more information about how the X DevAPI is implemented in
MySQL Connector/Python, and its usage, see
http://dev.mysql.com/doc/dev/connector-python

Please note that the X DevAPI requires MySQL Server version 5.7.12 or
higher with the X Plugin enabled. For general documentation about how to
get started using MySQL as a document store, see

http://dev.mysql.com/doc/refman/5.7/en/document-store.html

To download MySQL Connector/Python 8.0.5 dmr, see the “Development Releases”
tab at
http://dev.mysql.com/downloads/connector/python/

Enjoy!

Changes in MySQL Connector/Python 8.0.5 (2017-09-28, Development Milestone) * Packaging Notes * Functionality Added or Changed Packaging Notes * MySQL Connector/Python packages are now available in two formats: Pure Python packages that contain only Python files, and packages that contain the Python files plus the C Extension and C Protobuf extension. Exception platforms are Solaris, macOS, and Windows, for which packages containing the Python files and C extensions are available but not pure Python packages. (Bug #26648417) Functionality Added or Changed * MySQL Connector/Python now supports connections to MySQL accounts that use the caching_sha2_password authentication plugin (see SHA-2 Pluggable Authentication (http://dev.mysql.com/doc/refman/8.0/en/caching-sha2-plug gable-authentication.html)). This requires MySQL server version 8.0.3 or higher. It also requires use of a secure connection because Connector/Python does not support RSA encryption for password exchange. * MySQL Connector/Python now supports an auth connection option to specify the authentication methanism. Permitted values are plain, mysql41, and external. The option name and value are not case sensitive. If the authentication mechanism is not specified, it defaults to plain for secure (TLS) or Unix socket connections, or mysql41 for insecure connections. * MySQL Connector/Python now supports a pure Python implementation of Protobuf. Consequently, the Protobuf C extension has become optional. Connector/Python will use the Python implementation if the C extension is not available. The Protobuf Python package is required if it is desired not to use the C extension. The version requirements are Protobuf C++ 2.6.0 or higher, Protobuf Python 3.0.0 or higher. * A mysqlx.sessions variable is now exposed to scripts that can be used for session-related tasks such as saving or loading session configuration information. * These methods have been added for Collection: add_or_replace_one(), get_one(), replace_one(), and remove_one(). * These methods have been added for FindStatement and SelectStatement, to enable shared and exclusive locks to be acquired: lock_shared() and lock_exclusive(). * There is support for new forms of comparisons that use the IN operator: item IN list item IN document path dict IN dict The left-hand-side value must be castable to the JSON type.

Documentation
——————–

Online:
http://dev.mysql.com/doc/connector-python/en/index.html

The source distribution includes the manual in various formats under
the docs/ folder.

Reporting Bugs
——————–

We welcome and appreciate your feedback and bug reports:
http://bugs.mysql.com/

On Behalf of the MySQL/Oracle Release Engineering Team,
Prashant Tekriwal

MySQL Connector/C++ 8.0.6-dmr has been released

Dear MySQL users,

MySQL Connector/C++ 8.0.6-dmr is the next development milestone release
(dmr) of the MySQL Connector/C++ 8.0 series.

Connector/C++ 8.0 can be used to access MySQL implementing Document
Store or in a traditional way, using SQL queries. It allows writing
both C++ applications using X DevAPI or plain C applications using
XAPI.

To learn more about how to write applications using X DevAPI, see
“X DevAPI User Guide”

https://dev.mysql.com/doc/x-devapi-userguide/en/

and “X DevAPI Reference” at

https://dev.mysql.com/doc/dev/connector-cpp/devapi_ref.html

For more information about using plain C XAPI see “XAPI Reference” at

https://dev.mysql.com/doc/dev/connector-cpp/xapi_ref.html

For generic information on using Connector/C++ 8.0, see

https://dev.mysql.com/doc/dev/connector-cpp/

Note

Connector/C++ 8.0 requires MySQL Server version 5.7.12 or higher with
X Plugin enabled. For general documentation about how to get started
using MySQL as a document store, see “Using MySQL as a Document Store”

https://dev.mysql.com/doc/refman/5.7/en/document-store.html

To download MySQL Connector/C++ 8.0.6-dmr, see the “Development Releases”
tab at

https://dev.mysql.com/downloads/connector/cpp/

Changes in MySQL Connector/C++ 8.0.6-dmr (2017-09-28, Development Milestone) Functionality Added or Changed * A session now can acquire a lock for documents or rows returned by find or select statements, to prevent the returned values from being changed from other sessions while the lock is held (provided that appropriate isolation levels are used). Locks can be requested several times for a given find or select statement. Only the final request is acted upon. An acquired lock is held until the end of the current transaction. For X DevAPI, CollectionFind and TableSelect implement .lockExclusive() and .lockShared() methods, which request exclusive or shared locks, respectively, on returned documents or rows. These methods can be called after .bind() and before the final .execute(). For XAPI, the new mysqlx_set_locking(stmt, lock) function can be called to request exclusive or shared locks on returned documents or rows, or to release locks. The lock parameter can be ROW_LOCK_EXCLUSIVE, ROW_LOCK_SHARED, or ROW_LOCK_NONE. The first two values specify a type of lock to be acquired. ROW_LOCK_NONE removes any row locking request from the statement. * For X DevAPI, a new auth option can be specified in connection strings or URIs to indicate the authentiation mechanism. Permitted values are PLAIN and MYSQL41. The option name and value are not case sensitive. The SessionSettings::Options object supports a new AUTH enumeration, with the same permitted values. For XAPI, a new auth setting can be specified in connection strings or URIs to indicate the authentiation mechanism. Permitted values are PLAIN and MYSQL41. The option name and value are not case sensitive. A new MYSQLX_OPT_AUTH constant is recognized by the mysqlx_options_set() function, with permitted values MYSQLX_AUTH_PLAIN and MYSQLX_AUTH_MYSQL41. If the authentication mechanism is not specified, it defaults to PLAIN for secure (TLS) connections, or MYSQL41 for insecure connections. For Unix socket connections, the default is PLAIN. * These drop API changes were made: + Session::dropTable(schema, table) and Session::dropCollection(schema, coll) were replaced by Schema::dropTable(table) and Schema::dropCollection(coll), respectively. + Schema::dropView() is now a direct-execute method returning void rather than Executable. + All dropXXX() methods succeed if the dropped objects do not exist. * The following Collection methods were added: addOrReplaceOne(), getOne(), replaceOne(), and removeOne(). The addOrReplaceOne() and replaceOne() methods work only with MySQL 8.0.3 and higher servers. For older servers, they report an error. * Boolean expressions used in queries and statements now support a variant of the IN operator for which the right hand side operand is any expression that evaluates to an array or document. X DevAPI example: coll.find("'car' IN $.toys").execute(); XAPI example: res = mysqlx_collection_find(coll, "'car' IN $.toys"); In this form, the IN operator is equivalent to the JSON_CONTAINS() SQL function. * On Unix and Unix-like systems, Unix domain socket files are now supported as a connection transport for X DevAPI or XAPI connections. The socket file can be given in a connection string or in the session creation options. X DevAPI examples: XSession sess("mysqlx://user:password@(/path/to/mysql.sock)/schema"); XSession sess({ SessionSettings::USER, "user", SessionSettings::PWD, "password, SessionSettings::SOCKET, "/path/to/mysql.sock" SessionSettings::DB, "schema" }); XAPI examples: mysqlx_session_t *sess = mysqlx_get_session_from_url( "mysqlx://user:password@(/path/to/mysql.sock)/schema", err_buf, &err_code ); mysqlx_opt_type_t *sess_opt = mysqlx_session_option_new(); mysqlx_session_option_set(sess_opt, MYSQLX_OPT_SOCKET, "/path/to/mysql.sock", MYSQLX_OPT_USER, "user", MYSQLX_OPT_PWD, "password", MYSQLX_OPT_DB, "schema"); mysqlx_session_t *sess = mysqlx_get_session_from_options( sess_opt, err_buf, &err_code ); Bugs Fixed * Creating a TLS session with only the ssl-ca option specified could succeed, although it should fail if ssl-mode is not also specified. (Bug #26226502) * mysqlx_get_node_session_from_options() could succeed even when a preceding mysqlx_session_option_set() failed. (Bug #26188740)

On Behalf of the MySQL/Oracle Release Engineering Team,
Daniel Horecki

MariaDB 10.2.9, MariaDB 10.1.28 and MariaDB Connector/J Releases now available

The MariaDB project is pleased to announce the availability of MariaDB 10.2.9, MariaDB 10.1.28, MariaDB Connector/J 2.1.2 and MariaDB Connector/J 1.6.5. See the release notes and changelogs for details. Download MariaDB 10.2.9 Release Notes Changelog What is MariaDB 10.2? MariaDB APT and YUM Repository Configuration Generator Download MariaDB 10.1.28 Release Notes Changelog What is MariaDB […]

The post MariaDB 10.2.9, MariaDB 10.1.28 and MariaDB Connector/J Releases now available appeared first on MariaDB.org.

MariaDB Server 10.2.9, 10.1.28, and updated Connector/Java now available

MariaDB Server 10.2.9, 10.1.28, and updated Connector/Java now available dbart Wed, 09/27/2017 - 21:08

The MariaDB project is pleased to announce the immediate availability of MariaDB Server 10.2.9, MariaDB Server 10.1.28, MariaDB Connector/J 2.1.2, and MariaDB Connector/J 1.6.5. See the release notes and changelogs for details and visit mariadb.com/downloads to download.

Download MariaDB Server 10.2.9

Release Notes Changelog What is MariaDB Server 10.2?

Download MariaDB Server 10.1.28

Release Notes Changelog What is MariaDB Server 10.1?

Download MariaDB Connector/J 2.1.2

Release Notes Changelog About MariaDB Connector/J

Download MariaDB Connector/J 1.6.5

Release Notes Changelog About MariaDB Connector/J

The MariaDB project is pleased to announce the immediate availability of MariaDB Server 10.1.26. See the release notes and changelog for details.

Login or Register to post comments

Percona Live Europe Session Interview: Spatial Data in MySQL 8.0 with Norvald Ryeng (Oracle)

Day one of the Percona Live Europe Conference was a huge hit. The first day of sessions went well. People spoke on many different open source database topics, and talks were well-attended.

One such talk I got to sit in was on Spatial Data in MySQL 8.0, given by Norvald Ryeng of Oracle.

MySQL 8.0 is still in development, but we already see a lot of improvement in GIS support. The latest development release comes with support for around 5000 different spatial reference systems, improved standard compliance and a lot of new functionality. How does it all work, and how can it be used to build applications? 

This talk started with the basics of GIS and spatial data in MySQL: geometries, data types, functions, storage and indexes. Then Norvald walked through a demo of how all the parts fit together to support a GIS web application. We also got a sneak peek into the future, including what to do right now to prepare for the upgrade to MySQL 8.0.

Whether you’re currently storing or planning to store spatial data in MySQL, this talk was for you. It covers the topics in a way that is accessible to both novices and more advanced GIS users.

After the talk, I had a chance to interview Norvald, and here is the video:

Percona Live Europe 2017 Keynotes Day 2

Black coffee was flowing this morning for day two Percona Live Europe 2017 Keynotes after many of the delegates had spent a good few hours the night before enjoying Irish hospitality at the Community Dinner.

So today Laurie Coffin, Chief Marketing Officer for Percona, introduced proceedings for day two and later also took to the stage for a Q&A session with authors Laine Campbell and Charity Majors. More on that later…

State of the Dolphin

Geir Høydalsvik, Development Director for MySQL at Oracle, delivers his keynote “State of the Dolphin”

First up Geir Høydalsvik, Development Director for MySQL at Oracle, delivered juicy tidbits of what to expect in MySQL 8.0 (beyond what you see in the current Developer Milestone Releases). He gave a comprehensive overview of plans and current developments to what had become an almost full house – despite the night before’s revelries.

Many Faces of Continuent Tungsten

M C Brown, VP Products at Continuent, delivers his keynote “Many Faces of Continuent Tungsten”

MC Brown brought the conference up to date with the latest Tungsten developments, as well as some thoughts for the future. He described the wide-ranging deployments of Tungsten out in the field and his thoughts on how it might look going forward.

Database Reliability Engineering

Laine Campbell, Charity Majors are quizzed by Laurie Coffin

Laurie Coffin took to the stage to quiz Laine Campbell, Senior Director Production Engineering at OpsArtisan, and Charity Majors, CEO of Honeycomb Q&A about the newly released O’Reilly title: Database Reliability Engineering. The book focuses on designing and operating resilient database systems and uses open-source engines such as MySQL, PostgreSQL, MongoDB, and Cassandra as examples throughout.

Database Performance in High Traffic Environments

Pavel Genov, Head of Software Development at Pepper, delivers his keynote “Database Performance in High Traffic Environments”

Pepper.com is purposely different than other platforms that list daily deals. Around the clock, the community seeks and finds the best offers in fashion, electronics, traveling and much more. Pavel described how Pepper optimizes their database performance to make sure their web applications remain responsive and meet users’ expectations.

Deploying AdonisJS Apps to Heroku

The question on how to deploy AdonisJS apps keeps popping out within the AdonisJS community. The thing is that most people tend to forget that AdonisJS apps are Node.js applications and can be deployed the same way you would deploy any Node.js application.

In my last post, we built a task list app with AdonisJS. Today, I'll be showing you how to deploy the task list app to Heroku.

Create a Git Repository

If you follow along from the last tutorial, we need to first setup a git repository since we'll be using git for deployment. Head over to GitHub/Gitlab/Bitbucket and create a new repository.

Then we initialize git repository in the adonis-tasks directory:

cd adonis-tasks git init git remote add origin git@github.com:YOUR_USERNAME/adonis-tasks.git Create a Heroku App

Login to your Heroku dashboard or signup if you don't have an account already. Then create a new app.

I named mine adonis-tasks (which might no longer be available for you)

Once the app is created, we'll be redirected to the Deploy page on the app dashboard where we can see different ways with which we can deploy our app. We'll be deploying using Heroku Git with the use of the Heroku CLI. So, we need to install the Heroku CLI on our computer. Go through the documentation on how to install the CLI depending on your operating system.

Once the CLI is installed, we need to login to Heroku with our account details.

heroku login

Next, we add Heroku remote to our task list app repository.

heroku git:remote -a adonis-tasks Setting Up MySQL Database

The task list app uses MySQL as its database which Heroku does not support out of the box. We, therefore, need a way to use MySQL on Heroku. Luckily for us, there is support for MySQL through what Heroku call add-ons. There are numerous add-ons to add MySQL to our app, but for this tutorial, we'll be using ClearDB MySQL. So, we need to add ClearDB MySQL to our Heroku app. To do this, go to the Overview page of the Heroku app, we'll see Installed add-ons section showing the add-ons we have added to the app (it will be empty for now since we haven't added any).

Click on Configure Add-ons which will take us to a page where we can configure or add a new add-on. Start typing ClearDB and it will show up in the selection option, which we can then click to select.

Upon selecting ClearDB, a modal will appear for us to provision ClearDB to our app. At this point, we can choose a plan we want, but we'll be going with the free plan for this tutorial.

Clicking on Provision will add ClearDB to our app, and it will also add CLEARDB_DATABASE_URL to our app’s config variables.

Let’s add another config variable DB_CONNECTION which will tell AdonisJS the database connection our app is using. Go to Settings then click on Reveal Config Vars and add DB_CONNECTION as key and mysql as value.

Next, we need to modify our app to use ClearDB when deployed. The CLEARDB_DATABASE_URL is a URL string that contains our database details (host, username, password and database name), so we need to parse this URL and extract the individual detail. Let’s install an npm package to help us with that:

npm install URL-parse

With that installed, open config/database.js and add the snippet below to the top of it just after where we declare Helpers:

// config/database.js const Url = require('url-parse') const CLEARDB_DATABASE_URL = new Url(Env.get('CLEARDB_DATABASE_URL'))

Still in config/database.js, replace mysql’s connection object with:

// config/database.js connection: { host: Env.get('DB_HOST', CLEARDB_DATABASE_URL.host), port: Env.get('DB_PORT', ''), user: Env.get('DB_USER', CLEARDB_DATABASE_URL.username), password: Env.get('DB_PASSWORD', CLEARDB_DATABASE_URL.password), database: Env.get('DB_DATABASE', CLEARDB_DATABASE_URL.pathname.substr(1)) }

Depending on the environment our app is running, the necessary database settings will be used. It will first look for DB_ variables (which indicate it’s on development) and use them if found else it will fallback to CLEARDB settings (which indicate it’s on production).

Specifying Node.js Version

By default, Heroku will use the current stable version (v6.11.3 as at this tutorial) of Node.js. AdonisJS v4 (which our app is on) requires Node.js v8.0 or greater. So we need to tell Heroku to use a specific Node.js version. We can do this by adding the snippet below to our app package.json:

// package.json "engines": { "node": "8.5.0" }

This will force Heroku to use Node.js v8.5.0 (which is the current version as at this tutorial).

Create a Procfile

A Procfile is use to explicitly declare what command should be executed to start your app. We can also add other commands we want executed. For instance, release phase which enables us to run tasks before a new release of our app is deployed to production. Create a file named Procfile (without an extension) directly in the root of our app (that is adonis-task directory). Note that the P is uppercased. Add the code below into it:

// Procfile release: ENV_SILENT=true node ace migration:run --force web: ENV_SILENT=true npm start

Instead of running our app migrations manually with heroku run. We use release phase to run our app migrations before deploying the app to production. This is really helpful compared to running our app migrations manually, because we might forget to run migrations after deploying to production some times. We are using the --force flag because we are running the migrations on production. The next command simply start the app.

Noticed we prefixed both commands with ENV_SILENT=true. This will prevent us from getting Env provider error because AdonisJS by default expects a .env file which it pulls some config settings from.

Now let’s commit and push the changes made to the app to remote:

git add --all git commit -m "initial commit" git push -u origin master

To deploy our application, we simply push to Heroku:

git push heroku master

This will start the deployment by installing Node.js and other necessary dependences. Once the deployment is done, we can use the Heroku CLI to open the application.

heroku open

This will open our app in a new browser window.

There you have it, our AdonisJS application is now running on https://adonis-tasks.herokuapp.com.

Conclusion

That's it guys, you have seen how easy it is to deploy AdonisJS application to Heroku. Kindly drop your questions and comments below. In my next post, I will show you how to deploy AdonisJS application to a VPS.

Pepper Turns to Percona to Ensure a Great Customer Experience at Pepper.com

Pepper.com, the world’s largest community deal platform, has selected Percona to manage its open source database performance.

Pepper.com’s around-the-clock community seeks and finds the best offers in fashion, electronics, traveling and much more. With 500 million page views, over 25 million users and over 65,000 user-submitted deals per month across communities in America, Europe and Asia, Pepper has quickly risen to be the largest community deal platform worldwide.

When Pepper.com’s primary MySQL database administrator left the company, Pepper decided to shift to a managed service to maintain uptime and responsiveness. Having previously attended Percona Live Europe, the premier European open source database conference, as well as being avid readers of the Percona Database Performance Blog, the Pepper team turned to Percona for open source database remote managed service expertise.

“Guaranteeing database performance is key to making sure our web applications are responsive and up-to-date,” said Pavel Genov, Head of Software Development at Pepper.com. “Percona Care Ultimate helps us to achieve these objectives.”

Pepper was already using Percona Server for MySQL. Following a Percona Database Performance Audit to review the Pepper.com environment, architecture and setup, Percona XtraBackup was deployed to provide online non-blocking, tightly compressed, highly secure backups.

Check out the case study on Pepper.com and Percona’s engagement to improve and manage Pepper’s database environment.

Database Design: MYSQL CLOUD SERVICE 2018 [1Z0-320]

Continuation to my last Blog Post for MYSQL CLOUD SERVICE 2018 [1Z0-320] exam preparation, In this blog will discuss Database Design part for MySQL. Rather than rewriting given topics I have provided already exists good reference links for few topics.

Database Design

  • Describe Datatypes in a MySQL database
  • Create databases and tables
  • Create basic SQL queries
  • Maintain Databases, Tables, and Columns
  • Configure Indexes and Constraints
  • Join Tables
  • Partition MySQL Tables
Describe Datatypes in a MySQL database

Reference Link:

Link1: MySQL Data Types

Link2: MySQL Data Types

Create databases and tables

Create database:

CREATE DATABASE IF NOT EXISTS project1  CHARACTER SET utf8 COLLATE utf8_general_ci;

[On Filesystem level, this will create project1 directory inside mysql datadir with db.opt file in it.]

USE project1; SHOW DATABASES CREATE TABLE IF NOT EXISTS dept ( deptid INT PRIMARY KEY, dname CHAR(50), location text ) ;

IF NOT EXISTS (optional): Prevents an error from occurring if the table exists with the same name. It will not compare table structure.

Create a table with INDEX and Foreign key:

CREATE TABLE emp (empid INT AUTO_INCREMENT PRIMARY KEY, fname CHAR(50), deptid INT , doj DATETIME , FOREIGN KEY fk_cat(deptid) REFERENCES dept(deptid) ON UPDATE CASCADE ON DELETE RESTRICT ) ENGINE=InnoDB;

Create TEMPORARY TABLE: 

Available only within the current session and removed automatically after a session end.

CREATE TEMPORARY TABLE tmptbl (id int, c2 varchar(40));

Cloning or Copying a Table:

CREATE TABLE emp1 LIKE emp; CREATE TABLE dept1 AS select * from dept;

Reference Links:

CREATE DATABASE

CREATE TABLE

MySQL Basic Operations:
  • Create basic SQL queries
  • Configure Indexes and Constraints
  • Join Tables
  • Subqueries
Types Query Commands / Details READ DATA SELECT [ DISTINCT ,COUNT, SUM ,MAX, MIN, AVG, AS] DATA FILTERS WHERE [ AND,OR, IN,BETWEEN,LIKE,LIMIT,IS NULL SORT DATA ORDER BY GROUP DATA GROUP BY, HAVING SUBQUERY [Inner query, outer query] MODIFY DATA INSERT [IGNORE]

UPDATE

DELETE [ ON DELETE CASCADE]

REPLACE

PREPARE Statements

JOINS CROSS, INNER, LEFT, RIGHT, self-join INDEX PRIMARY KEY

UNIQUE, INDEX

FULLTEXT

All above are stored in B-trees.

Indexes on spatial data types use R-trees.

MEMORY tables also support hash indexes.

InnoDB uses inverted lists for FULLTEXT indexes.

CONSTRAINTS NOT NULL

PRIMARY KEY

FOREIGN KEY

UNIQUE

CHECK

Reference Links :

MySQL Basic Operations [ SQL Queries, Indexes and Constraints, Join, Subquery ]

MySQL INDEX

MySQL JOINS

MySQL Subquery 

Maintain Databases, Tables, and Columns

General Options for DB Objects Management:

Operation Commands and details Database CREATE DATABASE

SHOW DATABASES

USE  [db_name]

DROP DATABASE

Table CRAETE TABLE

CREATE TEMPORARY TABLE

ALTER TABLE

RENAME TABLE

DROP TABLE

TRUNCATE TABLE

Column ALTER TABLE ADD COLUMN

ALTER TABLE MODIFY COLUMN

ALTER TABLE DROP COLUMN

Metadata Information: [Information_schema]
Information_schema database will keep metadata information about all DB objects.

Databases:

SHOW DATABASES; Select Database: USE [db_name];

Tables in Database:

SHOW TABLES; SELECT TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA = 'db_name';

ROUTINES:

select * from ROUTINES where ROUTINE_SCHEMA='db_name';

INDEX:

SELECT TABLE_NAME,INDEX_NAME,COLUMN_NAME,INDEX_TYPE  FROM INFORMATION_SCHEMA.STATISTICS where TABLE_SCHEMA = '<database name>';

View:

select * from information_schema.VIEWS where TABLE_SCHEMA = 'db_name';

TABLE Maintenance:

Analyze table: Update key-index stats for a table. 

Optimize table: Avoid defragmenting problem.

Check table: Check the integrity of database tables.

Repair table: Repair table structure. 

Reference links:

Maintaining MySQL Database Tables

Table Maintenance Statements

 

Will write about MySQL Partitioning  in next blog post.


Custom Dashboards in VividCortex

VividCortex now offers custom dashboards, which are collections of charts you can curate as you wish. Custom dashboards are shared across your team, so they're a great way to ensure everyone has access to the metrics that you use to monitor and inspect system status and health. And you can give them meaningful names, which is one of only two hard things in computer science, so your dashboards can be full of win.

In the "Choose Dashboards" navigation menu item, there's a new option to "Add Custom Dashboard." Type in a name, and then you'll have an empty custom dashboard. You can also clone an existing dashboard (either custom or prebuilt) to get started.

When you're viewing a custom dashboard, it's easy to add a chart to it. Just start typing and you'll get autocomplete suggestions based on chart and metric names. There's turnkey charts for MySQL, PostgreSQL, MongoDB, Redis, Cassandra, operating system metrics, and much more.

You can rename custom dashboards, too, in case naming got the best of you the first time around. "Pumpkin Spice Dashboard" probably wasn't the best name to pick. Hover over the name and you can edit it.

And we've simplified the charts, metrics, and dashboards navigation so you can find it all in one convenient place, under Charts on the lefthand navigation menu. Once you're there you can toggle between dashboards and metrics at the top.

 

Percona Live Europe 2017 Keynotes Day One

After yesterday’s very successful tutorial day, everyone looked forward to an inspiring first day of the conference and the Percona Live Europe 2017 keynotes. There were some fantastic keynotes delivered, and some excellent sessions scheduled.

Laurie Coffin, Chief Marketing Office of Percona, opened proceedings with a welcome address where she paid tribute to Jaako Pesonen: a true champion of open source and friend to our community who passed away just this month. He will be missed.

Championing Open Source Databases

Peter Zaitsev delivers his keynote “Championing Open Source Databases”

Laurie then introduced Peter Zaitsev, CEO of Percona, who delivered his keynote “Championing Open Source Databases.” He reiterating Percona’s commitment to remaining an unbiased champion of the open source database ecosystem.

At Percona, we see a lot of compelling open source projects and trends that we think the community will find interesting, and following Peter’s keynote there was a round of lightning talks from projects that we think are stellar and deserve to be highlighted.

Percona Monitoring and Management Demo

Michael Coburn delivers his keynote “Percona Monitoring and Management Demo”

The second keynote was by Percona Product Manager Michael Coburn on Percona Monitoring and Management. How can you optimize database performance if you can’t see what’s happening? Percona Monitoring and Management (PMM) is a free, open source platform for managing and monitoring MySQL, MariaDB, MongoDB and ProxySQL performance. PMM uses Metrics Monitor (Grafana + Prometheus) for visualization of data points, along with Query Analytics, to help identify and quantify non-performant queries and provide thorough time-based analysis to ensure that your data works as efficiently as possible. Michael provided a brief demo of PMM.

MySQL as a Layered Service: How to use Proxy SQL to Control Traffic and Scale-Out

René Cannaò delivers his keynote “MySQL as a Layered Service: How to use Proxy SQL to Control Traffic and Scale-Out”

The next keynote was from René Cannaò, Founder at ProxySQLThe inability to control the traffic sent to MySQL is one of the worse nightmares for a DBA. Scaling out and high availability are only buzz words if the application doesn’t support such architectures. ProxySQL is able to create an abstraction layer between the application and the database: controlling traffic at this layer hides the complexity of the database infrastructure from the application, allowing both HA and scale out. The same layer is able to protect the database infrastructure from abusive traffic, acting as a firewall and cache, and rewriting queries.

Realtime DNS Analytics at Cloudflare with ClickHouse

Tom Arnfeld delivers his keynote “Realtime DNS Analytics at Cloudflare with ClickHouse” 

Cloudflare operates multiple DNS services that handle over 100 billion queries per day for over 6 million internet properties, collecting and aggregating logs for customer analytics, DDoS attack analysis and ad-hoc debugging. Tom Arnfeld, Systems Engineer at Cloudflare, talks briefly in his keynote on how Cloudflare securely and reliably ingests these log events, and uses ClickHouse as an OLAP system to both serve customer real-time analytics and other queries.

Why Open Sourcing our Database Tooling was a Smart Decision

Shlomi Noach delivers his keynote “Why Open Sourcing our Database Tooling was a Smart Decision” 

Drawing from experience at GitHub, Senior Infrastructure Engineer Shlomi Noach, argues in his keynote that open sourcing your database infrastructure/tooling is not only a good, but a smart business decision, that may reward you in unexpected ways. Here are his observations.

MyRocks at Facebook and a Roadmap

Yoshinori Matsunobu delivers his keynote “MyRocks at Facebook and a Roadmap”

A major objective of creating MyRocks at Facebook was replacing InnoDB as the main storage engine, with more space optimisations, and without big migration pains. They have made good progress and extended their goals to cover more use cases. In this keynote, Yoshinori Matsunobu, Production Engineer at Facebook, shares MyRocks production deployment status and MyRocks development plans.

Prometheus for Monitoring Metrics

Brian Brazil, CEO of Prometheus, delivers his keynote “Prometheus for Monitoring Metrics”

From its humble beginnings in 2012, the Prometheus monitoring system has grown a substantial community with a comprehensive set of integrations. Brian Brazil, CEO of Prometheus, provides an overview of the core ideas behind Prometheus and its feature set.

That sums up today’s keynotes. Stay tuned for the next set tomorrow!

Percona Live Europe 2017 Keynotes Day One

After yesterday’s very successful tutorial day, everyone looked forward to an inspiring first day of the conference and the Percona Live Europe 2017 keynotes. There were some fantastic keynotes delivered, and some excellent sessions scheduled.

Note. These videos are as shot, and the slides will be superimposed very soon so you can enjoy the full conference experience!

Laurie Coffin, Chief Marketing Office of Percona, opened proceedings with a welcome address where she paid tribute to Jaako Pesonen: a true champion of open source and friend to our community who passed away just this month. He will be missed.

Championing Open Source Databases


Peter Zaitsev delivers his keynote “Championing Open Source Databases”

Laurie then introduced Peter Zaitsev, CEO of Percona, who delivered his keynote “Championing Open Source Databases.” He reiterating Percona’s commitment to remaining an unbiased champion of the open source database ecosystem.

At Percona, we see a lot of compelling open source projects and trends that we think the community will find interesting, and following Peter’s keynote there was a round of lightning talks from projects that we think are stellar and deserve to be highlighted.

Percona Monitoring and Management Demo


Michael Coburn delivers his keynote “Percona Monitoring and Management Demo”

The second keynote was by Percona Product Manager Michael Coburn on Percona Monitoring and Management. How can you optimize database performance if you can’t see what’s happening? Percona Monitoring and Management (PMM) is a free, open source platform for managing and monitoring MySQL, MariaDB, MongoDB and ProxySQL performance. PMM uses Metrics Monitor (Grafana + Prometheus) for visualization of data points, along with Query Analytics, to help identify and quantify non-performant queries and provide thorough time-based analysis to ensure that your data works as efficiently as possible. Michael provided a brief demo of PMM.

MySQL as a Layered Service: How to use Proxy SQL to Control Traffic and Scale-Out

René Cannaò delivers his keynote “MySQL as a Layered Service: How to use Proxy SQL to Control Traffic and Scale-Out”

The next keynote was from René Cannaò, Founder at ProxySQLThe inability to control the traffic sent to MySQL is one of the worse nightmares for a DBA. Scaling out and high availability are only buzz words if the application doesn’t support such architectures. ProxySQL is able to create an abstraction layer between the application and the database: controlling traffic at this layer hides the complexity of the database infrastructure from the application, allowing both HA and scale out. The same layer is able to protect the database infrastructure from abusive traffic, acting as a firewall and cache, and rewriting queries.

Realtime DNS Analytics at Cloudflare with ClickHouse


Tom Arnfeld delivers his keynote “Realtime DNS Analytics at Cloudflare with ClickHouse” 

Cloudflare operates multiple DNS services that handle over 100 billion queries per day for over 6 million internet properties, collecting and aggregating logs for customer analytics, DDoS attack analysis and ad-hoc debugging. Tom Arnfeld, Systems Engineer at Cloudflare, talks briefly in his keynote on how Cloudflare securely and reliably ingests these log events, and uses ClickHouse as an OLAP system to both serve customer real-time analytics and other queries.

Why Open Sourcing our Database Tooling was a Smart Decision


Shlomi Noach delivers his keynote “Why Open Sourcing our Database Tooling was a Smart Decision” 

Drawing from experience at GitHub, Senior Infrastructure Engineer Shlomi Noach, argues in his keynote that open sourcing your database infrastructure/tooling is not only a good, but a smart business decision, that may reward you in unexpected ways. Here are his observations.

MyRocks at Facebook and a Roadmap


Yoshinori Matsunobu delivers his keynote “MyRocks at Facebook and a Roadmap”

A major objective of creating MyRocks at Facebook was replacing InnoDB as the main storage engine, with more space optimisations, and without big migration pains. They have made good progress and extended their goals to cover more use cases. In this keynote, Yoshinori Matsunobu, Production Engineer at Facebook, shares MyRocks production deployment status and MyRocks development plans.

Prometheus for Monitoring Metrics


Brian Brazil, CEO of Prometheus, delivers his keynote “Prometheus for Monitoring Metrics”

From its humble beginnings in 2012, the Prometheus monitoring system has grown a substantial community with a comprehensive set of integrations. Brian Brazil, CEO of Prometheus, provides an overview of the core ideas behind Prometheus and its feature set.

That sums up today’s keynotes. Stay tuned for the next set tomorrow!

Log Buffer #523: A Carnival of the Vanities for DBAs

This Log Buffer Edition touches upon various blog posts from Cloud, Oracle, SQL Server and MySQL.

Cloud:

Sending email from Oracle with utl_smtp via Amazon Simple Email Service (SES)

Multiple APEX Workspaces in one Oracle Exadata Express Cloud account is now possible.

Setting up Oracle Event Hub (Apache Kafka) Cloud Service and Pub & Sub from local Node Kafka client.

AWS Adds 12 More Services to Its PCI DSS Compliance Program.

Committed use discounts for Google Compute Engine is now generally available.

Announcing Stackdriver Debugger for Node.js

Oracle:

Migrating Databases to Oracle Cloud Using RMAN Backup

Oracle SOA Suite and WebLogic: Overview of key and keystore configuration

Unify Update – v1.0.1

Oracle WebCenter Enterprise Capture Overview

So just what is a “partition-wise” join ?

SQL Server:

When sp_HelpText is not so helpful!

More SQL Server Features that Time Forgot

Overview of Azure Data Lake

Database as a Service: Defining Quality

Network Configuration of SQL Server Always On Availability Groups in Azure

MySQL:

Sealing MongoDB documents on the blockchain

Attached Storage Hindering Commit Performance

Revisiting roles in MySQL 8.0

How to Deal with XA Transactions Recovery

How to Analyze Actions for Certain MySQL Tables

New Tutorial: MySQL & MariaDB Load Balancing with ProxySQL

Severalnines is pleased to announce the launch of our new tutorial Database Load Balancing for MySQL and MariaDB with ProxySQL.

ProxySQL is a lightweight yet complex protocol-aware proxy that sits between the MySQL clients and servers. It is a gate, which basically separates clients from databases, and is therefore an entry point used to access all the database servers.

Included in this new tutorial….

  • Introduction to ProxySQL
  • Deep dive into ProxySQL concepts
  • How to install ProxySQL using ClusterControl
  • How to manage ProxySQL using ClusterControl
  • Managing multiple ProxySQL instances
  • ProxySQL failover handling
  • Use Cases including caching, rewriting, redirection and sharding

Load balancing and high availability go hand-in-hand, without it you are left with a single point of entry for your database and any spike in traffic could cause your setup to crash. ClusterControl makes it easy to deploy and configure several different load balancing technologies for MySQL and MariaDB, including ProxySQL, with a point-and-click graphical interface.

Check out our new tutorial to learn how to take advantage of this exciting new technology.

ClusterControl Single Console for Your Entire Database Infrastructure Find out what else is new in ClusterControl Install ClusterControl for FREE ClusterControl for ProxySQL

ProxySQL enables MySQL, MariaDB and Percona XtraDB database systems to easily manage intense, high-traffic database applications without losing availability. ClusterControl offers advanced, point-and-click configuration management features for the load balancing technologies we support. We know the issues regularly faced and make it easy to customize and configure the load balancer for your unique application needs.

We are big fans of load balancing, and consider it to be an integral part of the database stack. ClusterControl has many things preconfigured to get you started with a couple of clicks. If you run into challenged we also provide resources and on-the-spot support to help ensure your configurations are running at peak performance.

Related resources  ProxySQL for ClusterControl  Video: ProxySQL ClusterControl Demonstration  ProxySQL: All the Severalnines Resources

ClusterControl delivers on an array of features to help deploy and manage ProxySQL

  • Advanced Graphical Interface - ClusterControl provides the only GUI on the market for the easy deployment, configuration and management of ProxySQL.
  • Point and Click deployment - With ClusterControl you’re able to apply point and click deployments to MySQL, MySQL replication, MySQL Cluster, Galera Cluster, MariaDB, MariaDB Galera Cluster, and Percona XtraDB technologies, as well the top related load balancers with HAProxy, MaxScale and ProxySQL.
  • Suite of monitoring graphs - With comprehensive reports you have a clear view of data points like connections, queries, data transfer and utilization, and more.

Configuration Management - Easily configure and manage your ProxySQL deployments with a simple UI. With ClusterControl you can create servers, reorientate your setup, create users, set rules, manage query routing, and enable variable configurations.

Tags:  proxysql MySQL MariaDB database load balancing high availability

MariaDB 10.1.27 now available

A regression was discovered after the release of MariaDB 10.1.27. It has been pulled from the downloads system, but some mirrors may still have it. Do not download or install this version. Stay with MariaDB 10.1.26 until 10.1.28 is released The MariaDB project is pleased to announce the immediate availability of MariaDB 10.1.27. See the […]

The post MariaDB 10.1.27 now available appeared first on MariaDB.org.

Pages