No Description

Olivier Massot a64dec8395 transform the logging file handler into a rotative one 4 years ago
core a64dec8395 transform the logging file handler into a rotative one 4 years ago
.gitignore 357b4ea457 gitignore 5 years ago
clonedb.py d497880f11 attempt to fix the unknown column-stats error 4 years ago
readme.md c2921b417e implements the mysql user management and backward compat mysql 5/8 5 years ago
requirements.txt 9ca270ebf7 working version 5 years ago
settings.yml.dist 350c69d3f1 add new typo3 db to the settings.yml.dist file 5 years ago

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 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 <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.
  • grant: une liste des users à qui seront accordés les droits d'admin sur cette base