|
|
4 years ago | |
|---|---|---|
| core | 4 years ago | |
| .gitignore | 5 years ago | |
| clonedb.py | 4 years ago | |
| readme.md | 5 years ago | |
| requirements.txt | 5 years ago | |
| settings.yml.dist | 5 years ago |
Script de clonage des bases de données MySql
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.
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+
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: []
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
hostde 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
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 passeEnfin, ajouter une entrée dans la section operations et définir au moins les trois paramètres suivants:
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éesstructure_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éesfilter_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