Skip to content

smi2/phpMigrationsClickhouse

Repository files navigation

phpMigrationsClickhouse

Установка

git clone https://github.com/smi2/phpMigrationsClickhouse.git
cd phpMigrationsClickhouse


git submodule init
git submodule update --init --recursive


# copy example config
cp config.default.php config.php


mcedit config.php

Запуск

./migration.sh help
# php _migration.php help

./migration.sh run 

./migration.sh run [--config=/path/cnf.php --server=config_id]

Откроет выбор сервера/конфигурации и далее выбор миграции.

Если вызвать execone производит миграцию одного указанного файла

./migration.sh execone --file=020_test_db.sql [--config=/path/cnf.php --server=config_id]

Config

<?php
return
[
    'clickhouseProduction'=>
        [
            'clickhouse'=>['host' => 'prod.clickhouse.host.smi2.ru', 'port' => '8123', 'username' => 'UUU',  'password' => 'PPP'],
            'repository'=>__DIR__ . '/../ClickhouseMigrations/',
            'path'=>'ch2.production',
            'split'=>['query'=>';;'],
        ],
    'clickhouseDEVServer'=>
        [
            'clickhouse'=>['host' => '192.168.1.20', 'port' => '8123', 'username' => 'UUU',  'password' => 'PPP'],
            'repository'=>__DIR__ . '/../ClickhouseMigrations/',
            'path'=>'ch.develop',
            'split'=>['query'=>';;'],
        ]
];

ClickhouseMigrations Git Repository

Миграции хранящиеся в вашем GIT репозитории, в формате

/git_repo_root/[PATH]/[Файлы]

Для конфигурации

       'repository'=>'/var/ClickhouseMigrations/',
       'path'=>'ch.develop',

Означает что по этому шаблону будут искаться файлы с миграциями /var/ClickhouseMigrations/ch.develop/*.[php|sql] и при открытии будет выполнен git pull

Формат шаблонов PHP

setAutoSplitQuery - разделитель запросов

setTimeout - время выполнение каждого запроса

addSqlUpdate - что накатываем

addSqlDowngrade - что откатываем

<?php
$cluster_name='sharovara'; // задаем имя кластера 
$mclq=new ClickHouseDB\Cluster\Migration($cluster_name); // класс миграции 
$mclq->setTimeout(100.1)->setAutoSplitQuery(';;')->setErrorAction('undo');
$mclq->addSqlUpdate('

DROP DATABASE IF EXISTS shara
;;
CREATE DATABASE IF NOT EXISTS shara

');
$mclq->addSqlDowngrade('DROP DATABASE IF EXISTS shara');

return $mclq;

About

Migrations for Clickhouse cluster

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published