1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hidu-mysql-schema-sync

Клонировать/Скачать
README.md 5.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 17:31 d5dfbf4

Инструмент для автоматической синхронизации структуры таблиц MySQL

Инструмент предназначен для синхронизации изменений в структуре базы данных с онлайн-базы на локальную среду.

Поддерживаемые функции:

  1. Синхронизация новых таблиц.
  2. Синхронное обновление полей: добавление и изменение.
  3. Синхронное обновление индексов: добавление и изменение.
  4. Предварительный просмотр (только сравнение различий).
  5. Уведомления по электронной почте о результатах изменений.
  6. Поддержка блокировки обновлений таблиц, полей, индексов и внешних ключей.
  7. Поддержка дополнительных таблиц, полей, индексов, внешних ключей в локальной среде по сравнению с онлайн.

Установка

go get -u github.com/hidu/mysql-schema-sync

Конфигурация

Для настройки синхронизации источника и адресата рекомендуется использовать файл конфигурации config.json. В нём также можно настроить отправку уведомлений по электронной почте при возникновении ошибок или изменениях в структуре таблицы.

По умолчанию инструмент не удаляет дополнительные таблицы, поля, индексы и внешние ключи. Если необходимо удалить поля, индексы или внешние ключи, можно использовать параметр -drop.

Пример конфигурации (config.json):

{
      //source:синхронизация источника
      "source":"test:test@(127.0.0.1:3306)/test_0",
      //dest:база данных для синхронизации
      "dest":"test:test@(127.0.0.1:3306)/test_1",
      //alter_ignore:поля и индексы, которые игнорируются при синхронизации
      "alter_ignore":{
        "tb1*":{
            "column":["aaa","a*"],
            "index":["aa"],
            "foreign":[]
        }
      },
      //  tables: таблица для проверки схемы, по умолчанию все. например :["order_*","goods"]
      "tables":[],
      //получатель уведомлений при изменениях или ошибках
      "email":{
          "send_mail":false,
         "smtp_host":"smtp.163.com:25",
         "from":"xxx@163.com",
         "password":"xxx",
         "to":"xxx@163.com"
      }
}

Описание параметров json:

  • source: источник синхронизации.
  • dest: база данных для синхронизации.
  • tables: массив таблиц для синхронизации, если оставить пустым, то синхронизируются все таблицы. Например: ["goods", "order_*"].
  • alter_ignore: параметры для игнорирования изменений, где tableName — имя таблицы. Можно настроить столбцы и индексы с использованием подстановочных знаков *.
  • email: отправка уведомлений по электронной почте после завершения синхронизации.

Запуск

Прямой запуск

mysql-schema-sync -conf mydb_conf.json -sync

Предварительный просмотр и генерация SQL-запросов на изменения

mysql-schema-sync -conf mydb_conf.json 2>/dev/null >db_alter.sql

Использование shell-скрипта для планирования

bash check.sh

Каждый файл конфигурации соответствует отдельной базе данных, и скрипт check.sh выполняет их последовательно. Журнал хранится в текущем каталоге log.

Автоматическое выполнение по расписанию

Добавьте задачу в crontab:

30 * * * * cd /your/path/xxx/ && bash check.sh >/dev/null 2>&1

Описание параметров

mysql-schema-sync [-conf] [-dest] [-source] [-sync] [-drop]

Объяснение:


#mysql-schema-sync -help  
  -conf string
        имя файла конфигурации
  -dest string
        источник mysql, например test@(127.0.0.1:3306)/test_0
  -drop
        удалять ли лишние поля и индексы на локальной стороне, по умолчанию нет
  -source string
        база данных для синхронизации, например: test@(10.10.0.1:3306)/test_1
        если этот параметр указан, параметр -conf будет проигнорирован
  -sync
        синхронизировать ли изменения с базой данных, по умолчанию нет
  -tables string
        таблицы для проверки и синхронизации, оставить пустым для всех таблиц
        например: product_base, order_*

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/hidu-mysql-schema-sync.git
git@api.gitlife.ru:oschina-mirror/hidu-mysql-schema-sync.git
oschina-mirror
hidu-mysql-schema-sync
hidu-mysql-schema-sync
master