2010-11-05 28 views
27

Nếu tôi thay thế máy chủ MySQL 5.1 bằng MariaDB Server (Maria & kho XtraDB) thay vì MySQL (MyISAM & InnoDB), sẽ sử dụng phần mềm máy khách MySQL (bao gồm các ứng dụng được tạo bằng PHP 5.2 và Java SE 1.6) ...MySQL có thể được thay thế bằng MariaDB hoặc có những thứ cần thay đổi trong trường hợp này không?

  1. chỉ hoạt động mà không có bất kỳ thay đổi nào (có thể có hồi quy nhỏ)?
  2. Hoặc tôi sẽ phải thay thế/cấu hình lại trình điều khiển máy khách (như sử dụng một lớp trình điều khiển JDBC khác và chuỗi kết nối)?
  3. Hoặc tôi có thậm chí thay đổi mã ứng dụng không?
+1

chỉ vì tò mò, tại sao? – cherouvim

+2

@cherouvim, tôi cho rằng bạn có thể có một đầu mối ;-) – Ivan

+1

nó có liên quan với từ "oracle" không? – cherouvim

Trả lời

36

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

Tất cả các kết nối MySQL (PHP, Perl, Python, Java, MyODBC, Ruby, MySQL C nối vv) hoạt động không thay đổi với MariaDB.

+0

gọn gàng, nhưng hoàn hảo. – paulotorrens

+2

Điều này không hoàn toàn đúng. MariaDB có hai mức mã hóa mật khẩu: cũ và mới. Nếu tài khoản DB của bạn được cấu hình để sử dụng phương thức cũ, các kết nối mysql không thể kết nối với nó. –

+0

[Erick Robertson] (http://stackoverflow.com/users/300311/erick-robertson) Tôi nghĩ chúng ta phải đối mặt với cùng một vấn đề, Vậy làm thế nào để giải quyết nó? Tôi đã sao lưu của MySql (mysqldump) và nâng cấp MySql MariaDB vì vậy bây giờ tôi đang khôi phục cơ sở dữ liệu để MariaDB và Iam không thể xem dữ liệu của bảng Nếu bạn biết giải pháp xin vui lòng ansewear tôi – Namatullah

-1

Trái với niềm tin phổ biến, Trình kết nối mặc định/Trình điều khiển JDBC J để kết nối và tương tác với MySQL trong Java không hoạt động tốt với MariaDB. Để làm việc với MariaDB, bạn cần phải có ứng dụng của bạn sử dụng trình điều khiển Drizzle hoặc SkySQL.

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

+2

Tôi đã đọc bài viết bạn đã liên kết với và tôi không thể thấy điểm đó là gì. Hơn nữa, nó nói rằng không có lý do để thay thế các kết nối và có một bình luận nói rằng Mưa phùn không phải là hoàn thành. – Ivan

1

Tôi đã sử dụng Mariadb như thay thế cho MySQL Oracle trong nhiều năm. Nó nhanh hơn và rất đáng tin cậy. Chỉ cần ít chú ý trong apt, nhưng không có gì nghiêm trọng. Ngoài ra, có một chi tiết nhỏ với Mariadb; nó đang nhìn thấy [lỗi] "PHP Cảnh báo: mysql_connect(): Tiêu đề và thư viện khách phiên bản nhỏ không khớp" trong nhật ký. Tôi chưa tìm thấy giải pháp nào khác ngoài việc bắt đầu biên dịch theo cách thủ công: 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

chỉ còn làm việc mà không bất kỳ thay đổi (với hồi quy nhỏ có thể)?

Bạn không nên gặp bất kỳ sự cố nào miễn là bạn thay thế bằng cùng một phiên bản. Nếu bạn hiện đang sử dụng MySQL 5.1, bạn có thể thay thế bằng MariaDB 5.1. Nếu bạn đang sử dụng 5.5, hãy sử dụng cái tương ứng. MariaDB v5.2 và v5.3 và các phiên bản nâng cao của 5.1.

Hoặc tôi sẽ phải thay thế/định cấu hình lại trình điều khiển máy khách (như sử dụng một lớp điều khiển JDBC khác và chuỗi kết nối)?

Bạn không nên. Cả MySQL và MariaDB đều sử dụng cùng một giao thức và cú pháp tổng thể, nhưng có thể có một vài ngoại lệ trong một số trường hợp. URL được trích dẫn trong câu trả lời khác là tài nguyên tuyệt vời: http://kb.askmonty.org/v/mariadb-versus-mysql

Về giấy phép lái xe, có sự khác biệt nếu bạn dự định phân phối dự án của mình về mặt thương mại. Trong trường hợp đó, tôi khuyên bạn nên kiểm tra lại các điều khoản cấp phép và nếu bạn có bất kỳ mối lo ngại nào, hãy sử dụng các phiên bản kết nối của MariaDB/SkySQL như được đề xuất trong câu trả lời khác. Kiểm tra http://www.skysql.com/downloads/java-cc-connectors-mariadb để biết chi tiết.

Hoặc tôi có thậm chí thay đổi mã ứng dụng không?

Mã ứng dụng phải không thay đổi.

0

Chỉ cần một ít phản hồi yêu cầu khả năng tương thích với trình điều khiển mysql/CodeIgniter. Tôi gặp phải các vấn đề về các thuộc tính BIT vài phút trước.

Giá trị không được lấy lại từ máy chủ. Nó luôn trống rỗng. Tôi đã sử dụng cấu hình cơ sở dữ liệu CI chuẩn đang sử dụng trình điều khiển "mysql". Sau khi thay đổi trình điều khiển trong tệp database.php thành "mysqli" đã được giải quyết.

Chỉ cần lưu ý rằng có thể có một số khác biệt nếu bạn đang sử dụng trình điều khiển mysql cũ.

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

phiên bản MariaDB client API 5.5.40

Các vấn đề liên quan