# CloneDB Script de clonage des bases de données MySql ## Usage Usage: clonedb.py [-v] [-y] [] clonedb.py (-h | --help) clonedb.py --version Options: -y, --yes Do not ask for confirmation -h --help Show this screen. --version Show version. ## Installation > requiert python 3.6+: `sudo apt-get install python3 python3-pip` git clone https://gitlab.2iopenservice.com/olivier/clonedb cd clonedb pip3 install -r requirements.txt ## Configuration Pour configurer les opérations de clônage, ouvrez le fichier `settings.yml`. La structure du fichier est la suivante: servers: [server_name]: host: host description: ... mysql: port: 3306 username: user password: my_password ssh: key_file: ~/.ssh/id_rsa port: 22 user: user 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: [] ### Configuration minimum Ajouter une entrée dans la section `servers` pour le serveur d'origine et le serveur cible de l'opération de clônage. 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 Ensuite, 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. ## Workarounds * `The user specified as a definer ('username'@'%') does not exist`: add a user account to the targeted mysql server named `username@%` with admin privileges