mysql / mariadb

Docs SQL / Serveur SQL...

AutoMysqlBackup

→ Script .sh permettant de faire des backup auto des base AutoMysqlBackup

Pas defaut le script sauvegarde toutes les bases

Installation

→ Installer le paquet Automysqlbackup

apt install automysqlbackup

Configuration

Tout se configure dans /etc/default/automysqlbackup Fichier bien documenté pour se repérer

Pour changer le répertoire de svg, changer la valeur de 'BACKUPDIR' dans le fichier

Lancer une backup manuelle:

Lancer le srcipt suivant /usr/sbin/automysqlbackup

Le script s'execute automatiquement tous les jours via cron

Docs

Ubuntu Wiki

Doc du Projet

Commandes memo

Tables

Show Table Schema

DESCRIBE TABLE_NAME;

Create table

CREATE TABLE nom_de_la_table
(
    colonne1 type_donnees,
    colonne2 type_donnees,
    colonne3 type_donnees,
    colonne4 type_donnees
)

SQL.SH Create Tables

Users & Permissions

Create User & Del User

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
DROP USER ‘username’@‘localhost’;

Users Password

Change Password User

UPDATE mysql.user SET Password=PASSWORD('new-password-here') WHERE USER='user-name-here' AND Host='host-name-here';

Privileges

Add Privileges:

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

Revoke Privileges

REVOKE type_of_permission ON database_name.table_name FROM ‘username’@‘localhost’;

Show user privileges

SHOW GRANTS username;

Manipulation données

Ajout données

Pour ajouter des données dans une table existante:

INSERT INTO myTable VALUES ('value1','value2')

Avec cette première syntaxe, il faut obligatoirement mettre toutes les données, dans le bon ordre des colonnes.

Pour insérer des données et ne remplir que certaine colonnes (les autres colonnes prendront une velur nulle, ou celle par défaut):

INSERT INTO mytable (colonne_1, colonne_2,...) VALUES ('valeur1',valeur2',...)

Il n'est pas nécessaire que l'ordre des colonnes soit respecté.

Commandes diverse

Insérer des données dans une table, en récupérant des valeur de cette table avec une condition, et ajouter une valeur fixe.

Par exemple, si j'ai une table mappant l'id d'un utilisateur avec l'id d'un objet stocké dans une autre table, afin de relier les 2.
Je veux ajouter dans ma table "user_object" des valeurs, où je copie les droits d'un autre user. Je récupère dans la table toutes les valeurs avec l'id de cet user(id 1), et j'ajoute les données dans la table en me basant sur cette requête + l'id de l'user que je veux ajouter (id 2).

INSERT INTO user_object (id_user, id_object) SELECT id_user,2 FROM user_object WHERE value2=1

Docs

SQL.SH Create Tables
How To Create a New User and Grant Permissions in MySQL
MySQL Change a User Password
Mémo SQL pour la Data Science
→ Jointure SQL
→ CheatSheet SQL

mysql/mariadb - Configuration et optimisation

Cette documentation explique la configuration et la customisation d'un serveur mariadb, afin d'améliorer ses performances. 
Elle fait office de mémo pour la compréhension de ces paramétrages

Ici la configuration est à destination d'un serveur avec 16G de RAM. Elle sera donc à adapter en fonction des machine, avec plus ou moins de RAM.

Fichiers de configuration

Ces paramètres sont à mettre dans les fichiers de config de mariadb. 

Sous debian:

Sous Redhat Entreprise Linux et dérivée:

- /etc/my.cnf

Fichier de configuration d'exemple

Exemple pour un système disposant de 16 Go de RAM

[mysqld]
# Settings généraux
user = mysql
pid-file = /run/mysqld/mysqld.pid
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
# Désactivation résolution de nom
skip-name-resolve
# Interface d'écoute
bind-address = 127.0.0.1

# Paramétrages performances
innodb_buffer_pool_size = 8G
innodb_buffer_pool_instances = 8
innodb_log_file_size = 512M
thread_cache_size = 16
query_cache_size = 128M
query_cache_type = 1
tmp_table_size = 1024M
max_heap_table_size = 1024M
table_open_cache = 4096
table_definition_cache = 4096

# Paramétrage connexions
max_connections = 500
max_user_connections = 50 

Explication des paramétrages pour la customisation des performances:

Après toute modification de la configuration, il faudra redémarrer le service afin qu'ils soient pris en compte:

systemctl restart mariadb

Ressources