PhpMigrationsClickhouse
Migrations for Clickhouse cluster
Install / Use
/learn @smi2/PhpMigrationsClickhouseREADME
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;
Related Skills
node-connect
347.6kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.6kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.6kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
