Here is one more additional documentation effort in the MySQL
Cluster 7.4
source code. This describes a fairly detailed view of what is
performed in
the various restart phases of MySQL Cluster and in particular for
node
restarts.
In MySQL Cluster the restart is processed in phases, the restart
of a node
is driven by a set of phases. In addition a node restart is also
synchronised
with already started nodes and other nodes that are starting up
in parallel
with our node. This comment will describe the various phases
used.
Data node process startup
The first step in starting a node is to create the data node
run-time
environment. The data node process is normally running with an
angel process,
this angel process ensures that the data node is automatically
restarted in
cases of failures. So the only reason to run the data node again
is after an …
MySQL is open-source RDBMS and is gaining popularity in the recent years.. I am starting a comparison series for mysql and db2..This series will help MySQL DBAs to catchup Db2 quickly and vice versa.. Please post your feedback
1. Knowing the software version :
mysql> select version() ;
+-----------+
| version() |
+-----------+
| 5.5.28 |
+-----------+
1 row in set (0.00 sec)
mysql> show global variables like 'version%' ;
+-------------------------+------------------------------+
|
Variable_name
|
Value
|
+-------------------------+------------------------------+
| …
VividCortex now computes metrics about each client connection’s host (where the remote end of the connection originates) in Top Queries, so you can monitor MySQL and PostgreSQL activity per remote host. By changing the Rank menu from Queries to Hosts, you can see a breakdown of activity in the familiar format, all with 1 second resolution.
The hardest part of this was picking good names for the metrics and the drop-down menu. Unfortunately all the names we could find seemed to have some ambiguity. Remote host, origin host, client, inbound… take your pick. We picked Host. Is there a better term?
Regardless what you call it, this shows you where service demand on your MySQL/PostgreSQL servers is coming from, and how it varies over time. As usual, you can slice-and-dice, zoom in, and all the rest.
If you’d like a demo of VividCortex, contact us, or …
[Read more]Sometimes replication halts with an error like:
Slave I/O: Got fatal error 1236 from master when reading
data from binary log
Error reading packet from server: log event entry exceeded
max_allowed_packet; Increase max_allowed_packet on master;
If it's the SQL thread instead of the I/O thread, it might complain about 'Event too big'. The error could also be the other direction, complaining of 'Event too small'.
I rarely see this error actually have anything to do with max_allowed_packet. You can check the largest event in the master's binary log file. Even though the binary log records the length in each entry, mysqlbinlog doesn't expose it, so we have to do the math ourselves:
mysqlbinlog mysql-bin.00XXX | gawk "/^# at / { diff = $3 - prev; prev = $3; } (diff > max) { max = diff } END {print max}" -
If the result is larger than max_allowed_packet, then the problem and solution are …
[Read more]
This time it is nothing like a linkt to another Blog:
Galera on Mesos
Ok as a fact I was kinda involved. Even the work is done by
Stefan all alone. We meat for a day in a coworking space and
discussed about Galera and Mesos.
In the end Stefan produced this incredible blogpost and pushed
Mesos forward.
Whats the fun about this post?
We already now Galera is already the standard in a lot of
architectures. For example OpenStack. Doing consultant work for
Docker also I encourage to use Galera for all this
infrastructures Docker runs on.
Mesos is about to run easy on 1000 nodes. It
has a nice abstraction of nodes and framework. Companies like
Airbnb, Paypal, eBay, Groupon use Mesos. Having a Galera poc for
Mesos is going to make it likely to …
New version of JSON UDF functions has been just released. This version introduces two new features.
- Escape characters in results of JSON_SEARCH function. In previous version if you had document @doc = '{"foo:bar": "baz"}' or '{"foo": {"bar": "baz"}}' return value of JSON_SEARCH(@doc, '"baz"'); was 'foo:bar::' for both. There was no way to distinguish two search paths. Now for the first document JSON_SEARCH returns 'foo\:bar::'
- Second feature is much bigger. Now JSON functions accessing elements by a key (JSON_CONTAINS_KEY, JSON_EXTRACT, JSON_REPLACE, JSON_REMOVE, JSON_APPEND, JSON_SET, JSON_COUNT) can use alternate keypath syntax: $.key1.key2[arr_index] where $ is root element, .key is key name, [arr_index] is array index. JSON_SEARCH can also return path in this format with escaped $, . and [] symbols.
Improving the performance of a web system involves knowledge of how the entire technology stack operates and interacts. There are many simple and common tips that can provide immediate improvements for a website. Some examples include:
- Using a CDN for assets
- Compressing content
- Making fewer requests (web, cache, database)
- Asynchronous management
- Optimizing your SQL statements
- Have more memory
- Using SSD’s for database servers
- Updating your software versions
- Adding more servers
- Configuring your software correctly
- … And the general checklist goes on
Understanding where to invest your energy first, knowing what the return on investment can be, and most importantly the measurement and verification of every change made is the difference between blind trial and error and a solid plan and process. …
[Read more]Have you ever had a case where you needed to find a process which sent a HUP/KILL/TERM or other signal to your database? Let me rephrase. Did you ever have to find which process messed up your night? If so, you might want to read on. I’m going to tell you how you can find it.
Granted, on small and/or meticulously managed systems tracking down the culprit is probably not a big deal. You can likely identify your process simply by checking what processes have enough privileges to send mysqld a HUP/KILL/TERM signal. However, frequently we see cases where this may not work or the elimination process would be too tedious to execute.
We recently had a case where a process was frequently sending SIGHUPs to mysqld and the customer asked us to see if we could get rid of his annoyance. This blog is the direct result of a discussion I had with my colleague …
[Read more]Taxonomy upgrade extras: partitionrenameDDL
Before I forget it and have to search again here a short note about how to rename a MySQL Partition:
My dream:
ALTER TABLE history RENAME PARTITION p2015_kw10 INTO p2015_kw09;
In reality:
ALTER TABLE history REORGANIZE PARTITION p2015_kw10 INTO ( PARTITION p2015_kw09 VALUES LESS THAN (UNIX_TIMESTAMP('2015-03-02 00:00:00')) );
Caution: REORGANIZE PARTITION
causes a full copy of the whole partition!
Hint: I assume it would be very easy for MySQL or MariaDB to make this DDL command an in-place operation...
…
[Read more]Configuration
1) Download the utilities. Python connector is a prerequisite and this needs to be installed along with mysql utilities rpm
wget http://dev.mysql.com/get/Downloads/Connector-Python/mysql-connector-python-2.0.2-1.el6.noarch.rpm
wget http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-utilities-1.5.3-1.el6.noarch.rpm
2) Install the RPMs. “Mysqlfailover –help” will confirm the install of the utilities
rpm –ivh mysql-connector-python-2.0.2-1.el6.noarch.rpm
rpm -ivh mysql-utilities-1.5.3-1.el6.noarch.rpm
3) Set the GTID MODE to ON. GTID mode is a prerequisite for mysqlfailover. GTID tracks the transaction IDs for replication instead of tracking log file and position
log-bin=1
gtid_mode=ON
enforce_gtid_consistency=true
log-slave-updates=1
4) Setup replication using …
[Read more]