dbmigrate.php
68 lines
| 3.5 KiB
| text/x-php
|
PhpLexer
/ bin / dbmigrate.php
Maarten de Keizer
|
r0 | <?php | |
$base_dir = realpath(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..'); | |||
$config_file = $base_dir . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'dbmigrate' . DIRECTORY_SEPARATOR . 'env.ini'; | |||
$config = parse_ini_file($config_file, true); | |||
$envs = array(); | |||
foreach ($config as $name => $section) | |||
{ | |||
if (substr($name, 0, strlen('env_')) === 'env_') | |||
{ | |||
$envs[substr($name, strlen('env_'))] = $section; | |||
} | |||
} | |||
echo 'Available environments:' . PHP_EOL; | |||
foreach ($envs as $name => $env_config) | |||
echo '* ' . $name . PHP_EOL; | |||
echo PHP_EOL; | |||
echo 'Select the source env:' . PHP_EOL; | |||
$source = trim(fgets(STDIN)); | |||
echo PHP_EOL; | |||
echo 'Select the destination env:' . PHP_EOL; | |||
$dest = trim(fgets(STDIN)); | |||
echo PHP_EOL; | |||
echo 'Please make sure: You want to export the ' . $source . ' database to ' . $dest . '? Y|N' . PHP_EOL; | |||
$confirm = strtolower(trim(fgets(STDIN))); | |||
echo PHP_EOL; | |||
if (in_array($confirm, array('y', 'yes', 'j', 'ja', 'ok')) === false) | |||
exit('Okay, exit!'); | |||
if (file_exists($base_dir . DIRECTORY_SEPARATOR . 'backup') === false) | |||
mkdir($base_dir . DIRECTORY_SEPARATOR . 'backup'); | |||
echo 'Dump source database:' . PHP_EOL; | |||
$source_dump = $file = $base_dir . DIRECTORY_SEPARATOR . 'backup' . DIRECTORY_SEPARATOR . 'dbbackup_' . $source . '_' . date('YmdHis') . '.sql'; | |||
$command = 'mysqldump --add-drop-table --comments --host=' . $envs[$source]['host'] . ' --no-create-db --password=' . $envs[$source]['password'] . ' --port=' . $envs[$source]['port'] . ' --result-file=' . $file . ' --default-character-set=utf8 --user=' . $envs[$source]['user'] . ' ' . $envs[$source]['name']; | |||
echo ' target file: ' . $file . PHP_EOL; | |||
echo ' command: ' . $command . PHP_EOL; | |||
system($command); | |||
echo PHP_EOL . 'Complete' . PHP_EOL . PHP_EOL; | |||
echo 'Dump source database:' . PHP_EOL; | |||
$dest_dump = $file = $base_dir . DIRECTORY_SEPARATOR . 'backup' . DIRECTORY_SEPARATOR . 'dbbackup_' . $dest . '_' . date('YmdHis') . '.sql'; | |||
$command = 'mysqldump --add-drop-table --comments --host=' . $envs[$dest]['host'] . ' --no-create-db --password=' . $envs[$dest]['password'] . ' --port=' . $envs[$dest]['port'] . ' --result-file=' . $file . ' --default-character-set=utf8 --user=' . $envs[$dest]['user'] . ' ' . $envs[$dest]['name']; | |||
echo ' target file: ' . $file . PHP_EOL; | |||
echo ' command: ' . $command . PHP_EOL; | |||
system($command); | |||
echo PHP_EOL . 'Complete' . PHP_EOL . PHP_EOL; | |||
echo 'Load data on destination database:' . PHP_EOL; | |||
$command = 'mysql --host=' . $envs[$dest]['host'] . ' --password=' . $envs[$dest]['password'] . ' --port=' . $envs[$dest]['port'] . ' --default-character-set=utf8 --user=' . $envs[$dest]['user'] . ' --database=' . $envs[$dest]['name'] . ' < ' . $source_dump; | |||
echo ' load sql: ' . $source_dump . PHP_EOL; | |||
echo ' command: ' . $command . PHP_EOL; | |||
system($command); | |||
echo PHP_EOL . 'Complete' . PHP_EOL . PHP_EOL; | |||
echo 'Replace domain information in database:' . PHP_EOL; | |||
$command = 'php vendor\dvdgiessen\dbsr\index.php --host ' . $envs[$dest]['host'] . ' --user ' . $envs[$dest]['user'] . ' --password ' . $envs[$dest]['password'] . ' --database ' . $envs[$dest]['name'] . ' --charset utf8 -- ' . $envs[$source]['domain'] . ' ' . $envs[$dest]['domain']; | |||
echo ' search for: ' . $envs[$source]['domain'] . PHP_EOL; | |||
echo ' replace with: ' . $envs[$dest]['domain'] . PHP_EOL; | |||
echo ' command: ' . $command . PHP_EOL; | |||
system($command); | |||
echo PHP_EOL . 'Complete' . PHP_EOL . PHP_EOL; | |||
echo PHP_EOL . 'Done!' . PHP_EOL . PHP_EOL; |