|
|
@@ -1,115 +0,0 @@
|
|
|
-# CloneDB
|
|
|
-
|
|
|
-Script de clonage des bases de données MySql
|
|
|
-
|
|
|
-## Usage
|
|
|
-
|
|
|
- Usage:
|
|
|
- python3 clonedb.py [-v] [-y] [<opname>...]
|
|
|
- python3 clonedb.py (-h | --help)
|
|
|
- python3 clonedb.py --version
|
|
|
-
|
|
|
- Options:
|
|
|
- -y, --yes Do not ask for confirmation
|
|
|
- -h --help Show this screen.
|
|
|
- --version Show version.
|
|
|
-
|
|
|
-
|
|
|
-## Installation
|
|
|
-
|
|
|
-> requiert python 3.6+ et mysql: `sudo apt-get install python3 python3-pip mariadb-client-10.3`
|
|
|
-
|
|
|
- git clone https://gitlab.2iopenservice.com/olivier/clonedb
|
|
|
- cd clonedb
|
|
|
- pip3 install -r requirements.txt
|
|
|
-
|
|
|
-> mysqldump doit être en version 10+
|
|
|
-
|
|
|
-## Configuration
|
|
|
-
|
|
|
-### Structure générale
|
|
|
-
|
|
|
-Pour configurer les opérations de clônage, ouvrez le fichier `settings.yml`.
|
|
|
-La structure du fichier est la suivante:
|
|
|
-
|
|
|
- servers:
|
|
|
- [server_name]:
|
|
|
- host: localhost
|
|
|
- description: ...
|
|
|
- mysql:
|
|
|
- port: 3306
|
|
|
- username: user
|
|
|
- password: my_password
|
|
|
- ssh:
|
|
|
- key_file: ~/.ssh/id_rsa
|
|
|
- port: 22
|
|
|
- user: user
|
|
|
-
|
|
|
- users:
|
|
|
- [username]:
|
|
|
- hosts: localhost
|
|
|
- pwd: [password]
|
|
|
-
|
|
|
- operations:
|
|
|
- [op_name]:
|
|
|
- dbname: my_db
|
|
|
- from_server: [server_name]
|
|
|
- to_server: [server_name]
|
|
|
- is_default: True
|
|
|
- ignore_tables: []
|
|
|
- ignore_views: []
|
|
|
- structure_only: []
|
|
|
- compress: True
|
|
|
- filter_tables: []
|
|
|
- grant: []
|
|
|
-
|
|
|
-
|
|
|
-### Configurer les serveurs
|
|
|
-
|
|
|
-Ajouter une entrée dans la section `servers` pour
|
|
|
-le serveur d'origine et le serveur cible de l'opération de clônage.
|
|
|
-
|
|
|
-> NB: Si le serveur est un docker, renseignez `host` de la manière suivante: `docker:[docker_name]`
|
|
|
-
|
|
|
-On peut ajouter une courte description, par exemple "Prod", ou "Test"
|
|
|
-
|
|
|
-Pour chaque serveur, ajouter une section `mysql` dans laquelle
|
|
|
-devront apparaitre les paramètres de connexion au serveur mysql:
|
|
|
-port, username, password
|
|
|
-
|
|
|
-Si l'accès au serveur doit passer par un tunnel SSH, ajouter
|
|
|
-une section `ssh`, dans laquelle
|
|
|
-pourront apparaitre les paramètres de connexion SSH:
|
|
|
-`key_file` (chemin d'accès à la clé privée ssh), `port`, `user`
|
|
|
-
|
|
|
-> Les noms donnés à chaque serveur (`[server_name]`) n'ont pas d'importance pour l'exécution de clonedb
|
|
|
-
|
|
|
-### Configurer les users (facultatif)
|
|
|
-
|
|
|
-Il est possible d'ajouter une section `users`. Les users listés dans cette section
|
|
|
-seront créés avant toute opération de clonage **seulement s'ils n'existent pas déjà**.
|
|
|
-Les users ne seront jamais remplacés.
|
|
|
-
|
|
|
-Les paramètres sont:
|
|
|
-
|
|
|
-* `host`: l'host correspondant ('localhost' par défaut)
|
|
|
-* `pwd`: le mot de passe
|
|
|
-
|
|
|
-### Configurer les opérations de clônage
|
|
|
-
|
|
|
-Enfin, ajouter une entrée dans la section `operations` et définir au moins les trois paramètres suivants:
|
|
|
- * dbname: le nom de la base de données à cloner
|
|
|
- * from_server: le nom du serveur source tel qu'il a été défini à la section servers
|
|
|
- * to_server: le nom du serveur cible tel qu'il a été défini à la section servers
|
|
|
-
|
|
|
-On pourra aussi ajouter les paramètres suivants:
|
|
|
-
|
|
|
-* `is_default`: l'opération sera lancée par défaut, losque *clonedb* est lancé sans l'argument `<opname>`
|
|
|
-* `compress`: compresse les dumps du serveur source; diminue le volume de données mais augmente la charge du serveur source,
|
|
|
-* `ignore_tables`: liste de noms de tables ou d'expressions régulières, les tables correspondantes seront ignorées
|
|
|
-* `structure_only`: liste de noms de tables ou d'expressions régulières, seule la structure des tables
|
|
|
-correspondantes sera clonée, pas les données contenues.
|
|
|
-* `ignore_views`: liste de noms de tables ou d'expressions régulières, les vues correspondantes seront ignorées
|
|
|
-* `filter_tables`: liste de noms de tables ou d'expressions régulières; si une liste est donnée,
|
|
|
-seules les tables correspondantes seront traitées.
|
|
|
-* `grant`: une liste des users à qui seront accordés les droits d'admin sur cette base
|