2010-11-05 1 views
27

Если я заменил сервер MySQL 5.1 сервером MariaDB (Maria XtraDB) вместо MySQL (MyISAM & InnoDB), будет работать большинство клиентских программ MySQL (включая приложения, выполненные с PHP 5.2 и Java SE 1.6) ...Может ли MySQL без проблем быть заменен на MariaDB или есть что изменить в этом случае?

  1. просто остается без изменений (с незначительными регрессиями)?
  2. Или мне придется заменить/перенастроить клиентские драйверы (например, использовать другой класс драйвера JDBC и строку подключения)?
  3. Или я могу изменить код приложения?
+1

просто из любопытства, почему? – cherouvim

+2

@cherouvim, я полагаю, у вас, вероятно, есть ключ ;-) – Ivan

+1

Это связано с словом «оракул»? – cherouvim

ответ

36

http://kb.askmonty.org/v/mariadb-versus-mysql

Все разъемы MySQL (PHP, Perl, Python, Java, MyODBC, Ruby, MySQL C разъем и т.д.) работает без изменений с MariaDB.

+0

Яркая, но безупречная. – paulotorrens

+2

Это не совсем так. MariaDB имеет два уровня шифрования паролей: старый и новый. Если ваша учетная запись БД настроена на использование старого метода, соединители mysql не могут подключиться к нему. –

+0

[Erick Robertson] (http://stackoverflow.com/users/300311/erick-robertson) Я думаю, что мы столкнулись с той же проблемой, и как ее решить? Я получил резервную копию MySql (mysqldump) и обновил MySql до MariaDB, так что теперь я восстановил базу данных до MariaDB и Iam не смог увидеть данные таблицы Если вы знаете решение, пожалуйста, помогите мне – Namatullah

-1

Вопреки распространенному мнению, драйвер Connector/J JDBC по умолчанию для подключения к MySQL и взаимодействия с ним в Java не очень хорошо работает с MariaDB. Чтобы работать с MariaDB, вам нужно, чтобы ваше приложение использовало драйвер Drizzle или SkySQL.

http://kb.askmonty.org/en/mariadb-faq-is-there-any-java-connector-for-mariadb-than-the-one-from-mysql

+2

Я прочитал статью, которую вы и я не могу понять, в чем дело. Кроме того, в нем говорится, что нет причин для замены соединителя, и есть комментарий, который говорит, что «Дождь» не завершен. – Ivan

1

Я использовал MariaDB в качестве замены для MySQL Oracle в течение многих лет. Это быстрее и очень надежно. Нужно просто мало внимания в apt, но ничего серьезного. Кроме того, есть небольшая деталь с Мариадбом; он видит [ошибку] ​​«Предупреждение PHP: mysql_connect(): несогласование малой версии заголовков и клиентской библиотеки» в журналах. Я не нашел другого решения для этого, кроме как начать вручную компиляцию: askMonty.

$php -i | grep 'Client API' 

Client API version => 5.3.7-MariaDB 
Client API library version => 5.3.7-MariaDB 
Client API header version => 5.1.61 
Client API version => 5.3.7-MariaDB 
1

просто продолжать работать без каких-либо изменений (с незначительными регрессиями возможно)?

У вас не должно возникать проблем, если вы заменяете ту же версию. Если вы используете MySQL 5.1, вы можете заменить его на MariaDB 5.1. Если вы используете 5.5, используйте соответствующий. MariaDB v5.2 и v5.3 и расширенные версии 5.1.

Или мне придется заменить/перенастроить клиентские драйверы (например, использовать другой класс JDBC и строку подключения)?

Вы не должны. MySQL и MariaDB используют один и тот же протокол и общий синтаксис, но в некоторых случаях может быть несколько исключений. URL, цитируемый в другом ответе, является отличным ресурсом: http://kb.askmonty.org/v/mariadb-versus-mysql

Что касается лицензий водителей, существуют различия, если вы планируете распространять свой проект на коммерческой основе. В этом случае я рекомендую вам дважды проверить условия лицензии, и если у вас есть какие-либо проблемы, используйте версии разъемов MariaDB/SkySQL, как это предлагается в другом ответе. Проверьте http://www.skysql.com/downloads/java-cc-connectors-mariadb.

Или я могу изменить код приложения?

Код приложения не должен изменяться.

0

Просто небольшая обратная связь, требующая совместимости с драйвером mysql/CodeIgniter. Несколько минут назад я столкнулся с проблемами типов атрибутов BIT.

Значение не было восстановлено с сервера. Это всегда было пусто. Я использовал стандартную конфигурацию базы данных CI, которая использует драйвер «mysql». После смены драйвера в файле database.php на «mysqli» проблема была решена.

Просто голова, что могут быть некоторые отличия, если вы используете старый драйвер mysql.

$db['default']['dbdriver'] = 'mysqli'; 

MariaDB клиент API версии 5.5.40

Смежные вопросы