Bez popisu

Olivier Massot ec37c90c0c mysql pipe handler - log only once před 5 roky
__pycache__ 177a8e3220 v0.1 - reproduit l'existant před 5 roky
core 2d0c6fd0a8 add docker support před 5 roky
.gitignore 5f9ed89c2d v0.3 před 5 roky
clonedb.py ec37c90c0c mysql pipe handler - log only once před 5 roky
readme.md 5f9ed89c2d v0.3 před 5 roky
requirements.txt 9ca270ebf7 working version před 5 roky
settings.yml.dist f9833fc53a add the settings.yml.dist file před 5 roky

readme.md

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 mysql-client

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: localhost
    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: []

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

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