Difference between revisions of "MariaDB/MySQL"

From wiki
Jump to navigation Jump to search
Line 19: Line 19:
  
 
<code>mysql -u root -p < users.sql</code>
 
<code>mysql -u root -p < users.sql</code>
 +
 +
=Set up replication=
 +
With replication all transactions on the master database server are immediately replicated to the slave database server. So you create a hot copy of the database that can be used in case of a failure of the master server or to offload the master server by executing retrieval queries on the slave.
 +
 +
This procedure is a found on howtoforge.com [https://www.howtoforge.com/mysql_database_replication]
 +
 +
On the master:
 +
;Edit the my.cnf so it has these lines
 +
#skip-networking
 +
#bind-address            = 127.0.0.1
 +
log-bin = /var/log/mysql/mysql-bin.log
 +
binlog-do-db=exampledb
 +
server-id=1
 +
The server must be accessible from the slave server and the server-id must be unique in you network
 +
;Restart the database server
 +
/etc/init.d/mysql restart
 +
 +
;Create a replication user
 +
mysql -uroot -p
 +
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY '<some_password>';
 +
mysql> FLUSH PRIVILEGES;
 +
 +
mysql> USE exampledb;
 +
mysql> FLUSH TABLES WITH READ LOCK;
 +
mysql> SHOW MASTER STATUS;
 +
+---------------+----------+--------------+------------------+
 +
| File          | Position | Binlog_do_db | Binlog_ignore_db |
 +
+---------------+----------+--------------+------------------+
 +
| mysql-bin.006 | 183      | exampledb    |                  |
 +
+---------------+----------+--------------+------------------+
 +
1 row in set (0.00 sec)
 +
 +
To be continued.....

Revision as of 20:42, 14 October 2019

MariaDB is an open source fork of MySQL. There are some differences but most are internal, for users the commands and SQL syntax is exactly the same.

phpMyAdmin is a web based GUI for the maintenance of MariaDB and MySQL servers.

Move users from one server to another

Starting on the source server execute this script

PASSWORD=$1
mysql -B -N -uroot -p${PASSWORD} -e "SELECT CONCAT('\'', user,'\'@\'', host, '\'') FROM user WHERE user IN ('username1', 'username2', 'username3')" > users.txt
while read line
 do
  mysql -B -N -uroot -p${PASSWORD} -e "SHOW GRANTS FOR $line"
 done < users.txt > users.sql
sed -i 's/$/;/' users.sql

Move the file to the other server and there do:

mysql -u root -p < users.sql

Set up replication

With replication all transactions on the master database server are immediately replicated to the slave database server. So you create a hot copy of the database that can be used in case of a failure of the master server or to offload the master server by executing retrieval queries on the slave.

This procedure is a found on howtoforge.com [1]

On the master:

Edit the my.cnf so it has these lines
#skip-networking
#bind-address            = 127.0.0.1
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db=exampledb
server-id=1

The server must be accessible from the slave server and the server-id must be unique in you network

Restart the database server
/etc/init.d/mysql restart
Create a replication user
mysql -uroot -p
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY '<some_password>';
mysql> FLUSH PRIVILEGES;
mysql> USE exampledb;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| mysql-bin.006 | 183      | exampledb    |                  |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)

To be continued.....