Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách chuyển từ MSSQL sang MySQL

Chuyển từ công cụ độc quyền sang công cụ nguồn mở là một xu hướng đang phát triển trong ngành.

Tuy nhiên, việc di chuyển cơ sở dữ liệu không phải là điều gì đó được xem nhẹ.

Trong blog này, hãy xem những gì cần thiết để chuyển từ Microsoft SQL Server sang MySQL Server và cách thực hiện.

Vì vậy, hãy bắt đầu bằng cách xem lại MS SQL là gì và MySQL là gì.

Microsoft SQL Server là một RDBMS rất phổ biến với cấp phép hạn chế và chi phí sở hữu khiêm tốn nếu cơ sở dữ liệu có kích thước đáng kể hoặc được một số lượng lớn khách hàng sử dụng. Nó cung cấp một giao diện rất thân thiện và dễ học, điều này đã dẫn đến một cơ sở người dùng được cài đặt lớn. Giống như các phần mềm RDBMS khác, MS SQL Server được xây dựng dựa trên SQL, một ngôn ngữ lập trình tiêu chuẩn hóa mà quản trị viên cơ sở dữ liệu (DBA) và các chuyên gia CNTT khác sử dụng để quản lý cơ sở dữ liệu và truy vấn dữ liệu chứa trong đó. SQL Server được liên kết với Transact-SQL (T-SQL), một triển khai SQL của Microsoft bổ sung một tập hợp các phần mở rộng lập trình độc quyền cho ngôn ngữ chuẩn.

MySQL là một hệ quản trị cơ sở dữ liệu quan hệ nguồn mở được Oracle hỗ trợ dựa trên SQL.

Đây là cơ sở dữ liệu phổ biến thứ hai trên thế giới theo xếp hạng của db-engine và có lẽ là cơ sở dữ liệu hiện có nhất trên hành tinh vì nó chạy hầu hết các dịch vụ internet trên toàn cầu.

MySQL chạy trên hầu như tất cả các nền tảng, bao gồm Linux, UNIX và Windows. Nó là một thành phần quan trọng của ngăn xếp doanh nghiệp nguồn mở được gọi là LAMP. Phiên bản MySQL Enterprise đi kèm với hỗ trợ và các tính năng bổ sung để bảo mật và tính sẵn sàng cao.

https://db-engines.com/en/ranking

Sự kết hợp giữa tiết kiệm chi phí, khả năng tương thích nền tảng và bộ tính năng của MySQL làm cho nó thực sự hấp dẫn và nhiều tổ chức đang chuyển từ MS SQL Server sang nền tảng mã nguồn mở này để tận dụng các tính năng này.

Tại sao phải di chuyển?

Thông thường, lý do đầu tiên để di cư là chi phí. SQL Server là một cơ sở dữ liệu độc quyền của Microsoft. Có một phiên bản SQL Server miễn phí được gọi là Express, nhưng nó có một số hạn chế như giới hạn cơ sở dữ liệu 10GB, số lượng CPU hạn chế, số lượng RAM hạn chế và hơn thế nữa, vì vậy có lẽ bạn cần phải trả tiền giấy phép để sử dụng nó trong phiên bản sản xuất. Bạn có thể kiểm tra giá tại đây.

Với MySQL, bạn có thể sử dụng phiên bản cộng đồng miễn phí và không có bất kỳ giới hạn nào.

Một lý do khác có thể là sự hỗ trợ của hệ điều hành. Không giống như MS SQL Server, MySQL hỗ trợ một loạt các Hệ điều hành bao gồm Linux, Windows, Mac OS, Solaris và nhiều hệ điều hành khác.

Về cài đặt và cấu hình, MySQL cài đặt nhanh hơn, có diện tích nhỏ hơn trong khi vẫn có thể quản lý cơ sở dữ liệu khá lớn và có ít nút cấu hình cần điều chỉnh hơn SQL Server.

Trong lĩnh vực có tính khả dụng cao, MySQL có một số giải pháp đã được chứng minh bao gồm nhân rộng, SAN và MySQL Cluster, những giải pháp này ngang bằng hoặc tốt nhất với SQL Server tùy thuộc vào tình huống.

Cộng đồng MySQL tuyệt vời cung cấp nhiều lợi ích bao gồm một nhà phát triển tuyệt vời và mạng DBA của tất cả mọi người làm việc cùng nhau để giúp đảm bảo sản phẩm chất lượng cao và sự thành công của nhau.

Những điều bạn nên biết

Di chuyển dữ liệu và cấu trúc chỉ mục sang MySQL thường không phải là một nhiệm vụ khó khăn vì MySQL hỗ trợ tất cả các kiểu dữ liệu quan trọng, thiết kế bảng và cấu trúc chỉ mục. Nhưng dù sao, có một số đối tượng sẽ phải đối mặt với một số thách thức. Các đối tượng liên quan đến mã, như các thủ tục được lưu trữ, có thể đang sử dụng các tính năng ANSI không chuẩn, vì Transact-SQL có nhiều tính năng trong số đó.

Vì vậy, các mục sau đây sẽ cần đặc biệt chú ý khi di chuyển:

  • Các bản lắp ráp
  • Loại
  • DDL và trình kích hoạt dựa trên câu lệnh (MySQL có trình kích hoạt dựa trên hàng)
  • Lệnh gọi hàm SQL Server độc quyền
  • Một số trường hợp nhất định của T-SQL động

Theo cách tương tự, Từ đồng nghĩa và Vai trò bảo mật sẽ cần một giải pháp thay thế vì chúng không thể được chuyển trực tiếp vào MySQL.

Loại dữ liệu yêu cầu chuyển đổi

Bản đồ sau có thể được sử dụng để chuyển đổi các kiểu dữ liệu SQL Server không ánh xạ trong mối quan hệ 1-1 sang MySQL:

SQL Server MySQL
BẢN SẮC AUTO_INCREMENT
NTEXT, QUỐC TẾ BỘ KÝ TỰ VĂN BẢN UTF8
SMALLDATETIME DATETIME
TIỀN DECIMAL (19,4)
TIỀN NHỎ DECIMAL (10,4)
UNIQUEIDENTIFIER BINARY (16)
SYSNAME CHAR (256)

Cách thực hiện

Có nhiều công cụ để thực hiện việc di chuyển từ MS SQL Server sang MySQL như Amazon DMS hoặc Data Integration (Kettle), nhưng trong trường hợp này, chúng tôi sẽ sử dụng công cụ MySQL Workbench Migration.

Công cụ này được thiết kế để tiết kiệm DBA và thời gian của nhà phát triển bằng cách cung cấp hình ảnh, trỏ và nhấp dễ sử dụng xung quanh tất cả các giai đoạn cấu hình và quản lý quy trình di chuyển phức tạp:

  • Di chuyển cơ sở dữ liệu:Cho phép di chuyển từ Microsoft SQL Server, Microsoft Access, PostgreSQL, Sybase ASE, Sybase SQL Anywhere, SQLite, v.v.
  • Quản lý các dự án di chuyển:Cho phép các quá trình di chuyển được định cấu hình, sao chép, chỉnh sửa, thực thi và lên lịch.
  • Lựa chọn nguồn và mục tiêu:Cho phép người dùng xác định các nguồn dữ liệu cụ thể và phân tích dữ liệu nguồn trước khi di chuyển.
  • Di chuyển đối tượng:Cho phép người dùng chọn các đối tượng để di chuyển, chỉ định nguồn cho ánh xạ đích nếu cần, chỉnh sửa tập lệnh di chuyển và tạo lược đồ đích.
  • Nâng cấp phiên bản:Bằng cách sử dụng tính năng di chuyển, người dùng có thể dễ dàng di chuyển cơ sở dữ liệu từ phiên bản MySQL cũ hơn sang phiên bản mới nhất.

Vì vậy, hãy làm điều đó.

Đối với nhiệm vụ này, chúng tôi giả sử bạn có:

  • SQL Server được cài đặt với cơ sở dữ liệu của bạn để di chuyển:Chúng tôi sẽ sử dụng cơ sở dữ liệu mẫu Northwind trên MS SQL Server Express 2014 Edition.
  • Máy chủ MySQL đã được cài đặt:Chúng tôi có Phiên bản cộng đồng MySQL 5.7.25 trên CentOS.
  • Người dùng trên cả hai máy chủ cơ sở dữ liệu có đặc quyền để thực hiện tác vụ:Chúng tôi có người dùng “sa” trên SQL Server và người dùng “di chuyển” với tất cả các đặc quyền trên MySQL.
  • Đã cài đặt MySQL Workbench với quyền truy cập vào cả hai máy chủ cơ sở dữ liệu:Chúng tôi sẽ sử dụng MySQL Workbench 6.3.

Để bắt đầu quá trình di chuyển, trên màn hình chính của MySQL Workbench, đi tới Cơ sở dữ liệu-> Trình hướng dẫn di chuyển.

Chúng tôi nên kiểm tra các điều kiện tiên quyết để xác nhận xem chúng tôi có thể tiếp tục nhiệm vụ hay không. Nếu mọi thứ đều ổn, chúng ta có thể nhấn Start Migration.

Trong bước này, chúng ta cần cung cấp thông tin về cơ sở dữ liệu nguồn, trong trường hợp này là SQL Server.

Chúng tôi sẽ định cấu hình thông số nguồn của mình như bạn có thể thấy trong hình ảnh trước đó:

Database System: Microsoft SQL Server
Connection Method: ODBC (Native)
Driver: SQL Server
Server: localhost 
Username: sa

Về thông số Máy chủ, chúng tôi đang chạy MySQL Workbench trên nút SQL Server, nhưng có thể bạn sẽ sử dụng Địa chỉ IP / Tên máy chủ của máy chủ cơ sở dữ liệu của mình.

Bây giờ, chúng tôi có thể kiểm tra kết nối bằng cách sử dụng nút Kiểm tra kết nối.

Sau đó, chúng ta cần thêm các tham số đích, trong trường hợp này là MySQL Server:

Connection Method: Standard (TCP/IP)
Hostname: 192.168.100.192
Port: 3306
Username: migration

Và nhấn vào Kiểm tra kết nối để xác nhận thông tin đã thêm.

Trong bước tiếp theo, MySQL Workbench sẽ kết nối với SQL Server của chúng tôi để tìm nạp danh sách các danh mục và lược đồ.

Bây giờ, chúng tôi sẽ chọn cơ sở dữ liệu mẫu Northwind từ danh sách.

Chúng ta có thể chọn cách ánh xạ các lược đồ và đối tượng được thiết kế ngược. Chúng tôi sẽ sử dụng tùy chọn Catalog.Schema.Table -> Catalog.Table, vì vậy trong MySQL của chúng tôi, chúng tôi sẽ có một cơ sở dữ liệu được gọi là Northwind và các bảng hiện tại mà chúng tôi có trong cơ sở dữ liệu SQL Server của mình.

Nếu mọi thứ diễn ra tốt đẹp, chúng tôi sẽ có một danh sách các đối tượng sẽ được di chuyển.

Trong trường hợp này, chúng ta có Đối tượng bảng, Đối tượng dạng xem và Đối tượng quy trình. Chúng tôi sẽ chỉ chọn Đối tượng bảng vì đối với phần còn lại của đối tượng, chúng tôi nên kiểm tra mã tương đương MySQL tương ứng theo cách thủ công.

Trong bước này, các đối tượng từ nguồn được chuyển đổi thành các đối tượng tương thích với MySQL.

Nếu mọi thứ diễn ra tốt đẹp, chúng ta có thể tiếp tục bằng cách chọn cách chúng ta muốn tạo lược đồ đã di chuyển trong mục tiêu. Chúng tôi sẽ sử dụng tùy chọn “Tạo giản đồ trong RDBMS mục tiêu” mặc định.

Bây giờ, hãy kiểm tra quá trình tạo giản đồ.

Trong bước tiếp theo, chúng tôi có thể kiểm tra kết quả của mỗi lần thực thi tập lệnh và chúng tôi có thể kiểm tra cơ sở dữ liệu mới được tạo trên Máy chủ MySQL của chúng tôi.

Trong Máy chủ MySQL của chúng tôi, chúng tôi có:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| NORTHWND           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

Tại thời điểm này, chúng tôi sẽ có cấu trúc cơ sở dữ liệu, nhưng chúng tôi chưa có dữ liệu. Bây giờ, chúng tôi sẽ chọn cách chúng tôi muốn sao chép dữ liệu trong Máy chủ MySQL. Chúng tôi sẽ sử dụng tùy chọn “Bản sao trực tuyến của dữ liệu bảng để nhắm mục tiêu RDBMS”.

Và chúng tôi có thể theo dõi quá trình sao chép từ ứng dụng MySQL Workbench.

Tại thời điểm này, chúng tôi đã di chuyển tất cả thông tin sang Máy chủ MySQL của chúng tôi.

mysql> SELECT * FROM NORTHWND.Region;
+----------+-------------------+
| RegionID | RegionDescription |
+----------+-------------------+
|        1 | Eastern           |
|        2 | Western           |
|        3 | Northern          |
|        4 | Southern          |
+----------+-------------------+
4 rows in set (0.00 sec)

Trong bước cuối cùng, chúng tôi có thể kiểm tra báo cáo di chuyển và hoàn thành tác vụ.

Quá trình di chuyển đã hoàn tất!

Thử nghiệm

Trước quá trình di chuyển, bạn nên kiểm tra ứng dụng và cơ sở dữ liệu MySQL để biết hoạt động với công cụ mới.

Nó cũng sẽ hữu ích khi thực hiện kiểm tra điểm chuẩn để xác thực hiệu suất trước khi di chuyển.

Có một số mẹo cần lưu ý:

  • Thử nghiệm phải mô phỏng số lượng kết nối người dùng mong đợi.
  • Các phiên được kết nối sẽ thực hiện các tác vụ như chúng sẽ diễn ra trong một ngày bình thường.
  • Bạn nên tải cơ sở dữ liệu của mình với dữ liệu thử nghiệm có kích thước xấp xỉ kích thước mà bạn mong đợi cơ sở dữ liệu của mình ở trong thế giới thực.

Đối với tác vụ kiểm tra này, bạn có thể sử dụng công cụ mysqlslap. Đây là một chương trình chẩn đoán được thiết kế để mô phỏng tải máy khách cho Máy chủ MySQL và báo cáo thời gian của từng giai đoạn.

Kết luận

Như chúng tôi đã xem xét trong blog này, có một số lý do có thể khiến một doanh nghiệp quyết định di chuyển cơ sở dữ liệu, chuyển từ một công cụ độc quyền sang một công cụ nguồn mở. Chúng tôi đã thấy ở đây một trường hợp sử dụng phổ biến, một sự di chuyển từ SQL Server sang MySQL và thực hiện một ví dụ từng bước bằng cách sử dụng một công cụ MySQL được biết đến rộng rãi, MySQL Workbench. Chúng tôi hy vọng bạn thấy bài viết này hữu ích.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHỌN với nhiều điều kiện WHERE trên cùng một cột

  2. Làm cách nào để chặn đầu ra tiêu đề cột cho một câu lệnh SQL?

  3. convert_tz trả về null

  4. Quyền truy cập bị từ chối đối với người dùng '[email được bảo vệ]' (sử dụng mật khẩu:KHÔNG)

  5. Chèn dữ liệu vào cơ sở dữ liệu MySQL