🌊 MySQL VS MariaDB – ¿Cuál es mejor? Mysql tricks from Techmirrors.org #mysql #tricks

🌊 MySQL VS MariaDB – ¿Cuál es mejor? Mysql tricks from Techmirrors.org #mysql #tricks



Que motor de bases de datos para programación web es mejor? ¿Debemos usar MySQL o MariaDB? Vamos a verlo en este vídeo.

sourceTechmirrors

Main aim to setup clustering MySQL is to have redundancy – you server and applications will run smoothly even if one server goes down.

Is MariaDB the same as MySQL?

MariaDB: Since MariaDB is a fork of MySQL, the database structure and indexes of MariaDB are the same as MySQL. This allows you to switch from MySQL to MariaDB without having to alter your applications since the data and data structures will not need to change. … client protocols, structures, and APIs are identical.

Note: For better performance you should have a 3rd server as a management node but this can be shut down after the cluster starts. Also note that shutting down the management server is not recommended (see the extra notes at the bottom of this document for more information). You can not run a MySQL Cluster with just two Dedicated servers And have true redundancy.

It is possible to set up the cluster on two Dedicated Servers you will not get the ability to “kill” one server and for the cluster to continue as normal. For this you need a third server running the management node.

Now below I had given the example for three servers:

mysql1.domain.com – 192.168.0.1
mysql2.domain.com – 192.168.0.2
mysql3.domain.com – 192.168.0.3

Servers 1 and 2 will be the two that end up “clustered”. This would be perfect for two servers behind a load balancer or using round robin DNS and is a good replacement for replication. Server 3 needs to have only minor changes made to it and does NOT require a MySQL install. It can be a low-end machine and can be carrying out other tasks.

STAGE 1: Install MySQL on the first two servers:

Complete the following steps on both mysql1 and mysql2:

cd /usr/local/
dev.mysql.com/get/Downloads/MySQL-4.1/mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz/

from/signal42.com/mirrors/mysql/
groupadd mysql
useradd -g mysql mysql
tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
rm mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
ln -s mysql-max-4.1.9-pc-linux-gnu-i686 mysql
cd mysql
scripts/mysql_install_db –user=mysql
chown -R root .
chown -R mysql data
chgrp -R mysql .
cp support-files/mysql.server /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/mysql.server
chkconfig –add mysql.server

Do not start MySQL yet.

STAGE 2: Install and configure the management server

You need the following files from the bin/ of the mysql directory: ndb_mgm and ndb_mgmd. Download the whole mysql-max tarball and extract them from the bin/ directory.

mkdir /usr/src/mysql-mgm
cd /usr/src/mysql-mgm
dev.mysql.com/get/Downloads/MySQL-4.1/mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz/

from/www.signal42.com/mirrors/mysql/
tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
rm mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
cd mysql-max-4.1.9-pc-linux-gnu-i686
mv bin/ndb_mgm .
mv bin/ndb_mgmd .
chmod +x ndb_mg*
mv ndb_mg* /usr/bin/
cd
rm -rf /usr/src/mysql-mgm

You now need to set up the config file for this management:

mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi [or emacs or any other editor] config.ini

Now, insert the following (changing the bits as indicated):

[NDBD DEFAULT]
NoOfReplicas=2
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Managment Server
[NDB_MGMD]
HostName=192.168.0.3 # the IP of THIS SERVER
# Storage Engines
[NDBD]
HostName=192.168.0.1 # the IP of the FIRST SERVER
DataDir= /var/lib/mysql-cluster
[NDBD]
HostName=192.168.0.2 # the IP of the SECOND SERVER
DataDir=/var/lib/mysql-cluster
# 2 MySQL Clients
# I personally leave this blank to allow rapid changes of the mysql clients;
# you can enter the hostnames of the above two servers here. I suggest you dont.
[MYSQLD]
[MYSQLD]

Now, start the management server:

ndb_mgmd

This is the MySQL management server, not management console. You should therefore not expect any output (we will start the console later).

STAGE 3: Configure the storage/SQL servers and start MySQL

On each of the two storage/SQL servers (192.168.0.1 and 192.168.0.2) enter the following (changing the bits as appropriate):

vi /etc/my.cnf

Enter i to go to insert mode again and insert this on both servers (changing the IP address to the IP of the management server that you set up in stage 2):

[mysqld]
ndbcluster
ndb-connectstring=192.168.0.3 # the IP of the MANAGMENT (THIRD) SERVER
[mysql_cluster]
ndb-connectstring=192.168.0.3 # the IP of the MANAGMENT (THIRD) SERVER

Now, we make the data directory and start the storage engine:

mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
/usr/local/mysql/bin/ndbd –initial
/etc/rc.d/init.d/mysql.server start

If you have done one server now go back to the start of stage 3 and repeat exactly the same procedure on the second server.

Note: you should ONLY use –initial if you are either starting from scratch or have changed the config.ini file on the management.

STAGE 4: Check its working

You can now return to the management server (mysql3) and enter the management console:

/usr/local/mysql/bin/ndb_mgm

Enter the command SHOW to see what is going on. A sample output looks like this:

[root@mysql3 mysql-cluster]# /usr/local/mysql/bin/ndb_mgm
— NDB Cluster — Management Client —
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=2 @192.168.0.1 (Version: 4.1.9, Nodegroup: 0, Master)
id=3 @192.168.0.2 (Version: 4.1.9, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.3 (Version: 4.1.9)

[mysqld(API)] 2 node(s)
id=4 (Version: 4.1.9)
id=5 (Version: 4.1.9)

ndb_mgm>

If you see

not connected, accepting connect from 192.168.0.[1/2/3]

in the first or last two lines they you have a problem. Please email me with as much detail as you can give and I can try to find out where you have gone wrong and change this HOWTO to fix it.

If you are OK to here it is time to test MySQL. On either server mysql1 or mysql2 enter the following commands: Note that we have no root password yet.

mysql
use test;
CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;
INSERT INTO ctest () VALUES (1);
SELECT * FROM ctest;

You should see 1 row returned (with the value 1).

If this works,which will probably happen, go to the other server and run the same SELECT and see what you get. Insert from that host and go back to host 1 and see if it works. If it works then congratulations.

The final test is to kill one server to see what happens. If you have physical access to the machine simply unplug its network cable and see if the other server keeps on going fine (try the SELECT query). If you dont have physical access do the following:

ps aux | grep ndbd

You get an output like this:

root 5578 0.0 0.3 6220 1964 ? S 03:14 0:00 ndbd
root 5579 0.0 20.4 492072 102828 ? R 03:14 0:04 ndbd
root 23532 0.0 0.1 3680 684 pts/1 S 07:59 0:00 grep ndbd

In this case ignore the command “grep ndbd” (the last line) but kill the first two processes by issuing the command kill -9 pid pid:

kill -9 5578 5579

Then try the select on the other server. While you are at it run a SHOW command on the management node to see that the server has died. To restart it, just issue

ndbd

Note: no –initial!
Further notes about setup

I strongly recommend that you read all of this (and bookmark this page). It will almost certainly save you a lot of searching.
The Management Server

I strongly recommend that you do not stop the management server once it has started. This is for several reasons:

* The server might hardly require and take any server resources

* If a cluster falls over, you want to be able to just ssh in and type ndbd to stat it. You will not want to start messing around with another server

* You need the management server up If you want to take backups

* The cluster log is sent to the management server so to check what is going on in the cluster or has happened since last this is an important tool

* All commands from the ndb_mgm client is sent to the management server and thus no management commands without management server.

* The management server is required in case of cluster reconfiguration (crashed server or network split). In the case that it is not running, “split-brain” scenario will occur. The management server arbitration role is required for this type of setup to provide better fault tolerance.

MariaDB vs MySQL SSD NVMe vs SATA Performance – Discussions on the Percona Benchmark

Is MariaDB replacing MySQL?

While MariaDB isn’t yet replacing MySQL, it has brought about good competition between the two, which can be good for innovation. The developers designed it as a drop-in replacement of MySQL. … Since it was forked from MySQL, basically all of the structures MariaDB uses are the same.

Is MySQL dead?

MariaDB is a database server that offers drop-in replacement functionality for MySQL

Should I use MariaDB?

First and foremost, MariaDB offers more and better storage engines. NoSQL support, provided by Cassandra, allows you to run SQL and NoSQL in a single database system. MariaDB also supports TokuDB, which can handle big data for large organizations and corporate users.

Does Google use MariaDB?

Linux distributors have been moving from Oracle’s MySQL to its popular fork, MariaDB – and now Google is also moving to MariaDB. Despite being the most popular open-source database management system (DBMS), Oracle’s MySQL has been sinking into trouble.

1. MariaDB vs MySQL SSD NVMe vs SATA Performance – Discussions on the Percona Benchmark