Bạn có thể nhập MariaDB vào MySQL không?
Tôi đang cố gắng chuyển trang web của mình từ Windows Server chạy IIS 10, PHP và MYSQL 8 sang CentOS bằng Maria DB Show Tôi đã xuất DB với MYSQL Workbench sang một tệp chứa yêu tinh nhưng tôi không thể lấy nó để nhập trong PhPMYAdmin. tôi nhận được lỗi này. Có ai biết cách tốt nhất để làm điều này? Lỗi truy vấn SQL TẠO BẢNG `wp_commentmeta` ( `meta_id` bigint unsigned NOT NULL AUTO_INCREMENT, `comment_id` bigint unsigned NOT NULL DEFAULT '0', `meta_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, `meta_value longtext` CHATEf8mb4 COLLATE . Tài liệu
Tôi đã giải quyết vấn đề của mình Tôi đã sử dụng một plugin WordPress có tên là "Di chuyển tất cả trong một wp" và nó hoạt động hoàn hảo Bình luậnNội dung được sao chép trên trang web này là tài sản của chủ sở hữu tương ứng và nội dung này không được MariaDB xem xét trước. Quan điểm, thông tin và ý kiến được thể hiện bởi nội dung này không nhất thiết đại diện cho quan điểm của MariaDB hoặc bất kỳ bên nào khác Chúng tôi đang nhận được nhiều yêu cầu di chuyển từ MariaDB sang MySQL. Dưới đây là hướng dẫn nhanh và các bước để làm theo Trên máy chủ MariaDB
Trên máy chủ MySQL
Tiện ích tải & kết xuất MySQL Shell là phương pháp tốt nhất để thực hiện kết xuất logic. Những bãi chứa đó có thể được sử dụng để sao lưu logic nhưng cũng để di chuyển từ các phiên bản không thể nâng cấp vật lý tại chỗ Đây là trường hợp di chuyển sang đám mây chẳng hạn Cũng không thể nâng cấp tại chỗ khi chúng tôi muốn di chuyển từ phiên bản cũ hơn (hoặc thực hiện hạ cấp) của MySQL. Đây chính xác là những gì tôi đang trình bày trong bài viết này. di chuyển từ MariaDB 10. 6 đến MySQL 8. 0 Trình kiểm tra nâng cấp vỏ MySQLNếu chúng tôi muốn nâng cấp từ MySQL 5. 7 đến 8. 0, nên sử dụng MySQL Shell Upgrade Checker Tuy nhiên, tiện ích MySQL Shell Upgrade Checker không hỗ trợ bất kỳ phiên bản nào dưới 5. 7, cũng không phải MariaDB Tôi muốn nhấn mạnh rằng Trình kiểm tra nâng cấp vỏ MySQL
Cơ sở dữ liệu tôi đã sử dụng cho quá trình di chuyển này là cơ sở dữ liệu nhân viên và sbtest được tạo bởi Trong toàn bộ quá trình di chuyển, sysbench tạo ra các giao dịch trên hệ thống (được kết nối với phiên bản MariaDB) Kết xuất logic của MariaDBBây giờ chúng ta sẽ kết xuất dữ liệu (logic dump) bằng cách sử dụng MySQL Shell Dump & Load. Quá trình kết xuất được thực hiện song song và được lưu trữ cục bộ trên đĩa dumpInstance() coi MariaDB là MySQL 5. 5 – lưu ý rằng GTID không tương thích giữa cả hai nền tảngKết xuất nhanh và chúng tôi đã có thể tải nó lên MySQL 8. 0 Chúng tôi cũng sẽ tận dụng cơ hội để chuyển sang bộ ký tự mới. UTF8mb4 Tải kết xuất vào MySQL 8. 0Bạn nên tải người dùng trước (nếu chúng tôi định giữ họ). Người dùng được yêu cầu nếu định nghĩa được chỉ định với chế độ xem. Trong trường hợp chúng tôi không muốn chỉ định các trình xác định, bạn cần thực hiện kết xuất logic bằng cách sử dụng tùy chọn tương thích strip_definers như thế này MariaDB JS> util.dumpInstance('/home/fred/dump/maria-10.6.7', {'compatibility': ['strip_definers']}) Trước tiên, chúng tôi tải tất cả các định nghĩa lược đồ và bảng bằng tùy chọn MariaDB> CREATE USER repl@'%' IDENTIFIED by 'repl_passwd'; MariaDB> GRANT REPLICATION SLAVE ON *.* TO repl@'%';0 set false. Chúng ta cũng cần bỏ qua phiên bản của kết xuất Khi tất cả các lược đồ và bảng được tải, chúng tôi sửa đổi bộ ký tự mặc định như thế này Khi tất cả các sửa đổi được thực hiện, chúng tôi có thể tải dữ liệu song song nhiều chủ đề có thể được chỉ địnhVấn đề tương thích Cũng có thể MySQL Shell Dump không hoạt động với MariaDB vì nó không được hỗ trợ. Ví dụ: tùy thuộc vào định nghĩa dữ liệu của bạn, có thể cần phải tắt kết xuất bằng cách sử dụng khối. Điều này sẽ làm giảm tốc độ của các hoạt động kết xuất và tải Di chuyển trực tiếpThông thường khi chúng ta muốn thực hiện migration với thời gian chết tối thiểu, chúng ta phải sử dụng bản sao. Lưu lượng truy cập vào ứng dụng không cần phải dừng trong quá trình kết xuất, trong khi khôi phục dữ liệu cho máy chủ mới Vì vậy, khi máy chủ mới sẵn sàng, nó cần bắt kịp tất cả các giao dịch được thực hiện trong khoảng thời gian đó Bản sao không đồng bộ sau đó được sử dụng để bắt kịp và chỉ khi máy chủ cũ và máy chủ mới được đồng bộ hóa, chúng tôi mới có thể quyết định chuyển lưu lượng (chuyển đổi) sang máy chủ mới Bản sao có hoạt động giữa MariaDB và MySQL 8 không. 0? MySQL cho phép sao chép từ phiên bản cũ sang phiên bản mới (không ngược lại). Vì vậy, nếu ứng dụng của bạn không sử dụng các tính năng dành riêng cho MariaDB, thì đây hoàn toàn không phải là vấn đề Tôi đã thảo luận với một người bạn trong Percona Live và anh ấy giải thích với tôi rằng anh ấy đã sử dụng kỹ thuật này để di chuyển tất cả cơ sở dữ liệu của mình (sản xuất và phát triển) từ MariaDB sang MySQL 8. 0. Điều đó đại diện cho hàng terabyte dữ liệu Chuẩn bị nhân rộngtừ chối trách nhiệm Một số từ xúc phạm có thể xuất hiện trong một số lệnh. Trong MySQL, chúng tôi chú ý rất nhiều đến điều đó và chúng tôi đang xóa những từ xúc phạm đó ở mọi nơi, lệnh, nhận xét, kết quả, mã… Để sao chép từ MariaDB sang MySQL 8. 0, trước tiên chúng tôi cần một người dùng chuyên dụng MariaDB> CREATE USER repl@'%' IDENTIFIED by 'repl_passwd'; MariaDB> GRANT REPLICATION SLAVE ON *.* TO repl@'%'; Trong thư mục nơi chúng tôi lưu trữ kết xuất, có một tệp tên là MariaDB> CREATE USER repl@'%' IDENTIFIED by 'repl_passwd'; MariaDB> GRANT REPLICATION SLAVE ON *.* TO repl@'%';1 chứa tất cả siêu dữ liệu của kết xuất Chúng tôi sẽ sử dụng tệp đó để lấy tên và vị trí của tệp nhật ký nhị phân mà từ đó chúng tôi cần bắt đầu quá trình sao chép @. jsonBắt đầu sao chépTrên MySQL 8. 0, nếu chúng tôi muốn sử dụng GTID (luôn được khuyến nghị), chúng tôi cần thay đổi chế độ GTID để cho phép sao chép từ máy chủ MariaDB MySQL> SET PERSIST gtid_mode=on_permissive; Sau đó, chúng ta có thể thiết lập bản sao MySQL> CHANGE REPLICATION SOURCE TO source_host='localhost', source_port=10607, source_user='repl', source_password='repl_passwd', source_log_file='mariab-bin.000004', source_log_pos=20972403; Và chúng ta có thể bắt đầu bản sao và đợi độ trễ giảm xuống MySQL> START REPLICA; MySQL> SHOW REPLICA STATUS\G Kết luậnChúng tôi hiện đã sẵn sàng chuyển tất cả lưu lượng truy cập (sysbench) sang MySQL 8 mới. 0 và chúng tôi có thể gỡ bỏ máy chủ MariaDB cũ Chúng tôi không ngừng cải tiến tiện ích MySQL Shell Dump & Load. Nếu bạn gặp sự cố, vui lòng gửi lỗi hoặc thêm nhận xét về bài viết này Thích di chuyển sang MySQL 8. 0 Câu hỏi thường gặpLàm cách nào tôi có thể di chuyển từ các phiên bản MariaDB cũ hơn (10. 0, 10. 1, 10. 2, 10. 3,. ) sang MySQL 8. 0?Sử dụng chính xác cùng một kỹ thuật tạo các kết xuất hợp lý. Và nhập chúng Tôi đã đề cập đến chủ đề như vậy trong các bài viết trước. [1], [2] Chúng tôi có thể thực hiện nâng cấp tại chỗ từ MariaDB lên MySQL 8 không. 0?Không, MariaDB và MySQL 8. 0 bây giờ quá khác. Những sản phẩm đó đang sử dụng cùng một giao thức nhưng khác nhau. Ngay cả InnoDB giờ cũng khác giữa 2 cơ sở dữ liệu đó Là bản sao từ MariaDB sang MySQL 8. 0 được hỗ trợ?Nếu bạn đặt chế độ GTID thành cho phép ở phía MySQL, nó hầu như sẽ hoạt động mà không gặp vấn đề gì. Tránh sử dụng các tính năng cụ thể của MariaDB vì nó sẽ phá vỡ quá trình sao chép Tôi có thể tải người dùng bằng cách sử dụng MySQL Shell Dump & Load không?Không, vì cú pháp tạo người dùng không còn tương thích giữa cả hai cơ sở dữ liệu. Tuy nhiên, bạn có thể sử dụng plugin MySQL Shell để sao chép người dùng, xem bài viết này Ví dụ tải người dùng MariaDB bằng MySQL ShellVí dụ về plugin sao chép người dùng MySQL Shell
Nếu tôi sử dụng các tính năng cụ thể trong MariaDB như Bảng có phiên bản hệ thống thì sao?Các bảng đó sẽ bị bỏ qua khỏi kết xuất vì loại bảng của chúng là MariaDB> CREATE USER repl@'%' IDENTIFIED by 'repl_passwd'; MariaDB> GRANT REPLICATION SLAVE ON *.* TO repl@'%';3, MySQL Shell Dump & Load chỉ sử dụng MariaDB> CREATE USER repl@'%' IDENTIFIED by 'repl_passwd'; MariaDB> GRANT REPLICATION SLAVE ON *.* TO repl@'%';0 và MariaDB> CREATE USER repl@'%' IDENTIFIED by 'repl_passwd'; MariaDB> GRANT REPLICATION SLAVE ON *.* TO repl@'%';1. Đừng quên rằng nếu các tính năng như vậy được kích hoạt sau khi kết xuất & tải, trong khi quá trình sao chép đang chạy, điều này sẽ phá vỡ quá trình sao chép ThêmChỉ vì tò mò, tôi đã vá MySQL Shell để kiểm tra xem kết quả của Trình kiểm tra nâng cấp MySQL Shell trên MariaDB 10 là gì. 6. 7 Chúng ta hãy xem đầu ra được tạo bằng phiên bản vá lỗi này của MySQL Shell Chúng tôi có thể thấy rằng một số lỗi có liên quan đến việc kiểm tra không thể thực hiện được vì một số bảng MariaDB> CREATE USER repl@'%' IDENTIFIED by 'repl_passwd'; MariaDB> GRANT REPLICATION SLAVE ON *.* TO repl@'%';2 bị thiếu Các lỗi chính cũng liên quan đến 2 bảng trong lược đồ MariaDB> CREATE USER repl@'%' IDENTIFIED by 'repl_passwd'; MariaDB> GRANT REPLICATION SLAVE ON *.* TO repl@'%';3, không có gì phải lo lắng vì những bảng đó không dành riêng cho ứng dụng của tôi MariaDB có tương thích với MySQL không?Trên thực tế MariaDB hoàn toàn tương thích với MySQL vì nó đã (và vẫn đang) được dự định là một sự thay thế hoàn hảo cho MySQL. Một bản cài đặt MySQL tiêu chuẩn đi kèm với một số công cụ hữu ích, chẳng hạn như mysqldump, rất hữu ích cho việc sao lưu. Nó có thể được sử dụng với cả MySQL và MariaDB.
MariaDB và MySQL có giống nhau không?Mặc dù MariaDB là một nhánh của MySQL, hai hệ thống quản lý cơ sở dữ liệu này vẫn khá khác nhau . MariaDB được cấp phép GPL đầy đủ trong khi MySQL sử dụng phương pháp cấp phép kép. Mỗi nhóm luồng xử lý theo một cách khác nhau. MariaDB hỗ trợ rất nhiều công cụ lưu trữ khác nhau. |