# CloneDB Script de clonage des bases de données MySql ## Usage Usage: python3 clonedb.py [-v] [-y] [...] 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 `` * `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