You are here
Agrégateur de flux
DOAG Konferenz 2015 MySQL Vortragsfolien
Die DOAG Konferenz und Ausstellung 2015 ist erfolgreich vorüber.
Das FromDual Cheat Sheet für MySQL und MariaDB war ein riesen Erfolg. Haben Sie es versäumt, sich eins zu sicher, schicken Sie uns einfach ein eMail mit Ihrer Anschrift und wir schicken Ihnen Ihr persönliches Cheat Sheet zu.
Zahlreiche interessante Gespräche mit potentiellen und aktuellen Kunden haben statt gefunden. Viel Informationen wurden auf- und Feedback entgegen genommen.
Diese werden in den nächsten MyEnv-Cloud Release und in den übernächsten FromDual Ops Center Release fliessen um Ihre MySQL und MariaDB Cloud-Datenbanken noch besser verwalten zu können.
Bis es soweit ist, können Sie sich schon mal die Folien zu unseren MySQL Vorträgen ansehen:
- MySQL Performance Tuningfür Oracle-DBA's (PDF, 680 kbyte)
- Der Datenbank-Backup ist gemacht - was nun ? (PDF, 415 kbyte)
- MySQL-Server im Teamwork - Replikation und Cluster (PDF, 456 kbyte)
- Weltweite Produktionsdatenverwaltung mit MySQL-Replikation (PDF, 625 kbyte)
How to Get a Galera Cluster Into Split Brain
"Split Brain" is the term commonly used for a cluster whose nodes have different contents, rather than identical as they should have. Typically, a "split brain" situation is the DBA's nightmare, and the Galera software is designed to avoid it. Galera is very successful in that avoidance, and it needs some special steps by the DBA to achieve "split brain". Here is how to do it - or, for most DBAs, what to avoid doing to not get a split-brain cluster.
Galera's DesignFirst, let's remember how Galera is operating:
- The Galera software ensures that all nodes participating in a cluster will start from identical contents, by doing a "snapshot state transfer" (SST) of all current data to a newly joining node.
- When the cluster is running, Galera transfers all changes (transactions) to all cluster nodes and applies them (or rolls back and ignores, in the case of a conflict).
- If some connections get lost, all nodes check whether they "have quorum" (belong to a majority), and stop serving requests if they don't.
- When a disconnected node re-joins the cluster, it gets all meantime changes transferred ("incremental state transfer" IST) and so makes its contents current.
- Should that be impossible, because some of those changes have become unavailable (log purge), a full transfer (SST) is done.
Of course, the quorum is a well-known concept. The old term for it is "majority consensus", and the approach is built on a simple principle:
In any set (of cluster nodes), there cannot be two (or more) non-overlapping subsets which both contain a majority of the elements.
So if some loss of connectivity splits the cluster into subsets, at most one of them can "have quorum", all others will stop serving requests, and there cannot be two (or more) different directions in which the contents (data) changes.
What Galera introduced (compared to previous designs of distributed DBMSs) is the efficient transfer of changes and conflict detection / resolution ("certification" in Galera terms) at "commit" time that makes the system fast, while previous designs used "distributed locking" or other principles which added latency to many commands and so made their systems slow.
The StoryLet's get back to the "split brain" issue, of which I said that Galera avoids it, and also said it can be reached. Sounds contradictory? Well, there are more active components than just Galera. Here is a real-world case, as happened to (I won't say "achieved by") a customer:
Originally, they had set up a Galera cluster of three nodes; let's call them A, B, and C. This is started by bringing up node A as a stand-alone node, running MySQL with the "wsrep" plugin. Then, one after the other, nodes B and C are configured to join node A in forming a cluster, and started. As a result, there are three nodes communicating with each other that form the cluster. In addition, HAproxy is running somewhere, it will direct the clients to an active cluster node.
So far, so good: The cluster is running, clients connect and issue transactions, everything is ok, and the DBA/s turn/s to other tasks ...
Some time later, node A must be stopped to do some hardware maintenance. No problem, nodes B and C are running fine, they have quorum (2 of 3 is a majority), so the system is still available and operations continue. HAproxy detects that node A does not respond, so it directs all clients to B or C. The cluster architecture is serving its purpose of continuous availability even during a maintenance period.
Maintenance is done, node A is rebooted, its MySQL+Galera server process restarts. It comes up, HAproxy detects it as running and directs clients to it. All seems fine ...
Three hours later, someone has become suspicious, detects trouble, and node A is stopped. Why? What has happened?
Some
large
gap
is
appropriate
to
give
readers
a
break
and
let
them
consider
the
situation.
What has happened?
Remember what I wrote about the cluster setup: It was
... started by bringing up node A as a stand-alone node, ... ... nodes B and C are configured to join node A ... ... three nodes communicating with each other that form the cluster.These steps were sufficient to get the nodes up and running. What was missing, however, was to re-configure A from "stand-alone" to "member of cluster with B and C".
As a consequence, when A was restarted after the maintenance, it again came up stand-alone. It did not try to join the cluster (which would have triggered an IST of the meantime changes) or check for quorum (a stand-alone node is self-sufficient).
Based on A's configuration (as read from disk), all was fine.
Based on the concept of the A+B+C cluster, it was a plain, simple split-brain:
Some changes were done on B+C (which still had quorum), while others were done on A only (which was mis-configured).
Lesson to learn (or rather, to bring back into active brain memory):
If some configuration is changed at run-time, this change must also be done in the configuration files so that it is used on restart.
The typical example for such changes is a "set global" command modifying some dynamic variable, like "max_connections".
But in a Galera cluster, a node joining the others is also a dynamic configuration change, and it should ASAP be reflected in all configuration files.
If this isn't done, the consequences might be as described above.
Now, most stories have a happy ending, and this one shouldn't be an exception:
Luckily, the application uses self-generated keys, similar to UUIDs, so the entries created on A did not conflict with those of B+C. Also, there were no changes of existing data, just inserts. So the situation could be corrected by extracting all new data from A, inserting them on B+C, and then resetting A's state so that it asked B+C for an SST. Uff!
Operational AdviceThere are some tools available that will do such a transfer. However, it can be done completely with standard parts coming with MySQL:
- "mysqldump" will extract the data from A.
- Suitable options will make sure this exctract does not contain "drop" or "create" commands, and generates "insert ignore".
Check the documentation for the options "--no-create-db", "--no-create-info", "--skip-add-drop-table", and "--insert-ignore". - If the old, common data are deleted first, both dumping and loading becomes faster, and duplicates are reduced / avoided.
- "mysql" can be used to load these data into B or C.
Had they used auto-increment keys, or had they modified existing data, it would have been much more complicated, and it might even have been impossible to combine all changes without losing some. I leave it to your imagination to think of such scenarios.
To repeat the lesson in DBMS / DBA terms:
- The most important property of a database is consistency, it must be kept up at all times.
- For database operations, the configuration on disk (in files) must be consistent to that in RAM (of the running processes), so any runtime changes must be reflected in the configuration files on disk to maintain consistency.
Percona's "pt-config-diff" can be used to compare a node's current variables to its configuration file.
Take care!
How to Get a Galera Cluster Into Split Brain
"Split Brain" is the term commonly used for a cluster whose nodes have different contents, rather than identical as they should have. Typically, a "split brain" situation is the DBA's nightmare, and the Galera software is designed to avoid it. Galera is very successful in that avoidance, and it needs some special steps by the DBA to achieve "split brain". Here is how to do it - or, for most DBAs, what to avoid doing to not get a split-brain cluster.
Galera's DesignFirst, let's remember how Galera is operating:
- The Galera software ensures that all nodes participating in a cluster will start from identical contents, by doing a "snapshot state transfer" (SST) of all current data to a newly joining node.
- When the cluster is running, Galera transfers all changes (transactions) to all cluster nodes and applies them (or rolls back and ignores, in the case of a conflict).
- If some connections get lost, all nodes check whether they "have quorum" (belong to a majority), and stop serving requests if they don't.
- When a disconnected node re-joins the cluster, it gets all meantime changes transferred ("incremental state transfer" IST) and so makes its contents current.
- Should that be impossible, because some of those changes have become unavailable (log purge), a full transfer (SST) is done.
Of course, the quorum is a well-known concept. The old term for it is "majority consensus", and the approach is built on a simple principle:
In any set (of cluster nodes), there cannot be two (or more) non-overlapping subsets which both contain a majority of the elements.
So if some loss of connectivity splits the cluster into subsets, at most one of them can "have quorum", all others will stop serving requests, and there cannot be two (or more) different directions in which the contents (data) changes.
What Galera introduced (compared to previous designs of distributed DBMSs) is the efficient transfer of changes and conflict detection / resolution ("certification" in Galera terms) at "commit" time that makes the system fast, while previous designs used "distributed locking" or other principles which added latency to many commands and so made their systems slow.
The StoryLet's get back to the "split brain" issue, of which I said that Galera avoids it, and also said it can be reached. Sounds contradictory? Well, there are more active components than just Galera. Here is a real-world case, as happened to (I won't say "achieved by") a customer:
Originally, they had set up a Galera cluster of three nodes; let's call them A, B, and C. This is started by bringing up node A as a stand-alone node, running MySQL with the "wsrep" plugin. Then, one after the other, nodes B and C are configured to join node A in forming a cluster, and started. As a result, there are three nodes communicating with each other that form the cluster. In addition, HAproxy is running somewhere, it will direct the clients to an active cluster node.
So far, so good: The cluster is running, clients connect and issue transactions, everything is ok, and the DBA/s turn/s to other tasks ...
Some time later, node A must be stopped to do some hardware maintenance. No problem, nodes B and C are running fine, they have quorum (2 of 3 is a majority), so the system is still available and operations continue. HAproxy detects that node A does not respond, so it directs all clients to B or C. The cluster architecture is serving its purpose of continuous availability even during a maintenance period.
Maintenance is done, node A is rebooted, its MySQL+Galera server process restarts. It comes up, HAproxy detects it as running and directs clients to it. All seems fine ...
Three hours later, someone has become suspicious, detects trouble, and node A is stopped. Why? What has happened?
Some
large
gap
is
appropriate
to
give
readers
a
break
and
let
them
consider
the
situation.
What has happened?
Remember what I wrote about the cluster setup: It was
... started by bringing up node A as a stand-alone node, ... ... nodes B and C are configured to join node A ... ... three nodes communicating with each other that form the cluster.These steps were sufficient to get the nodes up and running. What was missing, however, was to re-configure A from "stand-alone" to "member of cluster with B and C".
As a consequence, when A was restarted after the maintenance, it again came up stand-alone. It did not try to join the cluster (which would have triggered an IST of the meantime changes) or check for quorum (a stand-alone node is self-sufficient).
Based on A's configuration (as read from disk), all was fine.
Based on the concept of the A+B+C cluster, it was a plain, simple split-brain:
Some changes were done on B+C (which still had quorum), while others were done on A only (which was mis-configured).
Lesson to learn (or rather, to bring back into active brain memory):
If some configuration is changed at run-time, this change must also be done in the configuration files so that it is used on restart.
The typical example for such changes is a "set global" command modifying some dynamic variable, like "max_connections".
But in a Galera cluster, a node joining the others is also a dynamic configuration change, and it should ASAP be reflected in all configuration files.
If this isn't done, the consequences might be as described above.
Now, most stories have a happy ending, and this one shouldn't be an exception:
Luckily, the application uses self-generated keys, similar to UUIDs, so the entries created on A did not conflict with those of B+C. Also, there were no changes of existing data, just inserts. So the situation could be corrected by extracting all new data from A, inserting them on B+C, and then resetting A's state so that it asked B+C for an SST. Uff!
Operational AdviceThere are some tools available that will do such a transfer. However, it can be done completely with standard parts coming with MySQL:
- "mysqldump" will extract the data from A.
- Suitable options will make sure this exctract does not contain "drop" or "create" commands, and generates "insert ignore".
Check the documentation for the options "--no-create-db", "--no-create-info", "--skip-add-drop-table", and "--insert-ignore". - If the old, common data are deleted first, both dumping and loading becomes faster, and duplicates are reduced / avoided.
- "mysql" can be used to load these data into B or C.
Had they used auto-increment keys, or had they modified existing data, it would have been much more complicated, and it might even have been impossible to combine all changes without losing some. I leave it to your imagination to think of such scenarios.
To repeat the lesson in DBMS / DBA terms:
- The most important property of a database is consistency, it must be kept up at all times.
- For database operations, the configuration on disk (in files) must be consistent to that in RAM (of the running processes), so any runtime changes must be reflected in the configuration files on disk to maintain consistency.
Percona's "pt-config-diff" can be used to compare a node's current variables to its configuration file.
Take care!
How to Get a Galera Cluster Into Split Brain
"Split Brain" is the term commonly used for a cluster whose nodes have different contents, rather than identical as they should have. Typically, a "split brain" situation is the DBA's nightmare, and the Galera software is designed to avoid it. Galera is very successful in that avoidance, and it needs some special steps by the DBA to achieve "split brain". Here is how to do it - or, for most DBAs, what to avoid doing to not get a split-brain cluster.
Galera's DesignFirst, let's remember how Galera is operating:
- The Galera software ensures that all nodes participating in a cluster will start from identical contents, by doing a "snapshot state transfer" (SST) of all current data to a newly joining node.
- When the cluster is running, Galera transfers all changes (transactions) to all cluster nodes and applies them (or rolls back and ignores, in the case of a conflict).
- If some connections get lost, all nodes check whether they "have quorum" (belong to a majority), and stop serving requests if they don't.
- When a disconnected node re-joins the cluster, it gets all meantime changes transferred ("incremental state transfer" IST) and so makes its contents current.
- Should that be impossible, because some of those changes have become unavailable (log purge), a full transfer (SST) is done.
Of course, the quorum is a well-known concept. The old term for it is "majority consensus", and the approach is built on a simple principle:
In any set (of cluster nodes), there cannot be two (or more) non-overlapping subsets which both contain a majority of the elements.
So if some loss of connectivity splits the cluster into subsets, at most one of them can "have quorum", all others will stop serving requests, and there cannot be two (or more) different directions in which the contents (data) changes.
What Galera introduced (compared to previous designs of distributed DBMSs) is the efficient transfer of changes and conflict detection / resolution ("certification" in Galera terms) at "commit" time that makes the system fast, while previous designs used "distributed locking" or other principles which added latency to many commands and so made their systems slow.
The StoryLet's get back to the "split brain" issue, of which I said that Galera avoids it, and also said it can be reached. Sounds contradictory? Well, there are more active components than just Galera. Here is a real-world case, as happened to (I won't say "achieved by") a customer:
Originally, they had set up a Galera cluster of three nodes; let's call them A, B, and C. This is started by bringing up node A as a stand-alone node, running MySQL with the "wsrep" plugin. Then, one after the other, nodes B and C are configured to join node A in forming a cluster, and started. As a result, there are three nodes communicating with each other that form the cluster. In addition, HAproxy is running somewhere, it will direct the clients to an active cluster node.
So far, so good: The cluster is running, clients connect and issue transactions, everything is ok, and the DBA/s turn/s to other tasks ...
Some time later, node A must be stopped to do some hardware maintenance. No problem, nodes B and C are running fine, they have quorum (2 of 3 is a majority), so the system is still available and operations continue. HAproxy detects that node A does not respond, so it directs all clients to B or C. The cluster architecture is serving its purpose of continuous availability even during a maintenance period.
Maintenance is done, node A is rebooted, its MySQL+Galera server process restarts. It comes up, HAproxy detects it as running and directs clients to it. All seems fine ...
Three hours later, someone has become suspicious, detects trouble, and node A is stopped. Why? What has happened?
Some
large
gap
is
appropriate
to
give
readers
a
break
and
let
them
consider
the
situation.
What has happened?
Remember what I wrote about the cluster setup: It was
... started by bringing up node A as a stand-alone node, ... ... nodes B and C are configured to join node A ... ... three nodes communicating with each other that form the cluster.These steps were sufficient to get the nodes up and running. What was missing, however, was to re-configure A from "stand-alone" to "member of cluster with B and C".
As a consequence, when A was restarted after the maintenance, it again came up stand-alone. It did not try to join the cluster (which would have triggered an IST of the meantime changes) or check for quorum (a stand-alone node is self-sufficient).
Based on A's configuration (as read from disk), all was fine.
Based on the concept of the A+B+C cluster, it was a plain, simple split-brain:
Some changes were done on B+C (which still had quorum), while others were done on A only (which was mis-configured).
Lesson to learn (or rather, to bring back into active brain memory):
If some configuration is changed at run-time, this change must also be done in the configuration files so that it is used on restart.
The typical example for such changes is a "set global" command modifying some dynamic variable, like "max_connections".
But in a Galera cluster, a node joining the others is also a dynamic configuration change, and it should ASAP be reflected in all configuration files.
If this isn't done, the consequences might be as described above.
Now, most stories have a happy ending, and this one shouldn't be an exception:
Luckily, the application uses self-generated keys, similar to UUIDs, so the entries created on A did not conflict with those of B+C. Also, there were no changes of existing data, just inserts. So the situation could be corrected by extracting all new data from A, inserting them on B+C, and then resetting A's state so that it asked B+C for an SST. Uff!
Operational AdviceThere are some tools available that will do such a transfer. However, it can be done completely with standard parts coming with MySQL:
- "mysqldump" will extract the data from A.
- Suitable options will make sure this exctract does not contain "drop" or "create" commands, and generates "insert ignore".
Check the documentation for the options "--no-create-db", "--no-create-info", "--skip-add-drop-table", and "--insert-ignore". - If the old, common data are deleted first, both dumping and loading becomes faster, and duplicates are reduced / avoided.
- "mysql" can be used to load these data into B or C.
Had they used auto-increment keys, or had they modified existing data, it would have been much more complicated, and it might even have been impossible to combine all changes without losing some. I leave it to your imagination to think of such scenarios.
To repeat the lesson in DBMS / DBA terms:
- The most important property of a database is consistency, it must be kept up at all times.
- For database operations, the configuration on disk (in files) must be consistent to that in RAM (of the running processes), so any runtime changes must be reflected in the configuration files on disk to maintain consistency.
Percona's "pt-config-diff" can be used to compare a node's current variables to its configuration file.
Take care!
MySQL und MariaDB Schulung 2015/2016
Da unsere MySQL/MariaDB Schulung Anfangs Dezember in Berlin bereits ausgebucht ist, haben wir einen weiteren Termin für den 23. bis 27. November 2015 festgelegt.
Wenn Sie also sich oder ihr Team für 2016 in MySQL fit machen wollen, bietet sich Ihnen hiermit eine ideale Gelegenheit.
Folgenden Kursinhalt bieten wir an: MySQL für Fortgeschrittene
Anmelden können Sie sich wie üblich direkt bei der Heinlein Akademie.
Neue MySQL und MariaDB Schulungstermine 2016Das MySQL und MariaDB Schulungsprogramm für 2016 steht weitgehend fest: MySQL und MariaDB Schulungsprogramm.
Sichern Sie sich also bereits jetzt Ihren Platz für das aktuelle Know-how bei unseren beiden Schulungspartnern in Essen und Berlin.
Neue Kurse: SQL und MySQL für Einsteiger 2016Auf vielfachen Wunsch bieten wir 2016 neue auch eine Schulung für SQL-Einsteiger und MySQL- und MariaDB-Einsteiger an. Diese Kurse werden in Köln stattfinden. Die Termine werden demnächst bekannt gegeben. Wenn Sie sich bei uns melden, werden wir Sie persönlich informieren.
Taxonomy upgrade extras: mysqlmariadbtrainingschulungeinsteigerfortgeschritteneprofisMySQL und MariaDB Schulung 2015/2016
Da unsere MySQL/MariaDB Schulung Anfangs Dezember in Berlin bereits ausgebucht ist, haben wir einen weiteren Termin für den 23. bis 27. November 2015 festgelegt.
Wenn Sie also sich oder ihr Team für 2016 in MySQL fit machen wollen, bietet sich Ihnen hiermit eine ideale Gelegenheit.
Folgenden Kursinhalt bieten wir an: MySQL für Fortgeschrittene
Anmelden können Sie sich wie üblich direkt bei der Heinlein Akademie.
Neue MySQL und MariaDB Schulungstermine 2016Das MySQL und MariaDB Schulungsprogramm für 2016 steht weitgehend fest: MySQL und MariaDB Schulungsprogramm.
Sichern Sie sich also bereits jetzt Ihren Platz für das aktuelle Know-how bei unseren beiden Schulungspartnern in Essen und Berlin.
Neue Kurse: SQL und MySQL für Einsteiger 2016Auf vielfachen Wunsch bieten wir 2016 neue auch eine Schulung für SQL-Einsteiger und MySQL- und MariaDB-Einsteiger an. Diese Kurse werden in Köln stattfinden. Die Termine werden demnächst bekannt gegeben. Wenn Sie sich bei uns melden, werden wir Sie persönlich informieren.
Taxonomy upgrade extras: mysqlmariadbtrainingschulungeinsteigerfortgeschritteneprofisMySQL und MariaDB Schulung 2015/2016
Da unsere MySQL/MariaDB Schulung Anfangs Dezember in Berlin bereits ausgebucht ist, haben wir einen weiteren Termin für den 23. bis 27. November 2015 festgelegt.
Wenn Sie also sich oder ihr Team für 2016 in MySQL fit machen wollen, bietet sich Ihnen hiermit eine ideale Gelegenheit.
Folgenden Kursinhalt bieten wir an: MySQL für Fortgeschrittene
Anmelden können Sie sich wie üblich direkt bei der Heinlein Akademie.
Neue MySQL und MariaDB Schulungstermine 2016Das MySQL und MariaDB Schulungsprogramm für 2016 steht weitgehend fest: MySQL und MariaDB Schulungsprogramm.
Sichern Sie sich also bereits jetzt Ihren Platz für das aktuelle Know-how bei unseren beiden Schulungspartnern in Essen und Berlin.
Neue Kurse: SQL und MySQL für Einsteiger 2016Auf vielfachen Wunsch bieten wir 2016 neue auch eine Schulung für SQL-Einsteiger und MySQL- und MariaDB-Einsteiger an. Diese Kurse werden in Köln stattfinden. Die Termine werden demnächst bekannt gegeben. Wenn Sie sich bei uns melden, werden wir Sie persönlich informieren.
Taxonomy upgrade extras: mysqlmariadbtrainingschulungeinsteigerfortgeschritteneprofisMigration of SQLite to MySQL
In my first Blog ever, I am going to cover the migration of a SQLite-Database to MySQL. The Tool used is MySQL-Workbench, which you can Download from the MySQL website. In this particular case, it is about the upgrade of mocenter 0.2 to 0.3.
In the Workbench on the right side, you have the button “Database Migration”. Once you click on it, the introduction to the migration wizard will show up.
Setting up source and targetOn the bottom of the screen there is a button called “Start Migration”. Click it to get to the source selection.
On the first drop down menu choose “SQLite”. The menu will now change and give you the possibility to load a file. After you did this you can test the connection with the button on the bottom left, or go to the bottom right and click next.
You get a new menu, where you can choose your target of the database. You can use a stored connection or a new one. If you have no idea which connection type to use, TCP/IP usually works fine. Here I recommend you to test the connection, so you see if you can reach target. Then click next.
If the schema fetch does not return any error, you get to the schema selection.
There you have to select a target schema, before you can click next and go to fetch the source. Once you have done that too, click next once more.
Object selectionNow the database is ready to copy.
If you want to remove some of the tables from the migration, you can do this under “Show Selection”.
In case you see some warnings, you can ignore them.
Now click next and make sure there are no errors or failures, until you can select how to create the target database.
If you want to, you can create the SQL file to import the database structure somewhere else. I am just going to put it onto my server.
Clicking next after this step will create the database on the server. If you chose to create the SQL file, it would be created now as well.
Click next, when the creation is done, and you should get something, that looks like this picture. If you select a line, you will be shown the command that was executed.
This was the structure. Now to the data:
To transfer your data from the SQLite directly into the MySQL-Database, you can make an online copy. If you want to, or have to, do it from the command line you could also make a bash file.
If you click the option “Truncate target tables”, all the tables that already exist will be cleared of any data, so be careful using that checkbox.
Once complete, you should get report that looks somewhat like this.
------------------------------------------------------------------------------------ MySQL Workbench Migration Wizard Report Date: Sun Oct 18 17:36:53 2015 Source: SQLite 1.0.0 Target: MySQL 5.6.24 ------------------------------------------------------------------------------------ I. Migration 1. Summary Number of migrated schemas: 1 1. mocenter Source Schema: mocenter - Tables: 10 - Triggers: 0 - Views: 0 - Stored Procedures: 0 - Functions: 0 2. Migration Issues - versions warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - PRIMARY warning Truncated key column length for column from 0 to 255 - nodes warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - name_ui warning Truncated key column length for column from 0 to 255 - clusters warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - cluster_name warning Truncated key column length for column from 0 to 255 - vips warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - ip_address warning Truncated key column length for column from 0 to 255 - servers warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - server_name warning Truncated key column length for column from 0 to 255 - users warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - login_name warning Truncated key column length for column from 0 to 255 - moc_identifier warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - PRIMARY warning Truncated key column length for column from 0 to 255 - checks warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL.warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - PRIMARY warning Truncated key column length for column from 0 to 255 - name_dc warning Truncated key column length for column from 0 to 255 - jobs warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. 3. Object Creation Issues 4. Migration Details 4.1. Table mocenter.versions (versions) Columns: - version LONGTEXT - mr_version INT NULL - timestamp INT NULL Foreign Keys: Indices: - PRIMARY (version(255)) 4.2. Table mocenter.licenses (licenses) Columns: - license LONGTEXT NULL Foreign Keys: Indices: 4.3. Table mocenter.nodes (nodes) Columns: - node_id INT - name LONGTEXT NULL - last_change_ts INT NULL - status LONGTEXT NULL - node_type LONGTEXT NULL - hostname LONGTEXT NULL - basedir LONGTEXT NULL - datadir LONGTEXT NULL - my_cnf LONGTEXT NULL - port INT NULL - database_user LONGTEXT NULL - database_user_password LONGTEXT NULL - error_log LONGTEXT NULL - pid_file LONGTEXT NULL - read_only INT NULL - server_id INT NULL - role_id INT NULL - cluster_id INT NULL - master_id INT NULL Foreign Keys: Indices: - PRIMARY (node_id) - name_ui (name(255)) 4.4. Table mocenter.clusters (clusters) Columns: - cluster_id INT - name LONGTEXT NULL - last_change_ts INT NULL - type INT NULL Foreign Keys: Indices: - PRIMARY (cluster_id) - cluster_name (name(255)) 4.5. Table mocenter.vips (vips) Columns: - vip_id INT - ip_address LONGTEXT NULL - name LONGTEXT NULL - ipaddr_type INT NULL - interface LONGTEXT NULL - alias INT NULL - primary_id INT NULL - failover_id INT NULL - location_id INT NULL - cluster_id INT NULL - last_change_ts INT NULL - fo_sync_only INT NULL - fo_wait_sync INT NULL Foreign Keys: Indices: - PRIMARY (vip_id) - ip_address (ip_address(255)) 4.6. Table mocenter.servers (servers) Columns: - server_id INT - name LONGTEXT NULL - default_ip LONGTEXT NULL - os_user LONGTEXT NULL - cluster_id INT NULL - last_change_ts INT NULL - myenv_basedir LONGTEXT NULL Foreign Keys: Indices: - PRIMARY (server_id) - server_name (name(255)) 4.7. Table mocenter.users (users) Columns: - user_id INT - login_name LONGTEXT NULL - password_hash LONGTEXT NULL - email_address LONGTEXT NULL - first_name LONGTEXT NULL - last_name LONGTEXT NULL - mobile LONGTEXT NULL - role_id INT NULL Foreign Keys: Indices: - PRIMARY (user_id) - login_name (login_name(255)) 4.8. Table mocenter.moc_identifier (moc_identifier) Columns: - moc_identifier LONGTEXT Foreign Keys: Indices: - PRIMARY (moc_identifier(255)) 4.9. Table mocenter.checks (checks) Columns: - unit_id INT - type LONGTEXT NULL - name LONGTEXT - last_check_ts INT NULL - last_check_status LONGTEXT NULL - last_successful_check_ts INT NULL - last_successful_check_status LONGTEXT NULL Foreign Keys: Indices: - PRIMARY (unit_id, name(255)) - name_dc (name(255)) 4.10. Table mocenter.jobs (jobs) Columns: - job_id INT - name LONGTEXT NULL - server LONGTEXT NULL - pid INT NULL - start_ts INT NULL - status LONGTEXT NULL - check_interval INT NULL - last_check_ts INT NULL - end_ts INT NULL - error_code INT NULL - error_message LONGTEXT NULL - command LONGTEXT NULL Foreign Keys: Indices: - PRIMARY (job_id) II. Data Copy - `mocenter`.`moc_identifier` Succeeded : copied 1 of 1 rows from "mocenter"."moc_identifier" - `mocenter`.`clusters` Succeeded : copied 1 of 1 rows from "mocenter"."clusters" - `mocenter`.`jobs` Succeeded : copied 0 of 0 rows from "mocenter"."jobs" - `mocenter`.`users` Succeeded : copied 1 of 1 rows from "mocenter"."users" - `mocenter`.`vips` Succeeded : copied 1 of 1 rows from "mocenter"."vips" - `mocenter`.`versions` Succeeded : copied 2 of 2 rows from "mocenter"."versions" - `mocenter`.`servers` Succeeded : copied 2 of 2 rows from "mocenter"."servers" - `mocenter`.`checks` Succeeded : copied 46 of 46 rows from "mocenter"."checks" - `mocenter`.`licenses` Succeeded : copied 1 of 1 rows from "mocenter"."licenses" ConclusionMigrating from SQLite to MySQL is very easy when using MySQL Workbench.
Taxonomy upgrade extras: focmmmigrationMigration of SQLite to MySQL
In my first Blog ever, I am going to cover the migration of a SQLite-Database to MySQL. The Tool used is MySQL-Workbench, which you can Download from the MySQL website. In this particular case, it is about the upgrade of mocenter 0.2 to 0.3.
In the Workbench on the right side, you have the button “Database Migration”. Once you click on it, the introduction to the migration wizard will show up.
Setting up source and targetOn the bottom of the screen there is a button called “Start Migration”. Click it to get to the source selection.
On the first drop down menu choose “SQLite”. The menu will now change and give you the possibility to load a file. After you did this you can test the connection with the button on the bottom left, or go to the bottom right and click next.
You get a new menu, where you can choose your target of the database. You can use a stored connection or a new one. If you have no idea which connection type to use, TCP/IP usually works fine. Here I recommend you to test the connection, so you see if you can reach target. Then click next.
If the schema fetch does not return any error, you get to the schema selection.
There you have to select a target schema, before you can click next and go to fetch the source. Once you have done that too, click next once more.
Object selectionNow the database is ready to copy.
If you want to remove some of the tables from the migration, you can do this under “Show Selection”.
In case you see some warnings, you can ignore them.
Now click next and make sure there are no errors or failures, until you can select how to create the target database.
If you want to, you can create the SQL file to import the database structure somewhere else. I am just going to put it onto my server.
Clicking next after this step will create the database on the server. If you chose to create the SQL file, it would be created now as well.
Click next, when the creation is done, and you should get something, that looks like this picture. If you select a line, you will be shown the command that was executed.
This was the structure. Now to the data:
To transfer your data from the SQLite directly into the MySQL-Database, you can make an online copy. If you want to, or have to, do it from the command line you could also make a bash file.
If you click the option “Truncate target tables”, all the tables that already exist will be cleared of any data, so be careful using that checkbox.
Once complete, you should get report that looks somewhat like this.
------------------------------------------------------------------------------------ MySQL Workbench Migration Wizard Report Date: Sun Oct 18 17:36:53 2015 Source: SQLite 1.0.0 Target: MySQL 5.6.24 ------------------------------------------------------------------------------------ I. Migration 1. Summary Number of migrated schemas: 1 1. mocenter Source Schema: mocenter - Tables: 10 - Triggers: 0 - Views: 0 - Stored Procedures: 0 - Functions: 0 2. Migration Issues - versions warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - PRIMARY warning Truncated key column length for column from 0 to 255 - nodes warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - name_ui warning Truncated key column length for column from 0 to 255 - clusters warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - cluster_name warning Truncated key column length for column from 0 to 255 - vips warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - ip_address warning Truncated key column length for column from 0 to 255 - servers warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - server_name warning Truncated key column length for column from 0 to 255 - users warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - login_name warning Truncated key column length for column from 0 to 255 - moc_identifier warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - PRIMARY warning Truncated key column length for column from 0 to 255 - checks warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL.warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - PRIMARY warning Truncated key column length for column from 0 to 255 - name_dc warning Truncated key column length for column from 0 to 255 - jobs warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. 3. Object Creation Issues 4. Migration Details 4.1. Table mocenter.versions (versions) Columns: - version LONGTEXT - mr_version INT NULL - timestamp INT NULL Foreign Keys: Indices: - PRIMARY (version(255)) 4.2. Table mocenter.licenses (licenses) Columns: - license LONGTEXT NULL Foreign Keys: Indices: 4.3. Table mocenter.nodes (nodes) Columns: - node_id INT - name LONGTEXT NULL - last_change_ts INT NULL - status LONGTEXT NULL - node_type LONGTEXT NULL - hostname LONGTEXT NULL - basedir LONGTEXT NULL - datadir LONGTEXT NULL - my_cnf LONGTEXT NULL - port INT NULL - database_user LONGTEXT NULL - database_user_password LONGTEXT NULL - error_log LONGTEXT NULL - pid_file LONGTEXT NULL - read_only INT NULL - server_id INT NULL - role_id INT NULL - cluster_id INT NULL - master_id INT NULL Foreign Keys: Indices: - PRIMARY (node_id) - name_ui (name(255)) 4.4. Table mocenter.clusters (clusters) Columns: - cluster_id INT - name LONGTEXT NULL - last_change_ts INT NULL - type INT NULL Foreign Keys: Indices: - PRIMARY (cluster_id) - cluster_name (name(255)) 4.5. Table mocenter.vips (vips) Columns: - vip_id INT - ip_address LONGTEXT NULL - name LONGTEXT NULL - ipaddr_type INT NULL - interface LONGTEXT NULL - alias INT NULL - primary_id INT NULL - failover_id INT NULL - location_id INT NULL - cluster_id INT NULL - last_change_ts INT NULL - fo_sync_only INT NULL - fo_wait_sync INT NULL Foreign Keys: Indices: - PRIMARY (vip_id) - ip_address (ip_address(255)) 4.6. Table mocenter.servers (servers) Columns: - server_id INT - name LONGTEXT NULL - default_ip LONGTEXT NULL - os_user LONGTEXT NULL - cluster_id INT NULL - last_change_ts INT NULL - myenv_basedir LONGTEXT NULL Foreign Keys: Indices: - PRIMARY (server_id) - server_name (name(255)) 4.7. Table mocenter.users (users) Columns: - user_id INT - login_name LONGTEXT NULL - password_hash LONGTEXT NULL - email_address LONGTEXT NULL - first_name LONGTEXT NULL - last_name LONGTEXT NULL - mobile LONGTEXT NULL - role_id INT NULL Foreign Keys: Indices: - PRIMARY (user_id) - login_name (login_name(255)) 4.8. Table mocenter.moc_identifier (moc_identifier) Columns: - moc_identifier LONGTEXT Foreign Keys: Indices: - PRIMARY (moc_identifier(255)) 4.9. Table mocenter.checks (checks) Columns: - unit_id INT - type LONGTEXT NULL - name LONGTEXT - last_check_ts INT NULL - last_check_status LONGTEXT NULL - last_successful_check_ts INT NULL - last_successful_check_status LONGTEXT NULL Foreign Keys: Indices: - PRIMARY (unit_id, name(255)) - name_dc (name(255)) 4.10. Table mocenter.jobs (jobs) Columns: - job_id INT - name LONGTEXT NULL - server LONGTEXT NULL - pid INT NULL - start_ts INT NULL - status LONGTEXT NULL - check_interval INT NULL - last_check_ts INT NULL - end_ts INT NULL - error_code INT NULL - error_message LONGTEXT NULL - command LONGTEXT NULL Foreign Keys: Indices: - PRIMARY (job_id) II. Data Copy - `mocenter`.`moc_identifier` Succeeded : copied 1 of 1 rows from "mocenter"."moc_identifier" - `mocenter`.`clusters` Succeeded : copied 1 of 1 rows from "mocenter"."clusters" - `mocenter`.`jobs` Succeeded : copied 0 of 0 rows from "mocenter"."jobs" - `mocenter`.`users` Succeeded : copied 1 of 1 rows from "mocenter"."users" - `mocenter`.`vips` Succeeded : copied 1 of 1 rows from "mocenter"."vips" - `mocenter`.`versions` Succeeded : copied 2 of 2 rows from "mocenter"."versions" - `mocenter`.`servers` Succeeded : copied 2 of 2 rows from "mocenter"."servers" - `mocenter`.`checks` Succeeded : copied 46 of 46 rows from "mocenter"."checks" - `mocenter`.`licenses` Succeeded : copied 1 of 1 rows from "mocenter"."licenses" ConclusionMigrating from SQLite to MySQL is very easy when using MySQL Workbench.
Taxonomy upgrade extras: focmmmigrationMigration of SQLite to MySQL
In my first Blog ever, I am going to cover the migration of a SQLite-Database to MySQL. The Tool used is MySQL-Workbench, which you can Download from the MySQL website. In this particular case, it is about the upgrade of mocenter 0.2 to 0.3.
In the Workbench on the right side, you have the button “Database Migration”. Once you click on it, the introduction to the migration wizard will show up.
Setting up source and targetOn the bottom of the screen there is a button called “Start Migration”. Click it to get to the source selection.
On the first drop down menu choose “SQLite”. The menu will now change and give you the possibility to load a file. After you did this you can test the connection with the button on the bottom left, or go to the bottom right and click next.
You get a new menu, where you can choose your target of the database. You can use a stored connection or a new one. If you have no idea which connection type to use, TCP/IP usually works fine. Here I recommend you to test the connection, so you see if you can reach target. Then click next.
If the schema fetch does not return any error, you get to the schema selection.
There you have to select a target schema, before you can click next and go to fetch the source. Once you have done that too, click next once more.
Object selectionNow the database is ready to copy.
If you want to remove some of the tables from the migration, you can do this under “Show Selection”.
In case you see some warnings, you can ignore them.
Now click next and make sure there are no errors or failures, until you can select how to create the target database.
If you want to, you can create the SQL file to import the database structure somewhere else. I am just going to put it onto my server.
Clicking next after this step will create the database on the server. If you chose to create the SQL file, it would be created now as well.
Click next, when the creation is done, and you should get something, that looks like this picture. If you select a line, you will be shown the command that was executed.
This was the structure. Now to the data:
To transfer your data from the SQLite directly into the MySQL-Database, you can make an online copy. If you want to, or have to, do it from the command line you could also make a bash file.
If you click the option “Truncate target tables”, all the tables that already exist will be cleared of any data, so be careful using that checkbox.
Once complete, you should get report that looks somewhat like this.
------------------------------------------------------------------------------------ MySQL Workbench Migration Wizard Report Date: Sun Oct 18 17:36:53 2015 Source: SQLite 1.0.0 Target: MySQL 5.6.24 ------------------------------------------------------------------------------------ I. Migration 1. Summary Number of migrated schemas: 1 1. mocenter Source Schema: mocenter - Tables: 10 - Triggers: 0 - Views: 0 - Stored Procedures: 0 - Functions: 0 2. Migration Issues - versions warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - PRIMARY warning Truncated key column length for column from 0 to 255 - nodes warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - name_ui warning Truncated key column length for column from 0 to 255 - clusters warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - cluster_name warning Truncated key column length for column from 0 to 255 - vips warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - ip_address warning Truncated key column length for column from 0 to 255 - servers warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - server_name warning Truncated key column length for column from 0 to 255 - users warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - login_name warning Truncated key column length for column from 0 to 255 - moc_identifier warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - PRIMARY warning Truncated key column length for column from 0 to 255 - checks warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL.warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. - PRIMARY warning Truncated key column length for column from 0 to 255 - name_dc warning Truncated key column length for column from 0 to 255 - jobs warning Source table has a PRIMARY KEY allowing NULL values, which is not supported by MySQL. Column was changed to NOT NULL. 3. Object Creation Issues 4. Migration Details 4.1. Table mocenter.versions (versions) Columns: - version LONGTEXT - mr_version INT NULL - timestamp INT NULL Foreign Keys: Indices: - PRIMARY (version(255)) 4.2. Table mocenter.licenses (licenses) Columns: - license LONGTEXT NULL Foreign Keys: Indices: 4.3. Table mocenter.nodes (nodes) Columns: - node_id INT - name LONGTEXT NULL - last_change_ts INT NULL - status LONGTEXT NULL - node_type LONGTEXT NULL - hostname LONGTEXT NULL - basedir LONGTEXT NULL - datadir LONGTEXT NULL - my_cnf LONGTEXT NULL - port INT NULL - database_user LONGTEXT NULL - database_user_password LONGTEXT NULL - error_log LONGTEXT NULL - pid_file LONGTEXT NULL - read_only INT NULL - server_id INT NULL - role_id INT NULL - cluster_id INT NULL - master_id INT NULL Foreign Keys: Indices: - PRIMARY (node_id) - name_ui (name(255)) 4.4. Table mocenter.clusters (clusters) Columns: - cluster_id INT - name LONGTEXT NULL - last_change_ts INT NULL - type INT NULL Foreign Keys: Indices: - PRIMARY (cluster_id) - cluster_name (name(255)) 4.5. Table mocenter.vips (vips) Columns: - vip_id INT - ip_address LONGTEXT NULL - name LONGTEXT NULL - ipaddr_type INT NULL - interface LONGTEXT NULL - alias INT NULL - primary_id INT NULL - failover_id INT NULL - location_id INT NULL - cluster_id INT NULL - last_change_ts INT NULL - fo_sync_only INT NULL - fo_wait_sync INT NULL Foreign Keys: Indices: - PRIMARY (vip_id) - ip_address (ip_address(255)) 4.6. Table mocenter.servers (servers) Columns: - server_id INT - name LONGTEXT NULL - default_ip LONGTEXT NULL - os_user LONGTEXT NULL - cluster_id INT NULL - last_change_ts INT NULL - myenv_basedir LONGTEXT NULL Foreign Keys: Indices: - PRIMARY (server_id) - server_name (name(255)) 4.7. Table mocenter.users (users) Columns: - user_id INT - login_name LONGTEXT NULL - password_hash LONGTEXT NULL - email_address LONGTEXT NULL - first_name LONGTEXT NULL - last_name LONGTEXT NULL - mobile LONGTEXT NULL - role_id INT NULL Foreign Keys: Indices: - PRIMARY (user_id) - login_name (login_name(255)) 4.8. Table mocenter.moc_identifier (moc_identifier) Columns: - moc_identifier LONGTEXT Foreign Keys: Indices: - PRIMARY (moc_identifier(255)) 4.9. Table mocenter.checks (checks) Columns: - unit_id INT - type LONGTEXT NULL - name LONGTEXT - last_check_ts INT NULL - last_check_status LONGTEXT NULL - last_successful_check_ts INT NULL - last_successful_check_status LONGTEXT NULL Foreign Keys: Indices: - PRIMARY (unit_id, name(255)) - name_dc (name(255)) 4.10. Table mocenter.jobs (jobs) Columns: - job_id INT - name LONGTEXT NULL - server LONGTEXT NULL - pid INT NULL - start_ts INT NULL - status LONGTEXT NULL - check_interval INT NULL - last_check_ts INT NULL - end_ts INT NULL - error_code INT NULL - error_message LONGTEXT NULL - command LONGTEXT NULL Foreign Keys: Indices: - PRIMARY (job_id) II. Data Copy - `mocenter`.`moc_identifier` Succeeded : copied 1 of 1 rows from "mocenter"."moc_identifier" - `mocenter`.`clusters` Succeeded : copied 1 of 1 rows from "mocenter"."clusters" - `mocenter`.`jobs` Succeeded : copied 0 of 0 rows from "mocenter"."jobs" - `mocenter`.`users` Succeeded : copied 1 of 1 rows from "mocenter"."users" - `mocenter`.`vips` Succeeded : copied 1 of 1 rows from "mocenter"."vips" - `mocenter`.`versions` Succeeded : copied 2 of 2 rows from "mocenter"."versions" - `mocenter`.`servers` Succeeded : copied 2 of 2 rows from "mocenter"."servers" - `mocenter`.`checks` Succeeded : copied 46 of 46 rows from "mocenter"."checks" - `mocenter`.`licenses` Succeeded : copied 1 of 1 rows from "mocenter"."licenses" ConclusionMigrating from SQLite to MySQL is very easy when using MySQL Workbench.
MySQL Environment MyEnv 1.2.2 has been released
FromDual has the pleasure to announce the release of the new version 1.2.2 of its popular MySQL, Galera Cluster, MariaDB and Percona Server multi-instance environment MyEnv.
The new MyEnv can be downloaded here.
In the inconceivable case that you find a bug in the MyEnv please report it to our bug tracker.
Any feedback, statements and testimonials are welcome as well! Please send them to feedback@fromdual.com.
Upgrade from 1.1.x to 1.2.2 # cd ${HOME}/product # tar xf /download/myenv-1.2.2.tar.gz # rm -f myenv # ln -s myenv-1.2.2 myenvIf you are using plug-ins for showMyEnvStatus create all the links in the new directory structure:
cd ${HOME}/product/myenv ln -s ../../utl/oem_agent.php plg/showMyEnvStatus/Changes in MyEnv 1.2.2 MyEnv
- IP addresses are shown in up.
- All values from [default] section should be inherited to [dbname] section.
- Configuration file parser made more robust.
- Empty my.cnf is caught correctly now.
- Mac OSX findings fixed in installer.
- Fixed suppressed mysql_install_db error output problem.
- Missing libaio library is found in installer now.
- Check for missing /var/run/mysqld directory added.
- Installation script mysql_install_db is called with --no-defaults now to avoid interference with other configuration files.
- Script log_maintenance.php will not abort when having a problem with one log file but continue.
- Help examples and template improved for log_maintenance.php.
- Function check for mb_strlen added for log_maintenance.php.
- Script option --truncate with too many lines leads to out of memory and takes ages. Fixed this by limiting lines to 10000 in log_maintenance.php.
- But in drop_partition.php was fixed.
For subscriptions of commercial use of MyEnv please get in contact with us.
Taxonomy upgrade extras: MyEnvoperationMySQL Operationsmulti instanceconsolidationtestingreleaseMySQL Environment MyEnv 1.2.2 has been released
FromDual has the pleasure to announce the release of the new version 1.2.2 of its popular MySQL, Galera Cluster, MariaDB and Percona Server multi-instance environment MyEnv.
The new MyEnv can be downloaded here.
In the inconceivable case that you find a bug in the MyEnv please report it to our bug tracker.
Any feedback, statements and testimonials are welcome as well! Please send them to feedback@fromdual.com.
Upgrade from 1.1.x to 1.2.2 # cd ${HOME}/product # tar xf /download/myenv-1.2.2.tar.gz # rm -f myenv # ln -s myenv-1.2.2 myenvIf you are using plug-ins for showMyEnvStatus create all the links in the new directory structure:
cd ${HOME}/product/myenv ln -s ../../utl/oem_agent.php plg/showMyEnvStatus/Changes in MyEnv 1.2.2 MyEnv
- IP addresses are shown in up.
- All values from [default] section should be inherited to [dbname] section.
- Configuration file parser made more robust.
- Empty my.cnf is caught correctly now.
- Mac OSX findings fixed in installer.
- Fixed suppressed mysql_install_db error output problem.
- Missing libaio library is found in installer now.
- Check for missing /var/run/mysqld directory added.
- Installation script mysql_install_db is called with --no-defaults now to avoid interference with other configuration files.
- Script log_maintenance.php will not abort when having a problem with one log file but continue.
- Help examples and template improved for log_maintenance.php.
- Function check for mb_strlen added for log_maintenance.php.
- Script option --truncate with too many lines leads to out of memory and takes ages. Fixed this by limiting lines to 10000 in log_maintenance.php.
- But in drop_partition.php was fixed.
For subscriptions of commercial use of MyEnv please get in contact with us.
Taxonomy upgrade extras: myenvoperationMySQL Operationsmulti instanceconsolidationtestingupgradereleaseMySQL Environment MyEnv 1.2.2 has been released
FromDual has the pleasure to announce the release of the new version 1.2.2 of its popular MySQL, Galera Cluster, MariaDB and Percona Server multi-instance environment MyEnv.
The new MyEnv can be downloaded here.
In the inconceivable case that you find a bug in the MyEnv please report it to our bug tracker.
Any feedback, statements and testimonials are welcome as well! Please send them to feedback@fromdual.com.
Upgrade from 1.1.x to 1.2.2 # cd ${HOME}/product # tar xf /download/myenv-1.2.2.tar.gz # rm -f myenv # ln -s myenv-1.2.2 myenvIf you are using plug-ins for showMyEnvStatus create all the links in the new directory structure:
cd ${HOME}/product/myenv ln -s ../../utl/oem_agent.php plg/showMyEnvStatus/Changes in MyEnv 1.2.2 MyEnv
- IP addresses are shown in up.
- All values from [default] section should be inherited to [dbname] section.
- Configuration file parser made more robust.
- Empty my.cnf is caught correctly now.
- Mac OSX findings fixed in installer.
- Fixed suppressed mysql_install_db error output problem.
- Missing libaio library is found in installer now.
- Check for missing /var/run/mysqld directory added.
- Installation script mysql_install_db is called with --no-defaults now to avoid interference with other configuration files.
- Skript log_maintenance.php will not abort when having a problem with one log file but continue.
- Help examples and template improved for log_maintenance.php.
- Function check for mb_strlen added for log_maintenance.php.
- Skript option --truncate with too many lines leads to out of memory and takes ages. Fixed this by limiting lines to 10000 in log_maintenance.php.
- But in drop_partition.php was fixed.
For subscriptions of commercial use of MyEnv please get in contact with us.
Taxonomy upgrade extras: myenvoperationMySQL Operationsmulti instanceconsolidationtestingupgradeGalera Cluster für MySQL/MariaDB Schulung
Galera Cluster ist DIE synchrone Hochverfügbarkeitslösung für MySQL und MariaDB. Immer mehr MySQL-Administratoren und -Entwickler sind daher bestrebt, sich auch in diesem Umfeld Wissen anzueignen.
Mit der Galera Cluster für MySQL/MariaDB Schulung geht FromDual auf diese Bedürfnisse ein.
Die nächste Galera Cluster Schulung findet am Dienstag und Mittwoch 29./30. September 2015 im Linuxhotel in Essen (D) statt.
In unserer zweitägigen workshopartigen Schulung werden folgende Themen behandelt.
Galera Cluster Übersicht- MySQL Hochverfügbarkeitslösungen Übersicht
- Cluster Konzepte
- Was ist Galera Cluster
Galera Cluster Betrieb
- Installation
- Konfiguration
- Setup
- Betrieb
- Galera Cluster Upgrade
- Betriebsarten
- Backup und Restore
- Performance und Performance Tuning
- Überwachung
Load Balancing
- Aufsetzen des Load Balancers (HA-Proxy)
- Konfiguration
- Überwachung
- Betrieb
Galera Cluster fortgeschrittene Themen
- Skalierbarkeit
- Sicherheit
- Galera Cluster und MySQL Replikation
- Konfiguration im Detail
- Interne Galera Architektur
- Aussichten und neue Funktionalitäten
Für diese Galera Cluster Schulung können sich direkt beim Linuxhotel anmelden.
Taxonomy upgrade extras: galeraclusterschulungmysqlmariadbGalera Cluster für MySQL/MariaDB Schulung
Galera Cluster ist DIE synchrone Hochverfügbarkeitslösung für MySQL und MariaDB. Immer mehr MySQL-Administratoren und -Entwickler sind daher bestrebt, sich auch in diesem Umfeld Wissen anzueignen.
Mit der Galera Cluster für MySQL/MariaDB Schulung geht FromDual auf diese Bedürfnisse ein.
Die nächste Galera Cluster Schulung findet am Dienstag und Mittwoch 29./30. September 2015 im Linuxhotel in Essen (D) statt.
In unserer zweitägigen workshopartigen Schulung werden folgende Themen behandelt.
Galera Cluster Übersicht- MySQL Hochverfügbarkeitslösungen Übersicht
- Cluster Konzepte
- Was ist Galera Cluster
Galera Cluster Betrieb
- Installation
- Konfiguration
- Setup
- Betrieb
- Galera Cluster Upgrade
- Betriebsarten
- Backup und Restore
- Performance und Performance Tuning
- Überwachung
Load Balancing
- Aufsetzen des Load Balancers (HA-Proxy)
- Konfiguration
- Überwachung
- Betrieb
Galera Cluster fortgeschrittene Themen
- Skalierbarkeit
- Sicherheit
- Galera Cluster und MySQL Replikation
- Konfiguration im Detail
- Interne Galera Architektur
- Aussichten und neue Funktionalitäten
Für diese Galera Cluster Schulung können sich direkt beim Linuxhotel anmelden.
Taxonomy upgrade extras: galeraclusterschulungmysqlmariadbGalera Cluster für MySQL/MariaDB Schulung
Galera Cluster ist DIE synchrone Hochverfügbarkeitslösung für MySQL und MariaDB. Immer mehr MySQL-Administratoren und -Entwickler sind daher bestrebt, sich auch in diesem Umfeld Wissen anzueignen.
Mit der Galera Cluster für MySQL/MariaDB Schulung geht FromDual auf diese Bedürfnisse ein.
Die nächste Galera Cluster Schulung findet am Dienstag und Mittwoch 29./30. September 2015 im Linuxhotel in Essen (D) statt.
In unserer zweitägigen workshopartigen Schulung werden folgende Themen behandelt.
Galera Cluster Übersicht- MySQL Hochverfügbarkeitslösungen Übersicht
- Cluster Konzepte
- Was ist Galera Cluster
Galera Cluster Betrieb
- Installation
- Konfiguration
- Setup
- Betrieb
- Galera Cluster Upgrade
- Betriebsarten
- Backup und Restore
- Performance und Performance Tuning
- Überwachung
Load Balancing
- Aufsetzen des Load Balancers (HA-Proxy)
- Konfiguration
- Überwachung
- Betrieb
Galera Cluster fortgeschrittene Themen
- Skalierbarkeit
- Sicherheit
- Galera Cluster und MySQL Replikation
- Konfiguration im Detail
- Interne Galera Architektur
- Aussichten und neue Funktionalitäten
Für diese Galera Cluster Schulung können sich direkt beim Linuxhotel anmelden.
Taxonomy upgrade extras: galeraclusterschulungmysqlmariadbFromDual mit Neuem zu MySQL und MariaDB
MySQL/MariaDB Schulungstermine
Im Herbst 2015 bieten wir wieder viele interessante und spannende MySQL/MariaDB Kurse an.
Falls Sie Interesse haben, an diesen Schulungen teilzunehmen, bitten wir Sie, Sich schnell anzumelden, um Sich Ihren Platz zu sichern. Es sind nur noch wenige Plätze frei.
Folgende Kurse finden im Herbst statt:
MySQL für Fortgeschrittene vom 31. August - 4. September 2015 im LinuxHotel in Essen. Hier anmelden.
MySQL für Fortgeschrittene vom 14. - 18. September 2015 im LinuxHotel in Essen. Hier anmelden.
Galera Cluster für MySQL vom 04. – 05. November 2015 im LinuxHotel in Essen. Hier anmelden.
Bitte vermerken Sie unter Anmerkungen, dass Sie über den FromDual Newsletter auf das Angebot aufmerksam gemacht wurden.
Alle übrigen Schulungstermine finden Sie unter MySQL/MariaDB Schulung.
MySQL/MariaDB Vorträge
FromDual war dieses Jahr auf der SLAC (SLAC) mit zwei Vorträgen vertreten. Die Folien von der SLAC sind nun online. Sie finden sie wie immer unter Präsentationen.
Neue Software Releases für MySQL/MariaDB
Wir freuen uns den Release der neuen Versionen 0.10.4 des Performance Monitor für MySQL und MariaDB sowie 1.2.2 des FromDual Backup Manager.
FromDual mit Neuem zu MySQL und MariaDB
MySQL/MariaDB Schulungstermine
Im Herbst 2015 bieten wir wieder viele interessante und spannende MySQL/MariaDB Kurse an.
Falls Sie Interesse haben, an diesen Schulungen teilzunehmen, bitten wir Sie, Sich schnell anzumelden, um Sich Ihren Platz zu sichern. Es sind nur noch wenige Plätze frei.
Folgende Kurse finden im Herbst statt:
MySQL für Fortgeschrittene vom 31. August - 4. September 2015 im LinuxHotel in Essen. Hier anmelden.
MySQL für Fortgeschrittene vom 14. - 18. September 2015 im LinuxHotel in Essen. Hier anmelden.
Galera Cluster für MySQL vom 04. – 05. November 2015 im LinuxHotel in Essen. Hier anmelden.
Bitte vermerken Sie unter Anmerkungen, dass Sie über den FromDual Newsletter auf das Angebot aufmerksam gemacht wurden.
Alle übrigen Schulungstermine finden Sie unter MySQL/MariaDB Schulung.
MySQL/MariaDB Vorträge
FromDual war dieses Jahr auf der SLAC (SLAC) mit zwei Vorträgen vertreten. Die Folien von der SLAC sind nun online. Sie finden sie wie immer unter Präsentationen.
Neue Software Releases für MySQL/MariaDB
Wir freuen uns den Release der neuen Versionen 0.10.4 des Performance Monitor für MySQL und MariaDB sowie 1.2.2 des FromDual Backup Manager.
FromDual mit Neuem zu MySQL und MariaDB
MySQL/MariaDB Schulungstermine
Im Herbst 2015 bieten wir wieder viele interessante und spannende MySQL/MariaDB Kurse an.
Falls Sie Interesse haben, an diesen Schulungen teilzunehmen, bitten wir Sie, Sich schnell anzumelden, um Sich Ihren Platz zu sichern. Es sind nur noch wenige Plätze frei.
Folgende Kurse finden im Herbst statt:
MySQL für Fortgeschrittene vom 31. August - 4. September 2015 im LinuxHotel in Essen. Hier anmelden.
MySQL für Fortgeschrittene vom 14. - 18. September 2015 im LinuxHotel in Essen. Hier anmelden.
Galera Cluster für MySQL vom 04. – 05. November 2015 im LinuxHotel in Essen. Hier anmelden.
Bitte vermerken Sie unter Anmerkungen, dass Sie über den FromDual Newsletter auf das Angebot aufmerksam gemacht wurden.
Alle übrigen Schulungstermine finden Sie unter MySQL/MariaDB Schulung.
MySQL/MariaDB Vorträge
FromDual war dieses Jahr auf der SLAC (SLAC) mit zwei Vorträgen vertreten. Die Folien von der SLAC sind nun online. Sie finden sie wie immer unter Präsentationen.
Neue Software Releases für MySQL/MariaDB
Wir freuen uns den Release der neuen Versionen 0.10.4 des Performance Monitor für MySQL und MariaDB sowie 1.2.2 des FromDual Backup Manager.
FromDual Performance Monitor for MySQL and MariaDB 0.10.5 has been released
FromDual has the pleasure to announce the release of the new version 0.10.5 of its popular Database Performance Monitor for MySQL, MariaDB, Galera Cluster and Percona Server fpmmm.
You can download fpmmm from here.
In the inconceivable case that you find a bug in fpmmm please report it to our Bug-tracker.
Any feedback, statements and testimonials are welcome as well! Please send them to feedback@fromdual.com.
This release contains various bug fixes and improvements. The previous release had some major bugs so we recommend to upgrade...
New installation of fpmmm v0.10.5Please follow our mpm installation guide. A specific fpmmm installation guide will follow with the next version.
Prerequisites CentOS 6# yum install php-cli php-process php-mysqli # cat << _EOF >/etc/php.d/fpmmm.ini variables_order = "EGPCS" date.timezone = 'Europe/Zurich' _EOF rpm -Uvh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm yum update yum install zabbix-sender
CentOS 7 # yum install php-cli php-process php-mysqli # cat << _EOF >/etc/php.d/fpmmm.ini variables_order = "EGPCS" date.timezone = 'Europe/Zurich' _EOF rpm -Uvh http://repo.zabbix.com/zabbix/2.2/rhel/7/x86_64/zabbix-release-2.2-1.el7.noarch.rpm yum update yum install zabbix-sender
Ubuntu 14.04
# apt-get install php5-cli php5-mysqlnd php5-curl # cat << _EOF >/etc/php5/cli/conf.d/fpmmm.ini variables_order = "EGPCS" date.timezone = 'Europe/Zurich' _EOF apt-get install zabbix-agent
OpenSuSE 13.1
# zypper install php5 php5-posix php5-mysql php5-pcntl php5-curl #cat << _EOF >/etc/php5/conf.d/fpmmm.ini variables_order = "EGPCS" date.timezone = 'Europe/Zurich' _EOF zypper addrepo http://download.opensuse.org/repositories/server:/monitoring/openSUSE_13.1 server_monitoring zypper update zypper install zabbix-agent
Upgrade from fpmmm 0.10.x to fpmmm 0.10.5 # cd /opt # tar xf /download/fpmmm-0.10.5.tar.gz # rm -f fpmmm # ln -s fpmmm-0.10.5 fpmmm
The following templates in your Zabbix monitor should be replaced. Before you replace the templates it is a good idea to first delete all triggers...
- tpl/Template_FromDual.MySQL.fpmmm.xml
- tpl/Template_FromDual.MySQL.innodb.xml
- tpl/Template_FromDual.MySQL.master.xml
- tpl/Template_FromDual.MySQL.myisam.xml
- tpl/Template_FromDual.MySQL.mysql.xml
- tpl/Template_FromDual.MySQL.server.xml
- tpl/Template_FromDual.MySQL.slave.xml
- Better and more verbose error handling in various modules.
- Directory for log file is created automatically if it does not exist yet.
- All broken SQL queries (from 0.10.4) fixed again.
- Add delay for not so frequent changing data.
- Several triggers which complained after restart are fixed now.
- Connections to database were now reduced to the minimum.
- Links for templates fixed.
- Innodb_flush_log_at_trx_commit, log_queries_not_using_indexes and character_set_server triggers disabled by default.
- Also sendCachedData is now checked for too big cache file. Bug from swd.
- Slave error messages are caught and sent to the monitor.
- Warning is written to the log file if slave module is configured without being a slave.
- New slave status is reported correctly now.
- Seconds_behind_master is now only sent when running.
- New trigger for binlog_format = MIXED and replication filtering added.
- Severity increased on STATEMENT based filtering added.
- Regexp bug fixed.
- Master without binary log fixed.
- Old broken triggers fixed.
- IOPS graph added.
- Device sda5 removed.
- I/O statistics calculation improved.
- I/O r/w wait experimental items implemented.
- CPU count added.
- NUMA and virtualization information added.
- innodb_flush_method item added.
- Trigger for innodb_flush_method added.
- innodb_force_recovery trigger severity increased.
- innodb_log_files_in_group item added for log traffic threshold.
- InnoDB transaction log traffic trigger and graph added.
For subscriptions of commercial use of fpmmm please get in contact with us.
Taxonomy upgrade extras: mysqlperformancemonitormonitoringfpmmmmaasperformance monitormpmreleasePages
![Subscribe to FromDual aggregator](https://fromdual.ch/misc/feed.png)