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

Chuyển từ MySQL 5.7 sang MySQL 8.0 - Những điều bạn nên biết

Tháng 4 năm 2018 không chỉ là ngày của thế giới MySQL. MySQL 8.0 đã được phát hành ở đó và hơn 1 năm sau, có lẽ đã đến lúc cân nhắc chuyển sang phiên bản mới này.

MySQL 8.0 có những cải tiến quan trọng về hiệu suất và bảo mật, và cũng như trong quá trình di chuyển sang phiên bản cơ sở dữ liệu mới, có một số điều cần lưu ý trước khi đi vào sản xuất để tránh các vấn đề khó khăn như mất dữ liệu, quá nhiều thời gian chết hoặc thậm chí là quá trình khôi phục trong quá trình di chuyển.

Trong blog này, chúng tôi sẽ đề cập đến một số tính năng mới của MySQL 8.0, một số nội dung không dùng nữa và những điều bạn cần lưu ý trước khi di chuyển.

Có gì mới trong MySQL 8.0?

Bây giờ chúng ta hãy tóm tắt một số tính năng quan trọng nhất được đề cập trong tài liệu chính thức cho phiên bản MySQL mới này.

  • MySQL kết hợp một từ điển dữ liệu giao dịch để lưu trữ thông tin về các đối tượng cơ sở dữ liệu.
  • Một câu lệnh DDL nguyên tử kết hợp cập nhật từ điển dữ liệu, hoạt động của công cụ lưu trữ và ghi nhật ký nhị phân được liên kết với hoạt động DDL thành một giao dịch nguyên tử.
  • Máy chủ MySQL tự động thực hiện tất cả các tác vụ nâng cấp cần thiết vào lần khởi động tiếp theo để nâng cấp các bảng hệ thống trong lược đồ mysql, cũng như các đối tượng trong các lược đồ khác như lược đồ sys và lược đồ người dùng. DBA không cần thiết phải gọi mysql_upgrade.
  • Nó hỗ trợ việc tạo và quản lý các nhóm tài nguyên, đồng thời cho phép gán các luồng chạy trong máy chủ cho các nhóm cụ thể để các luồng thực thi theo các tài nguyên có sẵn cho nhóm.
  • Mã hóa bảng hiện có thể được quản lý trên toàn cầu bằng cách xác định và thực thi các mặc định mã hóa. Biến default_table_encryption xác định mặc định mã hóa cho các lược đồ mới được tạo và vùng bảng chung. Mặc định mã hóa được thực thi bằng cách bật biến table_encryption_privilege_check.
  • Bộ ký tự mặc định đã thay đổi từ latin1 thành utf8mb4.
  • Nó hỗ trợ việc sử dụng các biểu thức làm giá trị mặc định trong các đặc tả kiểu dữ liệu. Điều này bao gồm việc sử dụng các biểu thức làm giá trị mặc định cho các kiểu dữ liệu BLOB, TEXT, GEOMETRY và JSON.
  • Ghi nhật ký lỗi đã được viết lại để sử dụng kiến ​​trúc thành phần MySQL. Ghi nhật ký lỗi truyền thống được triển khai bằng các thành phần tích hợp sẵn và ghi nhật ký bằng nhật ký hệ thống được triển khai như một thành phần có thể tải được.
  • Một loại khóa dự phòng mới cho phép DML trong quá trình sao lưu trực tuyến đồng thời ngăn chặn các hoạt động có thể dẫn đến ảnh chụp nhanh không nhất quán. Khóa dự phòng mới được hỗ trợ bởi cú pháp LOCK INSTANCE FOR BACKUP và UNLOCK INSTANCE. Cần có đặc quyền BACKUP_ADMIN để sử dụng các câu lệnh này.
  • Máy chủ MySQL hiện cho phép một cổng TCP / IP được định cấu hình cụ thể cho các kết nối quản trị. Điều này cung cấp một giải pháp thay thế cho một kết nối quản trị duy nhất được phép trên các giao diện mạng được sử dụng cho các kết nối thông thường ngay cả khi kết nối max_connections đã được thiết lập.
  • Nó hỗ trợ các chỉ mục vô hình. Chỉ mục này không được trình tối ưu hóa sử dụng và giúp bạn có thể kiểm tra tác động của việc xóa chỉ mục đối với hiệu suất truy vấn mà không cần xóa nó.
  • Kho lưu trữ tài liệu để phát triển cả ứng dụng tài liệu SQL và NoSQL bằng cách sử dụng một cơ sở dữ liệu duy nhất.
  • MySQL 8.0 giúp bạn có thể duy trì các biến máy chủ động, toàn cục bằng cách sử dụng lệnh SET PERSIST thay vì lệnh SET GLOBAL thông thường.

Quản lý tài khoản và bảo mật MySQL

Vì có nhiều cải tiến liên quan đến bảo mật và quản lý người dùng, chúng tôi sẽ liệt kê chúng trong một phần riêng biệt.

  • Các bảng cấp trong cơ sở dữ liệu hệ thống mysql bây giờ là các bảng InnoDB.
  • Plugin xác thực caching_sha2_password mới hiện là phương thức xác thực mặc định trong MySQL 8.0. Nó thực hiện băm mật khẩu SHA-256, nhưng sử dụng bộ nhớ đệm để giải quyết các vấn đề về độ trễ tại thời điểm kết nối. Nó cung cấp mã hóa mật khẩu an toàn hơn plugin mysql_native_password và cung cấp hiệu suất tốt hơn sha256_password.
  • MySQL hiện hỗ trợ các vai trò, được đặt tên là tập hợp các đặc quyền. Các vai trò có thể có các đặc quyền được cấp và thu hồi từ chúng, đồng thời chúng có thể được cấp và thu hồi khỏi tài khoản người dùng.
  • MySQL hiện duy trì thông tin về lịch sử mật khẩu, cho phép hạn chế việc sử dụng lại các mật khẩu trước đó.
  • Nó cho phép quản trị viên định cấu hình tài khoản người dùng sao cho quá nhiều lần đăng nhập liên tiếp không chính xác do mật khẩu không chính xác gây ra khóa tài khoản tạm thời.

Cải tiến của InnoDB

Như điểm trước, cũng có nhiều cải tiến liên quan đến chủ đề này, vì vậy chúng tôi cũng sẽ liệt kê chúng trong một phần riêng biệt.

  • Giá trị bộ đếm tăng tự động tối đa hiện tại được ghi vào nhật ký làm lại mỗi khi giá trị thay đổi và được lưu vào bảng hệ thống công cụ-riêng trên mỗi điểm kiểm tra. Những thay đổi này làm cho giá trị bộ đếm tăng tự động tối đa hiện tại luôn tồn tại qua các lần khởi động lại máy chủ
  • Khi gặp tham nhũng cây chỉ mục, InnoDB ghi một cờ tham nhũng vào nhật ký làm lại, điều này làm cho cờ hỏng an toàn. InnoDB cũng ghi dữ liệu cờ tham nhũng trong bộ nhớ vào bảng hệ thống riêng tư trên mỗi trạm kiểm soát. Trong quá trình khôi phục, InnoDB đọc các cờ hỏng từ cả hai vị trí và kết hợp các kết quả trước khi đánh dấu các đối tượng bảng và chỉ mục trong bộ nhớ là bị hỏng.
  • Một biến động mới, innodb_deadlock_detect, có thể được sử dụng để vô hiệu hóa tính năng phát hiện khóa chết. Trên các hệ thống đồng thời cao, phát hiện khóa chết có thể gây ra sự chậm lại khi nhiều luồng chờ cùng một khóa. Đôi khi, có thể hiệu quả hơn nếu tắt tính năng phát hiện bế tắc và dựa vào cài đặt innodb_lock_wait_timeout để khôi phục giao dịch khi xảy ra bế tắc.
  • Các bảng tạm thời của InnoDB hiện đã được tạo trong không gian bảng tạm thời được chia sẻ, ibtmp1.
  • bảng hệ thống mysql và bảng từ điển dữ liệu hiện được tạo trong một tệp không gian bảng InnoDB duy nhất có tên mysql.ibd trong thư mục dữ liệu MySQL. Trước đây, các bảng này đã được tạo trong các tệp không gian bảng InnoDB riêng lẻ trong thư mục cơ sở dữ liệu mysql.
  • Theo mặc định, nhật ký hoàn tác hiện nằm trong hai không gian bảng hoàn tác được tạo khi phiên bản MySQL được khởi chạy. Nhật ký hoàn tác không còn được tạo trong vùng bảng hệ thống nữa.
  • Biến innodb_dedicated_server mới, bị tắt theo mặc định, có thể được sử dụng để InnoDB tự động định cấu hình các tùy chọn sau theo dung lượng bộ nhớ được phát hiện trên máy chủ:innodb_buffer_pool_size, innodb_log_file_size và innodb_flush_method. Tùy chọn này dành cho các phiên bản máy chủ MySQL chạy trên máy chủ chuyên dụng.
  • Tệp không gian bảng có thể được di chuyển hoặc khôi phục đến vị trí mới trong khi máy chủ ngoại tuyến bằng cách sử dụng tùy chọn innodb_directories.

Bây giờ, chúng ta hãy xem xét một số tính năng mà bạn không nên sử dụng nữa trong phiên bản MySQL mới này.

Điều gì không được chấp nhận trong MySQL 8.0?

Các tính năng sau không được dùng nữa và sẽ bị xóa trong phiên bản tương lai.

  • Bộ ký tự utf8mb3 không được dùng nữa. Vui lòng sử dụng utf8mb4 thay thế.
  • Vì caching_sha2_password là plugin xác thực mặc định trong MySQL 8.0 và cung cấp tập hợp các khả năng của plugin xác thực sha256_password nên sha256_password không được dùng nữa.
  • Plugin validate_password đã được hoàn thiện lại để sử dụng cơ sở hạ tầng thành phần máy chủ. Dạng plugin của validate_password vẫn khả dụng nhưng không được dùng nữa.
  • Mệnh đề ENGINE cho câu lệnh ALTER TABLESPACE và DROP TABLESPACE.
  • Chế độ SQL PAD_CHAR_TO_FULL_LENGTH.
  • Hỗ trợ AUTO_INCREMENT không được dùng cho các cột loại FLOAT và DOUBLE (và bất kỳ từ đồng nghĩa nào). Cân nhắc xóa thuộc tính AUTO_INCREMENT khỏi các cột như vậy hoặc chuyển đổi chúng thành kiểu số nguyên.
  • Thuộc tính UNSIGNED không được dùng cho các cột loại FLOAT, DOUBLE và DECIMAL (và bất kỳ từ đồng nghĩa nào). Thay vào đó, hãy cân nhắc sử dụng ràng buộc KIỂM TRA đơn giản cho các cột như vậy.
  • Cú pháp
  • FLOAT (M, D) và DOUBLE (M, D) để chỉ định số chữ số cho các cột kiểu FLOAT và DOUBLE (và bất kỳ từ đồng nghĩa nào) là một phần mở rộng MySQL không chuẩn. Cú pháp này không được dùng nữa.
  • C-style không chuẩn &&, ||, và! các toán tử là từ đồng nghĩa với các toán tử SQL chuẩn AND, OR và NOT, tương ứng, không được dùng nữa. Các ứng dụng sử dụng toán tử không chuẩn phải được điều chỉnh để sử dụng toán tử chuẩn.
  • Máy khách mysql_upgrade không được dùng nữa vì khả năng nâng cấp bảng hệ thống trong lược đồ hệ thống mysql và các đối tượng trong các lược đồ khác đã được chuyển vào máy chủ MySQL.
  • Tệp mysql_upgrade_info, được tạo thư mục dữ liệu và được sử dụng để lưu trữ số phiên bản MySQL.
  • Biến hệ thống relay_log_info_file và tùy chọn --master-info-file không được dùng nữa. Trước đây, chúng được sử dụng để chỉ định tên của nhật ký thông tin nhật ký chuyển tiếp và nhật ký thông tin chính khi relay_log_info_repository =FILE và master_info_repository =FILE được đặt, nhưng những cài đặt đó đã không được dùng nữa. Việc sử dụng các tệp cho nhật ký thông tin nhật ký chuyển tiếp và nhật ký thông tin chính đã được thay thế bằng các bảng nô lệ an toàn khi gặp sự cố, là bảng mặc định trong MySQL 8.0.
  • Việc sử dụng biến môi trường MYSQL_PWD để chỉ định mật khẩu MySQL không được chấp nhận.

Và bây giờ, chúng ta hãy xem xét một số tính năng mà bạn phải ngừng sử dụng trong phiên bản MySQL này.

Nội dung nào đã bị Xóa trong MySQL 8.0?

Các tính năng sau đã bị loại bỏ trong MySQL 8.0.

  • Biến hệ thống innodb_locks_unsafe_for_binlog đã bị xóa. Mức cách ly READ COMMITTED cung cấp chức năng tương tự.
  • Sử dụng GRANT để tạo người dùng. Thay vào đó, hãy sử dụng CREATE USER. Thực hiện theo phương pháp này làm cho chế độ SQL NO_AUTO_CREATE_USER không quan trọng đối với các câu lệnh GRANT, vì vậy nó cũng bị loại bỏ và một lỗi hiện được ghi vào nhật ký máy chủ khi sự hiện diện của giá trị này cho tùy chọn sql_mode trong tệp tùy chọn ngăn không cho khởi động mysqld.
  • Sử dụng GRANT để sửa đổi các thuộc tính tài khoản không phải là chỉ định đặc quyền. Điều này bao gồm xác thực, SSL và các thuộc tính giới hạn tài nguyên. Thay vào đó, hãy thiết lập các thuộc tính đó tại thời điểm tạo tài khoản với CREATE USER hoặc sửa đổi chúng sau đó với ALTER USER.
  • ĐƯỢC XÁC ĐỊNH BẰNG MẬT KHẨU 'auth_string' cú pháp cho TẠO NGƯỜI DÙNG và CẤP. Thay vào đó, hãy sử dụng IDENTIFIED WITH auth_plugin AS 'auth_string' cho CREATE USER và ALTER USER, trong đó giá trị 'auth_string' ở định dạng tương thích với plugin được đặt tên.
  • Hàm PASSWORD (). Ngoài ra, việc xóa PASSWORD () có nghĩa là cú pháp SET PASSWORD ... =PASSWORD ('auth_string') không còn khả dụng nữa.
  • Biến hệ thống old_passwords.
  • Câu lệnh FLUSH QUERY CACHE và RESET QUERY CACHE.
  • Các biến hệ thống này:query_cache_limit, query_cache_min_res_unit, query_cache_size, query_cache_type, query_cache_wlock_invalidate.
  • Các biến trạng thái này:Qcache_free_blocks, Qcache_free_memory, Qcache_hits, Qcache_inserts, Qcache_lowmem_prunes, Qcache_not_cached, Qcache_queries_in_cache, Qcache_total_blocks.
  • Các chuỗi này trạng thái:kiểm tra đặc quyền trên truy vấn đã lưu trong bộ nhớ cache, kiểm tra bộ đệm truy vấn cho một truy vấn, làm mất hiệu lực các mục nhập bộ đệm truy vấn, gửi kết quả đã lưu trong bộ đệm truy vấn, lưu trữ kết quả trong bộ đệm truy vấn, Đang chờ khóa bộ nhớ cache truy vấn.
  • Các biến hệ thống tx_isolation và tx_read_only đã bị xóa. Thay vào đó, hãy sử dụng transaction_isolation và transaction_read_only.
  • Biến hệ thống sync_frm đã bị xóa vì các tệp .frm đã trở nên lỗi thời.
  • Biến hệ thống secure_auth và tùy chọn ứng dụng khách --secure-auth đã bị xóa. Tùy chọn MYSQL_SECURE_AUTH cho hàm API mysql_options () C đã bị xóa.
  • Biến hệ thống log_warnings và tùy chọn máy chủ --log-warning đã bị xóa. Thay vào đó, hãy sử dụng biến hệ thống log_error_verbosity.
  • Phạm vi toàn cục cho biến hệ thống sql_log_bin đã bị xóa. sql_log_bin chỉ có phạm vi phiên và các ứng dụng dựa vào quyền truy cập @@ GLOBAL.sql_log_bin phải được điều chỉnh.
  • Các biến hệ thống date_format, datetime_format, time_format và max_tmp_tables không được sử dụng sẽ bị xóa.
  • Các điều kiện ASC hoặc DESC không dùng nữa cho mệnh đề GROUP BY sẽ bị xóa. Các truy vấn trước đây dựa vào sắp xếp GROUP BY có thể tạo ra kết quả khác với các phiên bản MySQL trước đó. Để tạo một thứ tự sắp xếp nhất định, hãy cung cấp mệnh đề ORDER BY.
  • Trình phân tích cú pháp không còn coi \ N là từ đồng nghĩa với NULL trong các câu lệnh SQL. Sử dụng NULL để thay thế. Thay đổi này không ảnh hưởng đến các hoạt động nhập hoặc xuất tệp văn bản được thực hiện với TẢI DỮ LIỆU hoặc CHỌN ... VÀO OUTFILE, mà NULL tiếp tục được đại diện bởi \ N.
  • Các tùy chọn phía máy khách --ssl và --ssl-verify-server-cert đã bị xóa. Sử dụng --ssl-mode =REQUIRED thay vì --ssl =1 hoặc --enable-ssl. Sử dụng --ssl-mode =DISABLED thay vì --ssl =0, --skip-ssl hoặc --disable-ssl. Sử dụng --ssl-mode =VERIFY_IDENTITY thay vì tùy chọn --ssl-verify-server-cert.
  • Chương trình mysql_install_db đã bị xóa khỏi các bản phân phối MySQL. Thay vào đó, quá trình khởi tạo thư mục dữ liệu phải được thực hiện bằng cách gọi mysqld với tùy chọn --initialize hoặc --initialize-secure. Ngoài ra, tùy chọn --bootstrap cho mysqld được sử dụng bởi mysql_install_db đã bị xóa và tùy chọn INSTALL_SCRIPTDIR CMake kiểm soát vị trí cài đặt cho mysql_install_db đã bị xóa.
  • Tiện ích mysql_plugin đã bị xóa. Các lựa chọn thay thế bao gồm tải plugin khi khởi động máy chủ bằng tùy chọn --plugin-load hoặc --plugin-load-add hoặc trong thời gian chạy bằng cách sử dụng câu lệnh INSTALL PLUGIN.
  • Tiện ích giải quyết bị xóa. Bạn có thể sử dụng nslookup, máy chủ hoặc máy đào để thay thế.

Có rất nhiều tính năng mới, không dùng nữa và đã bị loại bỏ. Bạn có thể kiểm tra trang web chính thức để biết thêm thông tin chi tiết.

Cân nhắc Trước khi Chuyển sang MySQL 8.0

Bây giờ chúng ta hãy đề cập đến một số điều quan trọng nhất cần xem xét trước khi chuyển sang phiên bản MySQL này.

Phương thức Xác thực

Như chúng tôi đã đề cập, caching_sha2_password không phải là phương thức xác thực mặc định, vì vậy bạn nên kiểm tra xem ứng dụng / trình kết nối của mình có hỗ trợ không. Nếu không, hãy xem cách bạn có thể thay đổi lại phương thức xác thực mặc định và plugin xác thực người dùng thành ‘mysql_native_password’.

Để thay đổi phương thức xác thực mặc định, hãy chỉnh sửa tệp cấu hình my.cnf và thêm / chỉnh sửa dòng sau:

$ vi /etc/my.cnf

[mysqld]

default_authentication_plugin=mysql_native_password

Để thay đổi plugin xác thực người dùng, hãy chạy lệnh sau với người dùng có đặc quyền:

$ mysql -p

ALTER USER ‘username’@’hostname’ IDENTIFIED WITH ‘mysql_native_password’ BY ‘password’;

Dù sao, những thay đổi này không phải là giải pháp lâu dài vì xác thực cũ có thể sớm bị ngừng sử dụng, vì vậy bạn nên tính đến việc nâng cấp cơ sở dữ liệu trong tương lai.

Ngoài ra, các vai trò cũng là một tính năng quan trọng ở đây. Bạn có thể giảm bớt các đặc quyền cá nhân gán nó cho một vai trò và thêm những người dùng tương ứng vào đó.

Ví dụ:bạn có thể tạo một vai trò mới cho nhóm tiếp thị và nhà phát triển:

$ mysql -p

CREATE ROLE 'marketing', 'developers';

Chỉ định các đặc quyền cho các vai trò mới này:

GRANT SELECT ON *.* TO 'marketing';

GRANT ALL PRIVILEGES ON *.* TO 'developers';

Và sau đó, chỉ định vai trò cho người dùng:

GRANT 'marketing' TO 'marketing1'@'%';

GRANT 'marketing' TO 'marketing2'@'%';

GRANT 'developers' TO 'developer1'@'%';

Và thế là xong. Bạn sẽ có các đặc quyền sau:

SHOW GRANTS FOR 'marketing1'@'%';

+-------------------------------------------+

| Grants for [email protected]%                   |

+-------------------------------------------+

| GRANT USAGE ON *.* TO `marketing1`@`%`    |

| GRANT `marketing`@`%` TO `marketing1`@`%` |

+-------------------------------------------+

2 rows in set (0.00 sec)

SHOW GRANTS FOR 'marketing';

+----------------------------------------+

| Grants for [email protected]%                 |

+----------------------------------------+

| GRANT SELECT ON *.* TO `marketing`@`%` |

+----------------------------------------+

1 row in set (0.00 sec)

Bộ ký tự

Vì bộ ký tự mặc định mới là utf8mb4, bạn nên đảm bảo rằng mình không sử dụng bộ ký tự mặc định vì nó sẽ thay đổi.

Để tránh một số vấn đề, bạn nên chỉ định character_set_server và các biến collation_server trong tệp cấu hình my.cnf.

$ vi /etc/my.cnf

[mysqld]

character_set_server=latin1

collation_server=latin1_swedish_ci

MyISAM Engine

Các bảng đặc quyền MySQL trong lược đồ MySQL được chuyển sang InnoDB. Bạn có thể tạo một công cụ bảng =MyISAM và nó sẽ hoạt động như trước đây, nhưng việc ghép một bảng MyISAM vào một máy chủ MySQL đang chạy sẽ không hoạt động vì nó sẽ không bị phát hiện.

Phân vùng

Không được có bảng được phân vùng nào sử dụng công cụ lưu trữ không có hỗ trợ phân vùng gốc. Bạn có thể chạy truy vấn sau để xác minh điểm này.

$ mysql -p

SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE NOT IN ('innodb', 'ndbcluster') AND CREATE_OPTIONS LIKE '%partitioned%';

Nếu bạn cần thay đổi công cụ của bảng, bạn có thể chạy:

ALTER TABLE table_name ENGINE = INNODB;

Kiểm tra Nâng cấp

Bước cuối cùng, bạn có thể chạy lệnh mysqlcheck bằng cách sử dụng cờ kiểm tra nâng cấp để xác nhận xem mọi thứ có ổn không.

$ mysqlcheck -uroot -p --all-databases --check-upgrade

Enter password:

mysql.columns_priv                                 OK

mysql.component                                    OK

mysql.db                                           OK

mysql.default_roles                                OK

mysql.engine_cost                                  OK

mysql.func                                         OK

mysql.general_log                                  OK

mysql.global_grants                                OK

mysql.gtid_executed                                OK

mysql.help_category                                OK

mysql.help_keyword                                 OK

mysql.help_relation                                OK

mysql.help_topic                                   OK

mysql.innodb_index_stats                           OK

mysql.innodb_table_stats                           OK

mysql.password_history                             OK

mysql.plugin                                       OK

mysql.procs_priv                                   OK

mysql.proxies_priv                                 OK

mysql.role_edges                                   OK

mysql.server_cost                                  OK

mysql.servers                                      OK

mysql.slave_master_info                            OK

mysql.slave_relay_log_info                         OK

mysql.slave_worker_info                            OK

mysql.slow_log                                     OK

mysql.tables_priv                                  OK

mysql.time_zone                                    OK

mysql.time_zone_leap_second                        OK

mysql.time_zone_name                               OK

mysql.time_zone_transition                         OK

mysql.time_zone_transition_type                    OK

mysql.user                                         OK

sys.sys_config                                     OK

world_x.city                                       OK

world_x.country                                    OK

world_x.countryinfo                                OK

world_x.countrylanguage                            OK

Có một số điều cần kiểm tra trước khi thực hiện nâng cấp. Bạn có thể kiểm tra tài liệu MySQL chính thức để biết thêm thông tin chi tiết.

Phương pháp Nâng cấp

Có nhiều cách khác nhau để nâng cấp MySQL 5.7 lên 8.0. Bạn có thể sử dụng nâng cấp tại chỗ hoặc thậm chí tạo nô lệ sao chép trong phiên bản mới để bạn có thể quảng bá nó sau này.

Nhưng trước khi nâng cấp, bước 0 phải sao lưu dữ liệu của bạn. Bản sao lưu nên bao gồm tất cả các cơ sở dữ liệu bao gồm cả cơ sở dữ liệu hệ thống. Vì vậy, nếu có bất kỳ vấn đề nào, bạn có thể khôi phục càng sớm càng tốt.

Một tùy chọn khác, tùy thuộc vào tài nguyên có sẵn, có thể tạo bản sao theo tầng MySQL 5.7 -> MySQL 8.0 -> MySQL 5.7, vì vậy sau khi quảng cáo phiên bản mới, nếu có vấn đề gì xảy ra, bạn có thể quảng cáo nút nô lệ với phiên bản cũ trở lại. Nhưng có thể nguy hiểm nếu có vấn đề nào đó với dữ liệu, vì vậy, việc sao lưu là điều bắt buộc trước đó.

Đối với bất kỳ phương pháp nào được sử dụng, cần có môi trường thử nghiệm để xác minh rằng ứng dụng đang hoạt động mà không gặp bất kỳ sự cố nào bằng cách sử dụng phiên bản MySQL 8.0 mới.

Kết luận

Hơn 1 năm sau khi phát hành MySQL 8.0, đã đến lúc bắt đầu suy nghĩ để di chuyển phiên bản MySQL cũ của bạn, nhưng may mắn thay, khi kết thúc hỗ trợ cho MySQL 5.7 là năm 2023, bạn có thời gian để tạo kế hoạch di chuyển và kiểm tra hành vi của ứng dụng không vội vàng. Dành một chút thời gian cho bước kiểm tra đó là cần thiết để tránh bất kỳ sự cố nào sau khi di chuyển nó.


  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 * NƠI KHÔNG TỒN TẠI

  2. JSON_REPLACE () - Thay thế giá trị trong tài liệu JSON trong MySQL

  3. Sử dụng SQL LIKE và IN cùng nhau

  4. Sử dụng JDeveloper với Cơ sở dữ liệu MySQL và Cơ sở dữ liệu Oracle trên AWS RDS, Phần 2

  5. Cách trả về kết quả truy vấn dưới dạng danh sách được phân tách bằng dấu phẩy trong MySQL