暫無描述

Olivier Massot 2d0c6fd0a8 add docker support 5 年之前
__pycache__ 177a8e3220 v0.1 - reproduit l'existant 5 年之前
core 2d0c6fd0a8 add docker support 5 年之前
.gitignore 35a7bea8c6 optimize and document 5 年之前
clonedb.py 2d0c6fd0a8 add docker support 5 年之前
readme.md 35a7bea8c6 optimize and document 5 年之前
requirements.txt 9ca270ebf7 working version 5 年之前
settings.yml 35a7bea8c6 optimize and document 5 年之前

readme.md

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 <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.

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