Как сравнить [закрытые] схемы базы данных MySQL

Путем установки тайм-аута на сокете, socket.connect_ex() становится неблокирование операция. Именно поэтому Вы добираетесь EAGAIN и EALREADY, ошибки при вызове connect_ex() неоднократно в цикл - EAGAIN на первом вызове указывают, что соединение не может быть сразу завершено и происходит в фоновом режиме, и затем EALREADY на последующих вызовах указывает, что существующее соединение все еще происходит и еще не завершилось.

Ваш цикл просто работает, пока соединение наконец не заканчивается успешностью или неуспешностью, неважно, сколько времени это берет. Тайм-аут сокета, который Вы устанавливаете, не играет в ту логику.

, Чтобы сделать, что Вы просите, выполняет Ваш собственный таймер параллельно к циклу соединения и затем закрывают сокет, если таймер протекает прежде socket.connect_ex() возвраты его конечный результат.

, С другой стороны, избавляются от цикла в целом.

Вызов socket.connect_ex() одно время, и если это возвращается EAGAIN затем использование select.select() для ожидания соединения для завершения. Это имеет timeout параметр. Сокет TCP введет перезаписываемое состояние, если незаконченная попытка подключения успешно соединится с сервером. Если select() испытывает таймаут или сообщает об ошибке, закройте сокет вместо этого.

Или, попытайтесь использовать socket.create_connection(), который также имеет timeout параметр.

8
задан 6 revs, 3 users 74% 29 May 2015 в 11:43
поделиться

4 ответа

Navicat может сделать это за вас. Он также синхронизирует схему и / или данные между двумя экземплярами базы данных mysql. Я успешно использовал его в прошлом.

http://www.navicat.com/en/products/navicat_mysql/mysql_overview.html

Здесь есть скриншот инструмента синхронизации данных и структуры:

http://www.navicat.com/en/products/navicat_mysql/mysql_detail_mac.html#7

8
ответ дан 5 December 2019 в 14:06
поделиться

Я использую SQLyog:

http://www.webyog.com/ ru /

Это не бесплатно, но это очень хороший инструмент, который многократно сэкономил стоимость лицензии. Я никоим образом не связан с компанией, а просто использую ряд инструментов MySQL.

Бесплатная пробная версия (30 дней) доступна по адресу здесь .

enter image description here

4
ответ дан 5 December 2019 в 14:06
поделиться

Лучшее что нужно сделать, это попробовать некоторые тесты производительности, которые уже существуют. Всегда лучше использовать проверенные тесты, если вы полностью не уверены, что ваши данные и загрузка базы данных будут значительно отличаться от традиционных шаблонов использования (но тогда для чего вы используете базу данных?). Я собираюсь украсть мой собственный ответ от ServerFault :

Существует большое количество тестов там для другой базы данных MySQL двигатели. Есть приличный сравнение MyISAM, InnoDB и Falcon на производительность Percona MySQL Блог , см. здесь .

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

-7
ответ дан 5 December 2019 в 14:06
поделиться

Возможно, немного поздно для вечеринки, но я только что написал простой инструмент на PHP для сравнения схем базы данных MySQL:

PHP-скрипт для сравнения схем базы данных MySQL

Он экспортирует схему и сериализует ее перед сравнением. Это позволяет сравнивать базы данных, которые находятся на разных хостах (где оба хоста могут быть недоступны для PHP-скрипта).

Изменить:

Python Script

7
ответ дан 5 December 2019 в 14:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: