Lors de l’administration de base de données SQL sous Linux, il se peut qu’un changement de serveur de base de données soit effectué. Par conséquent, toutes les bases de données contenues sur ce serveur se doivent d’être présente sur le serveur de destination.
En ce sens, par cet article, nous allons montrer comment utiliser les commandes fournies par le logiciel MariaDB pour, d’une part, exporter une base de données d’un serveur 1 et, d’autre part, l’exporter sur un serveur 2.
Pour cela, nous utiliserons deux serveurs distincts sous Debian 8 :
- DB01, qui sera notre serveur historique, hébergeant nos bases de données.
- DB02, qui sera notre nouveau serveur, sur lequel nous allons importer notre base de données.
Export de la base de données.
Sur DB01 :
Tout d’abord, regardons les bases de données que l’on a sur notre serveur.
###Connexion au service de base de données. root@db01:~# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 42 Server version: 10.0.28-MariaDB-0+deb8u1 (Debian) Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | users | | wrk | +--------------------+ 5 rows in set (0.00 sec) MariaDB [(none)]>
Nous allons exporter les bases de données « users » et « wrk » dans deux fichiers .sql distincts. Pour cela, nous allons utiliser la commande mysqldump, fournie directement par le logiciel MariaDB.
###Export de la base de données wrk. root@db01:~# mysqldump -u root -p -q --databases wrk > /var/tmp/dump_wrk.sql Enter password: ###Export de la base de données users. root@db01:~# mysqldump -u root -p -q --databases users > /var/tmp/dump_users.sql Enter password: root@db01:~#
Sur cette ligne de commande, nous avons les options suivantes :
- -u : Permet de spécifier l’utilisateur avec lequel nous allons nous connecter. Ici, nous utilisons le compte « root », disposant de toutes les autorisations sur les bases de données.
- -p : Permet de spécifier un mot de passe ; c’est une mesure d’authentification supplémentaire.
- -q : Pour « Quick Mode ». Permet d’accélérer la création du fichier SQL lorsque de larges bases de données sont impliquées.
- –databases : Permet de spécifier quelle base de données nous allons exporter.
Ainsi, nous avons donc sauvegardé nos deux bases de données dans le dossier /var/tmp. Par la commande cat, nous pouvons vérifier que notre export s’est bien déroulé.
Note : Ci-dessous, un exemple avec l’export de la base de données « wrk ».
root@db01:~# cat /var/tmp/dump_wrk.sql -- MySQL dump 10.15 Distrib 10.0.28-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: localhost Database: localhost -- ------------------------------------------------------ -- Server version 10.0.28-MariaDB-0+deb8u1 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Current Database: `wrk` -- CREATE DATABASE /*!32312 IF NOT EXISTS*/ `wrk` /*!40100 DEFAULT CHARACTER SET latin1 */; USE `wrk`; -- -- Table structure for table `wrk` -- DROP TABLE IF EXISTS `wrk`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `wrk` ( `id` int(11) NOT NULL, `work` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `wrk` -- LOCK TABLES `wrk` WRITE; /*!40000 ALTER TABLE `wrk` DISABLE KEYS */; INSERT INTO `wrk` VALUES (0,'TEST_WORK'); /*!40000 ALTER TABLE `wrk` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -- Dump completed on 2017-01-19 23:30:00 root@db01:~
Nous allons maintenant envoyer nos deux fichiers sur notre second serveur. Pour cela, nous utilisons la commande SCP (Secure CoPy).
###Envoi de l'export de la base wrk. root@db01:~# scp /var/tmp/dump_wrk.sql root@192.168.1.44:/var/tmp/dump_wrk.sql The authenticity of host '192.168.1.44 (192.168.1.44)' can't be established. ECDSA key fingerprint is 12:70:5a:21:06:b6:16:de:61:64:e3:e8:20:bd:6f:e6. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.44' (ECDSA) to the list of known hosts. root@192.168.1.44's password: dump_wrk.sql 100% 1970 1.9KB/s 00:00 ###Envoi de l'export de la base users. root@db01:/var/tmp# scp /var/tmp/dump_users.sql root@192.168.1.44:/var/tmp/dump_users.sql root@192.168.1.44's password: dump_users.sql 100% 1990 1.9KB/s 00:00 root@db01:
Vérifions que nos fichiers sont bien copiés sur notre second serveur.
root@db02:~# ls -rtl /var/tmp/ total 8 -rw-r--r-- 1 root root 1970 janv. 19 18:06 dump_wrk.sql -rw-r--r-- 1 root root 1990 janv. 19 18:08 dump_users.sql root@db02:~#
Passons désormais à l’import de nos bases de données sur notre second serveur, DB02.
Import de la base de données.
Sur DB02 :
Considérons que notre second serveur dispose d’une installation propre de MariaDB. Si nous regardons la configuration de nos bases sur ce serveur, nous avons ceci :
###Connexion au service de base de données. root@db02:~# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 42 Server version: 10.0.28-MariaDB-0+deb8u1 (Debian) Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. ###Commande permettant de lister les bases de données disponibles. MariaDB [(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+ 3 rows in set (0.00 sec) MariaDB [(none)]>
Désormais, avant d’importer nos bases et leurs données, nous allons créer deux bases ayant le même nom.
###Connexion au service de base de données. root@db02:~# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 37 Server version: 10.0.28-MariaDB-0+deb8u1 (Debian) Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. ###Creation de la base de données "users". MariaDB [(none)]> CREATE DATABASE users; Query OK, 1 row affected (0.00 sec) ###Creation de la base de données "wrk". MariaDB [(none)]> CREATE DATABASE wrk; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | users | | wrk | +--------------------+ 5 rows in set (0.00 sec) MariaDB [(none)]>
Nous pouvons désormais passer à l’import de nos bases de données. Pour cela, nous utilisons directement la commande mysql.
###Import de la base de données users. root@db02:~# mysql -u root -p users < /var/tmp/dump_users.sql Enter password: ###Import de la base de données wrk. root@db02:~# mysql -u root -p wrk < /var/tmp/dump_wrk.sql Enter password: root@db02:~#
Les bases étant importées, nous pouvons vérifier si celles-ci disposent bien des données correspondantes.
###Connexion au service de base de données. root@db02:~# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 44 Server version: 10.0.28-MariaDB-0+deb8u1 (Debian) Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. ###On se positionne sur la base de données wrk. MariaDB [(none)]> use wrk; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed ###Selection des données de la table wrk. MariaDB [wrk]> SELECT * FROM wrk; +----+-----------+ | id | work | +----+-----------+ | 0 | TEST_WORK | +----+-----------+ 1 row in set (0.00 sec) MariaDB [wrk]>
Ainsi, nous retrouvons bien les données que nous avions sur notre ancien serveur ; l’import s’est donc bien déroulé et nos bases sont accessibles.
Source:
https://www.supinfo.com/articles/single/3943-export-import-une-base-donnees-mariadb


