Migrations for Clickhouse cluster
PHP Shell
Latest commit 9d7c3c4 Dec 12, 2016 @isublimity isublimity init
Permalink
Failed to load latest commit information.
example init Sep 28, 2016
phpClickHouse @ 9579a37
src init Dec 11, 2016
vendor init Sep 28, 2016
.gitignore
.gitmodules add shell Nov 5, 2016
LICENSE
README.md init Dec 11, 2016
_migration.php init Nov 5, 2016
composer.json init Sep 28, 2016
config.default.php init Nov 5, 2016
migration.sh init Nov 5, 2016
update.submodule.sh

README.md

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;

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

/* JSON:{"ClusterName":"sharovara","setTimeout":100,"setAutoSplitQuery":";;","setErrorAction":"undo"} */

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

/* DOWN */
DROP DATABASE IF EXISTS shara