Cấu hình MySQL Group Replication trên Ubuntu 20.04

Lượt xem
Home

Việc cấu hình MySQL Group Replication trên Ubuntu 20.04 cho phép bạn tạo một nhóm các node MySQL và đồng bộ hóa dữ liệu giữa chúng. Bài viết cách cấu hình sao chép nhóm MySQL trên Ubuntu 20.04 dưới đây của Vietnix sẽ hướng dẫn bạn cách để cấu hình MySQL Group Replication trên Ubuntu 20.04 nhanh chóng.

Yêu cầu tiên quyết để cách cấu hình sao chép nhóm MySQL trên Ubuntu 20.04 được triển khai

Để theo dõi hướng dẫn này, các bạn cần có:

  • Ba máy chủ chạy Ubuntu 20.04. Mỗi máy nên có một tài khoản người dùng quản trị không phải root với các đặc quyền sudo và tường lửa được đã được cấu hình bằng UFW.
  • MySQL được cài đặt trên mỗi máy chủ. Bài viết này này giả định rằng bạn đang sử dụng phiên bản MySQL mới nhất có sẵn từ kho lưu trữ mặc định của Ubuntu, tại thời điểm của bài viết này là phiên bản 8.0.28. (Bài viết hướng dẫn cách cài đặt MySQL trên Ubuntu 20.04 tại đây)

Để mọi thứ được rõ ràng, bài viết sẽ đề cập đến ba máy chủ là member1, member2member3. Trong các ví dụ xuyên suốt hướng dẫn này, các máy chủ này sẽ có các địa chỉ IP sau:

MemberIP Address
member1203.0.113.1
member2203.0.113.2
member3203.0.113.2

Các lệnh phải được chạy trên member1 sẽ có prefix là member1, thể hiện như sau:

member1$

Tương tự, các lệnh nào phải được chạy trên member2 sẽ có prefix là member2:

member2$

Các lệnh phải được chạy trên member3 sẽ có prefix là member3:

member3$

Cuối cùng là những lệnh nào cần chạy trên mỗi máy chủ thì sẽ không có prefix như trên, mà sẽ ở dạng thông thường như sau:

$

Các bước thực thiện

Sau khi chuẩn bị đầy đủ những yêu cầu trên, đến đây bạn có thể bắt đầu thực hiện cách cấu hình sao chép nhóm MySQL trên Ubuntu 20.04 theo các bước như sau:

Bước 1: Khởi tạo UUID để định danh một Nhóm MySQL

Trước khi mở tệp cấu hình để cấu hình các cài đặt sao chép nhóm cho MySQL, các bạn cần tạo UUID (Universal Unique Indentifier) dùng để xác định nhóm MySQL mà cần tạo.

Trên member1, sử dụng lệnh uuidgen để tạo UUID hợp lệ cho nhóm:

member1$ uuidgen
Output
168dcb64-7cce-473a-b338-6501f305e561

Hãy lưu lại giá trị đầu ra mà các bạn nhận được trên máy, vì các bước tiếp theo sẽ cần dùng đến khi ta tiến hành cấu hình tên nhóm cho nhóm máy chủ của mình.

Bước 2: Thiết lập Group Replication trong tệp cấu hình của MySQL

Bây giờ ta đã sẵn sàng sửa đổi tệp cấu hình của MySQL. Hãy mở tệp cấu hình chính của MySQL trên mỗi máy chủ MySQL bằng trình soạn thảo văn bản tùy . Ở đây, sẽ sử dụng nano:

$ sudo nano /etc/mysql/my.cnf

Ta sẽ phải thêm cấu hình của riêng mình bên dưới các dòng !includedir. Điều này sẽ cho phép ta ghi đè bất kỳ cài đặt nào từ các tệp được included.

Để bắt đầu, ta mở một phần mới bằng cách include tiêu đề [mysqld], sau đó thêm các cài đặt bạn cần để bật sao chép nhóm, như được đánh dấu trong ví dụ sau. Lưu ý rằng các cài đặt này được chỉnh sửa theo các cài đặt tối thiểu cần thiết để cho phép sao chép nhóm được nêu ra document chính thức của MySQL.

Tiền tố loose- cho phép MySQL xử lý các tùy chọn nào không nhận ra mà không gặp lỗi hay bị failed. Các bạn sẽ cần phải điền vào một số chỗ trống và tùy chỉnh một số cài đặt này ở các bước tiếp theo:

. . .
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

[mysqld]

# General replication settings
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
gtid_mode = ON
enforce_gtid_consistency = ON
master_info_repository = TABLE
relay_log_info_repository = TABLE
binlog_checksum = NONE
log_slave_updates = ON
log_bin = binlog
binlog_format = ROW
transaction_write_set_extraction = XXHASH64
loose-group_replication_bootstrap_group = OFF
loose-group_replication_start_on_boot = OFF
loose-group_replication_ssl_mode = REQUIRED
loose-group_replication_recovery_use_ssl = 1

# Shared replication group configuration
loose-group_replication_group_name = ""
loose-group_replication_ip_whitelist = ""
loose-group_replication_group_seeds = ""

# Single or Multi-primary mode? Uncomment these two lines
# for multi-primary mode, where any host can accept writes
#loose-group_replication_single_primary_mode = OFF
#loose-group_replication_enforce_update_everywhere_checks = ON

# Host specific replication configuration
server_id = 
bind-address = ""
report_host = ""
loose-group_replication_local_address = ""

Những cài đặt của Group Replication có sẵn

Phần đầu tiên chứa các cài đặt chung cần thiết cho Group Replication – phần này không cần ta phải chỉnh sửa:

. . .
# General replication settings
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
gtid_mode = ON
enforce_gtid_consistency = ON
master_info_repository = TABLE
relay_log_info_repository = TABLE
binlog_checksum = NONE
log_slave_updates = ON
log_bin = binlog
binlog_format = ROW
transaction_write_set_extraction = XXHASH64
loose-group_replication_bootstrap_group = OFF
loose-group_replication_start_on_boot = OFF
loose-group_replication_ssl_mode = REQUIRED
loose-group_replication_recovery_use_ssl = 1
. . .

Một yêu cầu cụ thể đối với Group Replication trong MySQL là dữ liệu phải được lưu trữ trong công cụ lưu trữ InnoDB. Document của MySQL nên vô hiệu hóa một cách trực tiếp việc sử dụng các công cụ lưu trữ khác có thể gây ra lỗi theo cách như dòng không chú thích đầu tiên trong phần này.

Các cài đặt còn lại bật global transactions ID, cấu hình ghi nhật ký nhị phân cần thiết cho Group Replication và cấu hình SSL cho nhóm. Cấu hình này cũng thiết lập một số mục khác hỗ trợ trong quá trình khôi phục và khởi động. Các bạn không nên sửa đổi bất cứ chi tiết nào trong phần này và hãy đảm bảo phải giống hệt nhau trên cả ba máy chủ MySQL của mình.

Xem thêm: Hướng dẫn cách lấy chứng chỉ SSL trên Ubuntu 20.04 bằng Certbot (Standalone mode)

Những cài đặt được chia sẻ của Group Replication

Phần thứ hai giúp thiết lập những cài đặt được chia sẻ cho nhóm. Phần này, các bạn sẽ phải tùy chỉnh một lần và sau đó sử dụng lại các cài đặt tương tự đó trên mỗi node của mình. Cụ thể, các bạn phải thêm vào UUID của nhóm (cái mà ta đã tạo ở bước trước), danh sách các thành viên nhóm được ủy quyền và các seed member cần liên hệ để lấy dữ liệu ban đầu khi tham gia nhóm.

Đặt loose-group_replication_group_name thành giá trị UUID mà các bạn đã tạo trước đó bằng lệnh uuidgen. Hãy đảm bảo rằng UUID được đặt giữa cặp dấu ngoặc kép trống.

Tiếp theo, đặt loose-group_replication_ip_whitelist thành danh sách tất cả các địa chỉ IP máy chủ MySQL của các bạn, được tách nhau bằng dấu phẩy. Cài đặt loose-group_replication_group_seeds phải gần giống như danh sách cho phép (whitelist), nhưng phải thêm một Cổng Group Replication được chỉ định vào sau địa chỉ IP của mỗi máy. Để thuận lợi cho việc theo dõi hướng dẫn này, các bạn hãy sử dụng Cổng Group Replication được khuyến nghị là 33061:

. . .
# Shared replication group configuration
loose-group_replication_group_name = "168dcb64-7cce-473a-b338-6501f305e561"
loose-group_replication_ip_whitelist = "203.0.113.1,203.0.113.2,203.0.113.3"
loose-group_replication_group_seeds = ""203.0.113.1:33061,203.0.113.2:33061,203.0.113.3:33061"
. . .

Phần này cần giống nhau trên mỗi máy chủ MySQL, vì vậy hãy đảm bảo copy – paste cẩn thận trên mỗi máy chủ.

Chọn Single Primary hay Multi-Primary

Tiếp theo, bạn cần quyết định nên cấu hình nhóm Single Primary (đơn chính) hay Multi-Primary (đa chính). Trong cấu hình đơn chính, MySQL chỉ định một máy chủ chính duy nhất (hầu như luôn là thành viên đầu tiên của nhóm) để xử lý các thao tác ghi. Còn nhóm đa chính cho sẽ phép bất kỳ thành viên nào trong nhóm thực hiện thao tác ghi.

Nếu các bạn muốn định cấu hình theo đa chính, hãy uncomment dòng loose-group_replication_single_primary_modeloose-group_replication_enforce_update_everywhere_checks. Điều này sẽ giúp thiết lập một nhóm đa chính. Ngược lại, nếu cấu hình theo nhóm đơn chính, hãy để lại hai dòng comment đó:

. . .
# Single or Multi-primary mode? Uncomment these two lines
# for multi-primary mode, where any host can accept writes
#loose-group_replication_single_primary_mode = OFF
#loose-group_replication_enforce_update_everywhere_checks = ON
. . .

Lưu ý: Các cài đặt này phải giống nhau trên mỗi máy chủ MySQL của bạn.

Các bạn có thể thay đổi cài đặt này sau, nhưng sau khi làm vậy, các bạn cần phải khởi động lại từng thành viên trong nhóm MySQL của mình. Bởi vì, để chuyển sang cấu hình mới, ta sẽ phải dừng từng phiên bản của MySQL trong nhóm, khởi động lại từng thành viên với cài đặt mới, sau đó khởi động lại Group Replication. Tuy điều này sẽ không ảnh hưởng đến dữ liệu trong từng máy chủ nhưng sẽ tốn một khoảng nhỏ thời gian.

Những cài đặt cho việc cấu hình theo host cụ thể

Phần thứ tư này, chứa các cài đặt khác sẽ khác nhau tùy theo mỗi máy chủ, bao gồm:

  • ID máy chủ (server_id)
  • Địa chỉ để liên kết với (bind-address)
  • Địa chỉ để báo cáo cho các thành viên khác (report_host)
  • Địa chỉ sao chép cục bộ và listen port (loose-group_replication_local_address)

Chỉ thị server_id phải được đặt thành một số độc nhất. Đối với thành viên đầu tiên, hãy đặt giá trị này thành 1 và tăng dần lên trên mỗi máy chủ bổ sung tiếp theo. Đặt bind-addressreport_host thành địa chỉ IP của máy chủ tương ứng để máy chủ MySQL có thể lắng nghe các kết nối bên ngoài và báo cáo chính xác địa chỉ cho các máy chủ khác. loose-group_replication_local_address cũng phải được đặt thành địa chỉ IP của máy chủ hiện tại với Cổng Group Replication (33061), được thêm vào địa chỉ IP.

Ví dụ dưới đây là phần cấu hình cho member1 sử dụng địa chỉ IP mẫu của chính nó:

. . .
# Host specific replication configuration
server_id = 1
bind-address = "203.0.113.1"
report_host = "203.0.113.1"
loose-group_replication_local_address = "203.0.113.1:33061"

Hoàn thành quá trình này trên mỗi máy chủ MySQL của bạn. Đây là cấu hình cho member2

. . .
# Host specific replication configuration
server_id = 2
bind-address = "203.0.113.2"
report_host = "203.0.113.2"
loose-group_replication_local_address = "203.0.113.2:33061"

Và đây là cấu hình cho member3:

. . .
# Host specific replication configuration
server_id = 3
bind-address = "203.0.113.3"
report_host = "203.0.113.3"
loose-group_replication_local_address = "203.0.113.3:33061"

Đảm bảo cập nhật từng địa chỉ IP trên thành địa chỉ IP của máy chủ có cấu hình mà các bạn đang chỉnh sửa.

Khi đã hoàn tất, hãy kiểm tra kỹ xem cài đặt bản sao được chia sẻ có giống nhau trên mỗi máy chủ không và cài đặt dành riêng cho máy chủ lưu trữ có được tùy chỉnh riêng trên từng máy chủ không. Lưu và đóng tệp trên mỗi máy chủ khi bạn hoàn tất. Nếu các bạn đã sử dụng nano để chỉnh sửa tệp, hãy nhấn CTRL + X, Y, rồi ENTER.

Đến đây, mỗi tệp cấu hình MySQL của máy chủ hiện chứa các lệnh cần thiết để khởi động Nhóm Sao Chép của MySQL. Để áp dụng những thiết lập mới này cho từng MySQL instance, hãy khởi động lại dịch vụ trên từng máy chủ của các bạn bằng lệnh sau:

$sudo systemctl restart mysql

Tiếp theo, các bạn có thể đi tiếp sang phần cấu hình cho phép truy cập từ xa bằng cách cập nhật những quy tắc của tường lửa trên máy chủ.

Để xây dựng một cụm máy chủ MySQL với MySQL Group Replication trên Ubuntu 20.04, việc chọn một dịch vụ VPS ổn định và chất lượng là rất quan trọng.

Vietnix hiện đang cung cấp các gói VPS linh hoạt và tốc độ cao, cho phép bạn lựa chọn và tùy chỉnh cấu hình máy chủ theo nhu cầu sử dụng như VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp và VPS NVMe.

Các gói VPS tại Vietnix đầu tư phần cứng mạnh mẽ, đảm bảo mang đến hiệu suất cao và độ ổn định, giúp bạn hoàn thành các dự án một cách hiệu quả.

Đặc biệt, đội ngũ kỹ thuật của Vietnix luôn túc trực 24/7, sẵn sàng hỗ trợ bạn khi gặp vấn đề hoặc cần giải đáp các câu hỏi liên quan đến việc triển khai cấu hình MySQL Group Replication. Liên hệ ngay với Vietnix để được tư vấn chi tiết.

Bước 3: Cập nhật các quy tắc của UFW trên mỗi Servers

Theo yêu cầu tiên quyết của bài hướng dẫn này, ngầm giả sử rằng là các bạn đã thiết lập tường lửa trên từng máy chủ mà các bạn đã cài đặt MySQL và bật quyền truy cập cho cấu hình OpenSSH UFW. Đây là một biện pháp bảo mật quan trọng, vì các tường lửa này hiện đang chặn các kết nối tới tất cả các cổng trên máy chủ, ngoại trừ các kết nối ssh chứa các khóa phù hợp với các khóa trong tệp authorized_keys (chứa khóa được ủy quyền) của mỗi máy chủ.

Trong tệp cấu hình MySQL, ta đã định cấu hình dịch vụ để lắng nghe các kết nối bên ngoài trên cổng mặc định 3306. Các bạn cũng đã xác định 33061 là cổng mà các thành viên nên sử dụng để phối hợp sao chép.

Trên mỗi máy chủ thành viên của mình, các bạn cần mở quyền truy cập vào cả hai cổng này cho các thành viên khác trong nhóm để các thành viên có thể giao tiếp với nhau. Để mở quyền truy cập vào các cổng này trên member1 cho member2, hãy chạy các lệnh ufw sau trên member1:

member1$ sudo ufw allow from member2_server_ip to any port 3306
member1$ sudo ufw allow from member2_server_ip to any port 33061

Đảm bảo thay đổi member2_server_ip thành địa chỉ IP thực của máy chủ member2 của các bạn. Sau đó, để mở các cổng tương tự cho member3, hãy chạy các lệnh sau:

member1$ sudo ufw allow from member3_server_ip to any port 3306
member1$ sudo ufw allow from member3_server_ip to any port 33061

Tiếp theo, cập nhật các quy tắc tường lửa cho hai máy chủ còn lại. Chạy các lệnh sau trên member2, hãy đảm bảo thay đổi địa chỉ IP tương ứng với địa chỉ của member1member3:

member2$ sudo ufw allow from member1_server_ip to any port 3306
member2$ sudo ufw allow from member1_server_ip to any port 33061
member2$ sudo ufw allow from member3_server_ip to any port 3306
member2$ sudo ufw allow from member3_server_ip to any port 33061

Cuối cùng, chạy hai lệnh này trên member3. Một lần nữa, hãy chắc chắn rằng bạn nhập đúng địa chỉ IP cho từng máy chủ:

member3$ sudo ufw allow from member1_server_ip to any port 3306
member3$ sudo ufw allow from member1_server_ip to any port 33061
member3$ sudo ufw allow from member2_server_ip to any port 3306
member3$ sudo ufw allow from member2_server_ip to any port 33061

Sau khi thêm các quy tắc UFW này, mỗi thể hiện trong số ba MySQL instance sẽ được phép truy cập vào các cổng được MySQL sử dụng trên hai máy chủ còn lại.

Với quyền truy cập vào các cổng MySQL đang mở, giờ đây các bạn có thể tạo Người Dùng Sao Chép (replication user) và bật plugin của Group Replication.

Bước 4: Cấu hình cho Replication Users và kích hoạt plugin của Group Replication

Để thiết lập kết nối với các máy chủ khác trong Group Replication, mỗi phiên bản MySQL phải có một người dùng sao chép chuyên dụng.

Trên mỗi máy chủ MySQL của mình, các bạn hãy đăng nhập vào phiên bản của MySQL với người dùng quản trị để bắt đầu phiên tương tác:

$ sudo mysql

Lưu ý: Đảm bảo chạy từng lệnh trong phần này trên từng MySQL instance.

Vì mỗi máy chủ sẽ có người dùng sao chép riêng nên ta cần tắt ghi nhật ký nhị phân trong quá trình tạo. Nếu không, khi quá trình sao chép bắt đầu, nhóm sẽ cố gắng truyền người dùng sao chép từ máy chủ chính sang các máy chủ phụ khác, tạo ra xung đột với người dùng sao chép đã có sẵn. Chạy lệnh truy vấn MySQL sau trên mỗi máy chủ:

mysql> SET SQL_LOG_BIN=0;

Bây giờ ta có thể chạy câu lệnh CREATE USER để tạo người dùng sao chép của mình. Chạy lệnh sau, lệnh này tạo người dùng có tên repl. Lệnh này chỉ định rằng người dùng sao chép phải kết nối bằng SSL. Ngoài ra, hãy tự tạo một khẩu cho riêng mình thay cho password khi tạo:

mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'password' REQUIRE SSL;

Tiếp theo, cấp đặc quyền sao chép người dùng mới trên máy chủ:

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

Sau đó flush các đặc quyền để thực hiện các thay đổi:

mysql> FLUSH PRIVILEGES;

Sau đó, kích hoạt lại ghi nhật ký nhị phân để tiếp tục hoạt động bình thường:

mysql> SET SQL_LOG_BIN=1;

Tiếp theo, hãy thiết lập cho group_replication_recovery sử dụng người dùng sao chép mới vừa tạo và mật khẩu được liên kết tương ứng. Sau đó, mỗi máy chủ sẽ sử dụng các thông tin đăng nhập này để xác thực với nhóm:

mysql> CHANGE REPLICATION SOURCE TO SOURCE_USER='repl', SOURCE_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';

Lưu ý: Nếu bạn đang sử dụng phiên bản MySQL trước 8.0.23, các bạn sẽ cần sử dụng cú pháp cũ của MySQL để thiết lập như dưới đây:

mysql> CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';

Khi đã có người dùng sao chép, ta có thể bật plugin group_replication để chuẩn bị khởi tạo nhóm:

mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';

Xác minh rằng plugin đang hoạt động bằng cách chạy lệnh sau:

mysql> SHOW PLUGINS;

Plugin group_replication sẽ xuất hiện ở cuối danh sách vì đây là plugin được thêm gần đây nhất:

Output
+----------------------------+-----------+------------------------------+-----------------------------+------------+
 | Name                        | Status  | Type                           | Library                       | License  |
+----------------------------+-----------+------------------------------+-----------------------------+------------+
 |                                  |              |                                   |                                  |               |
 | . . .                            | . . .        | . . .                             | . . .                            | . . .         |
 |                                  |              |                                   |                                  |               |
 | group_replication      | ACTIVE  | GROUP REPLICATION | group_replication.so | GPL        |
+----------------------------+-----------+------------------------------+----------------------------+-------------+
45 rows in set (0.00 sec)

Đầu ra này xác nhận rằng plugin đã được tải và hiện đang hoạt động. Trước khi tiếp tục sang bước tiếp theo, hãy đảm bảo rằng các bạn đã chạy từng lệnh trong phần này trên từng phiên bản MySQL của mình.

Bước 5: Bắt đầu tiến hành Group Replication

Giờ đây, mỗi máy chủ MySQL đã được cấu hình người dùng sao chép và plugin của Group Replication được bật, các bạn có thể bắt đầu cập nhật nhóm của mình.

Khởi động Node đầu tiên

Để khởi động một nhóm, hãy hoàn thành các bước sau trên một thành viên của nhóm. Bước này sẽ được thực hiện trên member1.

Các thành viên nhóm dựa vào các thành viên hiện có để gửi dữ liệu sao chép, danh sách thành viên cập nhật mới nhất và các thông tin khác khi lần đầu tham gia nhóm. Do đó, các bạn cần sử dụng một quy trình khác để khởi động thành viên ban đầu của nhóm sao cho thành viên đó biết rằng không cần phải đợi lấy thông tin từ các thành viên khác trong danh sách seed member của mình.

Nếu thiết lập, biến group_replication_bootstrap_group sẽ cho một thành viên biết rằng không nên chờ đợi nhận thông tin từ các thành viên khác và thay vào đó nên thiết lập một nhóm mới và tự bầu chọn chính mình làm máy chủ chính. Các bạn có thể tiến hành thiết lập trên bằng lệnh sau:

(member1) mysql> SET GLOBAL group_replication_bootstrap_group=ON;

Sau đó, bạn có thể bắt đầu sao chép cho thành viên ban đầu của nhóm:

(member1) mysql> START GROUP_REPLICATION;

Tiếp theo, các bạn có thể đặt lại biến group_replication_bootstrap_group thành OFF, vì trường hợp duy nhất thích hợp là khi không có thành viên nào trong nhóm:

(member1) mysql> SET GLOBAL group_replication_bootstrap_group=OFF;

Nhóm sẽ được bắt đầu với máy chủ này là thành viên duy nhất. Ta xác minh điều này bằng cách kiểm tra các mục trong bảng replica_group_members trong cơ sở dữ liệu performance_schema:

(member1) mysql> SELECT * FROM performance_schema.replication_group_members;

Truy vấn này sẽ trả về một hàng đại diện cho máy chủ hiện tại:

Output (member1)
+------------------------------------+------------------------------------------------------------+----------------------+---------------------+---------------------+----------------------+---------------------------+------------------------------------------------+
 | CHANNEL_NAME               | MEMBER_ID                                                  | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+------------------------------------+------------------------------------------------------------+------------------- --+---------------------+---------------------+----------------------+---------------------------+------------------------------------------------+
 | group_replication_applier | 13324ab7-1b01-11e7-9dd1-22b78adaa992 | 203.0.113.1      |        3306          | ONLINE             | PRIMARY           | 8.0.28                     | XCom                                              |
+------------------------------------+------------------------------------------------------------+----------------------+---------------------+---------------------+----------------------+---------------------------+------------------------------------------------+
1 row in set (0.00 sec)

Giá trị ONLINE cho MEMBER_STATE chỉ ra rằng node này có đầy đủ các thao tác ở trong nhóm.

Tiếp theo, tạo một cơ sở dữ liệu thử nghiệm và bảng với một số dữ liệu mẫu. Sau khi các thành viên khác được thêm vào nhóm này, dữ liệu này sẽ tự động được sao chép sang đó.

Bắt đầu bằng cách tạo một cơ sở dữ liệu mẫu có tên là playground:

(member1) mysql> CREATE DATABASE playground;

Tiếp theo, tạo một bảng ví dụ có tên là equipment trong cơ sở dữ liệu playground bằng lệnh sau:

(member1) mysql> CREATE TABLE playground.equipment ( 
(member1) mysql> id INT NOT NULL AUTO_INCREMENT,
(member1) mysql> type VARCHAR(50),
(member1) mysql> quant INT,
(member1) mysql> color VARCHAR(25),
(member1) mysql> PRIMARY KEY(id)
(member1) mysql> ); 

Bảng này chứa bốn cột sau:

  • id: cột này sẽ chứa các giá trị số nguyên tự động tăng lên, nghĩa là ta sẽ không phải chỉ định giá trị cho cột này khi tải bảng có dữ liệu mẫu
  • type: cột này sẽ chứa các giá trị chuỗi mô tả loại “equipment” trên bảng “playground”
  • quant: cột này sẽ chứa các giá trị số nguyên để biểu thị số lượng của loại “equipment” trên “playground”
  • color: cột này sẽ chứa các giá trị chuỗi chỉ định màu của “equipment”

Ngoài ra, lưu ý rằng cột id được chỉ định làm khóa chính của bảng này. Trong MySQL, mọi bảng được sao chép thành một nhóm phải có một cột được chỉ định làm khóa chính của bảng.

Cuối cùng, hãy chạy lệnh sau để chèn một hàng dữ liệu vào bảng:

(member1) mysql> INSERT INTO playground.equipment (type, quant, color) VALUES ("slide", 2, "blue");

Truy vấn bảng để đảm bảo dữ liệu được nhập chính xác:

(member1) mysql> SELECT * FROM playground.equipment;
Output
+----+-------+--------+-------+
 | id  | type | quant | color |
+----+-------+--------+-------+
 |  1  | slide |     2    | blue  |
+----+-------+--------+-------+
1 row in set (0.00 sec)

Sau khi xác minh rằng máy chủ này là thành viên của nhóm và có thể khả năng thực hiện thao tác ghi, các máy chủ khác có thể tham gia nhóm.

Khởi động các Node còn lại

Tiếp theo, bắt đầu sao chép nhóm trên member2. Vì đã có một thành viên đang hoạt động, các bạn không cần phải khởi động lại nhóm và thành viên này có thể tham gia ngay lập tức:

(member2) mysql> START GROUP_REPLICATION;

Trên member3, bắt đầu sao chép nhóm theo cách tương tự:

(member3) mysql> START GROUP_REPLICATION;

Kiểm tra lại danh sách các thành viên trên bất kỳ máy chủ nào trong ba máy chủ thì sẽ hiện ra có ba máy chủ đang hoạt động, lệnh thực hiện như sau:

(member2) mysql> SELECT * FROM performance_schema.replication_group_members;
Output (member2)

+------------------------------------+------------------------------------------------------------+----------------------+---------------------+-----------------------+---------------------+--------------------------+------------------------------------------------+
 | CHANNEL_NAME               | MEMBER_ID                                                  | MEMBER_HOST  | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+------------------------------------+------------------------------------------------------------+----------------------+---------------------+-----------------------+---------------------+--------------------------+------------------------------------------------+
 | group_replication_applier | 13324ab7-1b01-11e7-9dd1-22b78adaa992 | 203.0.113.1       |       3306          | ONLINE               | PRIMARY           | 8.0.28                   | XCom                                              |
 | group_replication_applier | 1ae4b211-1b01-11e7-9d89-ceb93e1d5494 | 203.0.113.2       |       3306          | ONLINE               | SECONDARY     | 8.0.28                    | XCom                                              |
 | group_replication_applier | 157b597a-1b01-11e7-9d83-566a6de6dfef   | 203.0.113.3      |        3306          | ONLINE               | SECONDARY     | 8.0.28                    | XCom                                             |
+------------------------------------+------------------------------------------------------------+----------------------+---------------------+-----------------------+---------------------+--------------------------+------------------------------------------------+
3 rows in set (0.00 sec)

Tất cả thành viên đều có giá trị MEMBER_STATEONLINE. Đối với một nhóm mới, nếu bất kỳ node nào được liệt kê ra như là RECOVERY trong hơn một vài giây, thì đó thường là dấu hiệu cho thấy đã xảy ra lỗi hoặc có gì đó đã bị định cấu hình sai. Kiểm tra nhật ký tại /var/log/mysql/error.log để biết thêm thông tin về những gì đã xảy ra.

Tiếp theo, hãy kiểm tra xem thông tin cơ sở dữ liệu thử nghiệm đã được sao chép trên các thành viên mới chưa:

(member2) mysql> SELECT * FROM playground.equipment;
Output (member2)
+----+-------+---------+---------+
 | id  | type  | quant | color   |
+----+-------+---------+---------+
 |  1  | slide |     2     | blue    |
+----+-------+---------+---------+
1 row in set (0.01 sec)

Nếu dữ liệu có sẵn trên các thành viên mới, điều đó có nghĩa là sao chép nhóm đang hoạt động bình thường.

Bước 6: Kiểm tra khả năng ghi của các thành viên mới trong Group

Tiếp theo, các bạn có thể thử ghi vào cơ sở dữ liệu từ các thành viên Group Replication mới. Việc này có thành công hay không là tùy thuộc vào việc bạn chọn định dạng cấu hình đơn chính hay đa chính.

Kiểm tra những lệnh ghi trên môi trường Đơn chính

Trong nhóm đơn chính, các bạn sẽ thấy mọi thao tác ghi từ máy chủ không phải chính sẽ bị từ chối vì lý do nhất quán. Các bạn có thể tìm máy chủ chính hiện tại bất kỳ lúc nào bằng cách chạy truy vấn sau trên bất kỳ thành viên nào trong nhóm bản sao:

(member2) mysql> SHOW STATUS LIKE '%primary%';
Output (member2)
+-------------------------------------------------+------------------------------------------------------------+
| Variable_name                                  | Value                                                            |
+-------------------------------------------------+------------------------------------------------------------+
| group_replication_primary_member | 13324ab7-1b01-11e7-9dd1-22b78adaa992 |
+-------------------------------------------------+------------------------------------------------------------+
1 row in set (0.01 sec)

Giá trị của truy vấn sẽ là MEMBER_ID mà ta có gắn vào với máy chủ lưu trữ bằng cách truy vấn danh sách thành viên nhóm như đã làm trước đây:

(member2) mysql> SELECT * FROM performance_schema.replication_group_members;
Output (member2)
+------------------------------------+------------------------------------------------------------+-----------------------+---------------------+----------------------+
 | CHANNEL_NAME               | MEMBER_ID                                                  | MEMBER_HOST  | MEMBER_PORT | MEMBER_STATE |
+------------------------------------+------------------------------------------------------------+-----------------------+---------------------+----------------------+
 | group_replication_applier | 13324ab7-1b01-11e7-9dd1-22b78adaa992 | 203.0.113.1        |        3306         | ONLINE              |
 | group_replication_applier | 1ae4b211-1b01-11e7-9d89-ceb93e1d5494 | 203.0.113.2        |        3306         | ONLINE              |
 | group_replication_applier | 157b597a-1b01-11e7-9d83-566a6de6dfef   | 203.0.113.3        |        3306         | ONLINE              | 
+------------------------------------+------------------------------------------------------------+-----------------------+---------------------+----------------------+
3 rows in set (0.01 sec)

Như vậy, máy chủ tại 203.0.113.1 — member1 — hiện là máy chủ chính. Nên nếu các bạn cố ghi vào cơ sở dữ liệu này từ một thành viên khác (không phải máy chủ chính), thao tác sẽ không thành công:

(member2) mysql> INSERT INTO playground.equipment (type, quant, color) VALUES ("swing", 10, "yellow");
Output (member2)
ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statement

Đầu ra trên cho kết quả đúng như dự đoán vì nhóm hiện được định cấu hình chỉ theo đơn chính. Nếu máy chủ chính gặp sự cố và rời khỏi nhóm, nhóm sẽ tự động chọn một thành viên mới làm máy chủ chính và cho phép thực hiện ghi.

Kiểm tra những lệnh ghi trên môi trường Đa chính

Đối với các nhóm đã được cấu hình theo hướng đa chính, bất kỳ thành viên nào cũng có thể thực hiện ghi vào cơ sở dữ liệu.

Các bạn có thể kiểm tra kỹ xem nhóm của mình có đang hoạt động ở chế độ đa chính hay không bằng cách kiểm tra lại giá trị của biến group_replication_primary_member:

(member2) mysql> SHOW STATUS LIKE '%primary%';
Output (member2)
+--------------------------------------------------+--------+
 | Variable_name                                  | Value |
+--------------------------------------------------+--------+
 | group_replication_primary_member |           |
+--------------------------------------------------+--------+
1 row in set (0.02 sec)

Nếu biến trống, điều này có nghĩa là không có máy chủ chính được chỉ định và bất kỳ thành viên nào cũng có thể thực hiện việc ghi dữ liệu.

Kiểm tra điều này trên member2 bằng cách cố gắng ghi một số dữ liệu vào bảng equipment:

(member2) mysql> INSERT INTO playground.equipment (type, quant, color) VALUES ("swing", 10, "yellow");
Output
Query OK, 1 row affected (0.00 sec)

member2 đã thực thi thành công thao tác ghi mà không có bất kỳ lỗi nào.

Trên member3, hãy chạy truy vấn sau để kiểm tra xem mục mới đã được thêm chưa:

(member3) mysql> SELECT * FROM playground.equipment;
Output
+----+---------+---------+---------+
 | id  | type    | quant  | color  |
+----+---------+---------+---------+
 |  1  | slide    |    2     | blue    |
 |  2  | swing  |    10   | yellow |
+----+---------+---------+---------+
2 rows in set (0.00 sec)

Điều này xác nhận rằng ghi của member2 đã được sao chép thành công.

Bây giờ, hãy kiểm tra khả năng ghi trên member3 bằng cách chạy câu lệnh INSERT sau:

(member3) mysql> INSERT INTO playground.equipment (type, quant, color) VALUES ("seesaw", 3, "green");
Output (member3)
Query OK, 1 row affected (0.02 sec)

Quay lại member1, kiểm tra để đảm bảo rằng các thao tác ghi từ cả hai thành viên mới đã được sao chép:

(member1) mysql> SELECT * FROM playground.equipment;
Output
+----+----------+--------+---------+
 | id  | type     | quant | color   |
+----+----------+--------+---------+
 |  1  | slide     |     2   | blue    |
 |  2  | swing   |    10  | yellow |
 |  3  | seesaw |     3   | green  |
+----+----------+--------+---------+
3 rows in set (0.01 sec)

Điều này xác nhận rằng việc sao chép đã hoạt động đúng hướng đề ra và mỗi thành viên đều có khả năng thực hiện các thao tác ghi.

Bước 7: Thực hiện sao lưu cho Nhóm

Sau khi nhóm được khởi động, các thành viên riêng lẻ có thể tham gia và rời đi mà không ảnh hưởng đến tính khả dụng, miễn là nhóm vẫn có đủ thành viên để chọn máy chủ chính. Tuy nhiên, nếu một số thay đổi cấu hình nhất định được thực hiện hoặc tất cả thành viên của nhóm rời đi, thì các bạn có thể cần phải khởi động lại nhóm.

Trên member1, đặt biến group_replication_bootstrap_group thành ON:

(member1) mysql> SET GLOBAL GROUP_REPLICATION_BOOTSTRAP_GROUP=ON;

Sau đó khởi tạo nhóm:

(member1) mysql> START GROUP_REPLICATION;

Sau đó, có thể đặt lại biến group_replication_bootstrap_group thành OFF:

(member1) mysql> SET GLOBAL GROUP_REPLICATION_BOOTSTRAP_GROUP=OFF;

Khi thành viên đầu tiên đã bắt đầu nhóm, các thành viên khác có thể tham gia:

(member2) mysql> START GROUP_REPLICATION;

Thực hiện theo quy trình này cho các thành viên bổ sung khác:

(member3) mysql> START GROUP_REPLICATION;

Bây giờ nhóm sẽ bao gồm tất cả các thành viên hiện đang online:

(member3) mysql> SELECT * FROM performance_schema.replication_group_members;
Output
+------------------------------------+------------------------------------------------------------+----------------------+---------------------+----------------------+
 | CHANNEL_NAME               | MEMBER_ID                                                  | MEMBER_HOST  | MEMBER_PORT | MEMBER_STATE |
+------------------------------------+------------------------------------------------------------+----------------------+---------------------+----------------------+
 | group_replication_applier | 13324ab7-1b01-11e7-9dd1-22b78adaa992 | 203.0.113.1       |       3306          | ONLINE              |
 | group_replication_applier | 1ae4b211-1b01-11e7-9d89-ceb93e1d5494 | 203.0.113.2       |       3306          | ONLINE              |
 | group_replication_applier | 157b597a-1b01-11e7-9d83-566a6de6dfef   | 203.0.113.3      |       3306           | ONLINE             |
+------------------------------------+------------------------------------------------------------+----------------------+---------------------+----------------------+
3 rows in set (0.01 sec)

Quá trình này có thể được sử dụng để bắt đầu lại nhóm bất cứ khi nào cần thiết.

Bước 8: Tự động tham gia vào Group khi MySQL khởi động

Với cài đặt hiện tại, nếu máy chủ thành viên khởi động lại, nó sẽ không tự động tham gia lại nhóm. Nếu muốn các thành viên tự động tham gia lại nhóm, các bạn có thể sửa đổi một chút trong tệp cấu hình.

Cài đặt được nêu trong bước này hữu ích khi các bạn muốn các thành viên tự động tham gia khi họ khởi động. Tuy nhiên, có một số điều ta cần phải lưu ý. Đầu tiên, cài đặt này chỉ ảnh hưởng khi một MySQL instance được khởi động. Nếu thành viên bị xóa khỏi nhóm vì lí do timeout, nhưng MySQL instance vẫn trực tuyến, thì thành viên đó sẽ không tự động tham gia lại.

Thứ hai, việc bật cài đặt này khi khởi động một nhóm lần đầu tiên có thể gây hại. Khi không có một nhóm hiện có để tham gia, quá trình này sẽ mất nhiều thời gian để bắt đầu vì sẽ cố gắng liên hệ với các thành viên không tồn tại khác để khởi tạo. Chỉ sau một thời gian chờ dài, sẽ từ bỏ và bắt đầu lại như bình thường. Sau đó, các bạn sẽ phải sử dụng quy trình đã nêu ở trên để khởi động nhóm.

Nếu các bạn muốn định cấu hình các node để tự động tham gia nhóm khi MySQL khởi động, hãy mở tệp cấu hình chính của MySQL:

$ sudo nano /etc/mysql/my.cnf

Bên trong, tìm biến loose-group_replication_start_on_boot và đặt thành ON:

[mysqld]
. . .
loose-group_replication_start_on_boot = ON
. . .

Lưu và đóng tệp khi bạn hoàn tất. Đến đây, các thành viên sẽ tự động cố gắng tham gia nhóm vào lần tiếp theo MySQL instance của chính thành viên đó được khởi động.

Với hơn 10 năm kinh nghiệm, đồng hành cùng 50.000+ khách hàng trong và ngoài nước, Vietnix hiện đang là một trong những nhà cung cấp VPS hàng đầu tại Việt Nam. Nếu bạn đang cần một dịch vụ VPS để triển khai các dự án thì có thể liên hệ ngay với Vietnix.

  • Hơn 100.000 dịch vụ đã được kích hoạt tại Vietnix, chứng tỏ sự tin tưởng và lựa chọn của đông đảo khách hàng.
  • Vietnix đã đạt giải thưởng Thương hiệu Việt Nam xuất sắc năm 2022, khẳng định chất lượng và uy tín của dịch vụ.
  • 97% khách hàng đã và đang sử dụng dịch vụ tại Vietnix có phản hồi tích cực, đánh giá cao chất lượng.

Hãy liên hệ với Vietnix ngay hôm nay để biết thêm thông tin chi tiết và nhận ưu đãi hấp dẫn.

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
  • Hotline: 1800 1093
  • Email: sales@vietnix.com.vn

Lời kết

Sau bài hướng dẫn về cách cấu hình sao chép nhóm MySQL trên Ubuntu 20.04 này, các bạn đã học được cách cấu hình Group Replication MySQL giữa ba máy chủ Ubuntu 20.04. Hy vọng qua bài viết, bạn đã có thể thao tác một cách dễ dàng và nhanh chóng. Chia sẻ bài viết này của Vietnix nếu thấy hay và bổ ích.

Chia sẻ lên

Theo dõi trên

Logo Google new

Đánh giá

5/5 - (136 bình chọn)

Hưng Nguyễn

Kết nối với mình qua

Icon Quote
Icon Quote
Đăng ký nhận tin
Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vietnix

Bình luận

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Chỉ số tăng trưởng

Điểm Desktop

100 (+39)

Điểm Mobile

100 (+67)

Core Web Vitals

Passed

Lĩnh vực

Ecommerce

Chỉ số tăng trưởng

Điểm Desktop

99 (+28)

Điểm Mobile

100 (+50)

Core Web Vitals

Passed

Lĩnh vực

SEO

Chỉ số tăng trưởng

Điểm Desktop

99 (+26)

Điểm Mobile

98 (+59)

Core Web Vitals

Passed

Lĩnh vực

Ecommerce

Chỉ số tăng trưởng

Điểm Desktop

100 (+8)

Điểm Mobile

98 (+35)

Core Web Vitals

Passed

Lĩnh vực

Giáo Dục

Chỉ số tăng trưởng

Điểm Desktop

100 (+61)

Điểm Mobile

100 (+61)

Core Web Vitals

Passed

Lĩnh vực

Giáo Dục

Võ Thiên Tòng

25 Tháng 2 lúc 21:09

·

Mình muốn gửi lời cảm ơn chân thành đến Team Vietnix, anh Hưng Nguyễn, anh Vietnix Trung, em Quốc Huy đã hỗ trợ tối ưu Page Speed Insight (PSI) cho website vanvoiminhhoa.vn của mình.
Biết đến anh Hưng đã lâu nhưng chưa có duyên sử dụng dịch vụ bên anh. Tình cờ thấy được bài Post của anh về việc hỗ trợ tối ưu PSI miễn phí chỉ với vài Slot, thấy AE cmt khá nhiều nên cũng không nghĩ tới lượt mình. Hôm sau đánh liều inbox 1 phen xem sao thì may mắn được đưa vào danh sách. Vài ngày sau được Team Vietnix liên hệ và hỗ trợ.
Kết quả đạt được:
• Điểm xanh lè xanh lét
• Tốc độ tải trang nhanh hơn hẳn
• Các chỉ số cũng được cải thiện đáng kể
• Và mình tin rằng với việc PSI được cải thiện cũng thúc đẩy những thứ khác đi lên theo!
Mình thực sự hài lòng với dịch vụ của Vietnix và muốn giới thiệu đến tất cả mọi người:
• Dịch vụ Wordpress Hosting: Tốc độ nhanh, ổn định, bảo mật cao, hỗ trợ kỹ thuật 24/7. (https://vietnix.vn/wordpress-hosting/)
• Dịch vụ Business Hosting: Dung lượng lớn, phù hợp cho website có lượng truy cập cao, tích hợp nhiều tính năng cao cấp. (https://vietnix.vn/business-hosting/)
Đặc biệt, Vietnix đang có chương trình ưu đãi:
• Giảm giá 20% trọn đời khi nhập code THIENTONG_PAGESPEED tại trang thanh toán (Chu kỳ 12 tháng trở lên)
• Tặng 1 lần tối ưu điểm Page Speed Insight cho 1 website
Cám ơn Vietnix một lần nữa!
#Vietnix #Vanvoiminhhoa #Pagespeedinsight
Trước khi tối ưu
Sau khi tối ưu
Thiện Nguyễn - CEO SEO Dạo

5 Tháng 3 lúc 16:21

·

CORE WEB VITAL YẾU TỐ XẾP HẠNG TÌM KIẾM SEO
Core Web Vitals là một tập hợp các chỉ số đo lường hiệu suất của trang web từ góc độ người dùng, được Google sử dụng để đánh giá trải nghiệm người dùng trên các trang web. Các chỉ số chính bao gồm:
– Largest contentful paint (LCP): Tốc độ render của page. Mục tiêu là dưới 2,5 giây.
– First input delay (FID): Tốc độ phản hồi của website với tương tác của người dùng. Mục tiêu là dưới 100ms.
– Cumulative Layout Shift (CLS): Độ ổn định của bố cục trang. Mục tiêu là dưới 0.1.
Tất cả các chỉ số này đo lường các khía cạnh quan trọng của trải nghiệm người dùng trên trang web. Google đã công bố rằng từ tháng 5 năm 2021, các Core Web Vitals sẽ được sử dụng làm một trong các yếu tố đánh giá trong việc xếp hạng trang web trên kết quả tìm kiếm. Do đó, hiểu và cải thiện các Core Web Vitals là rất quan trọng đối với SEO.
Tóm lại, Core Web Vitals không chỉ giúp cải thiện hiệu suất và xếp hạng trang web trên công cụ tìm kiếm, mà còn cải thiện trải nghiệm của người dùng khi họ truy cập và tương tác với trang website.
P/s: mình đang có gói hỗ trợ đặc biệt cho anh em tối ưu tốc độ bên VIETNIX:
– Giảm 20% lifetime dịch vụ Hosting Business và Hosting Wordpress chu kỳ 12 tháng trở lên.
– Tặng 1 lần tối ưu điểm Page Speed Insight cho 1 website.
Anh em có nhu cầu đăng ký qua bạn Vietnix Trung này nhé và nhập mã SEODAO_PAGESPEED để được ưu đãi nhé.😁
Trước khi tối ưu
Sau khi tối ưu SEO Dạo
Icharm review

5 Tháng 3 lúc 15:43

·

[Mình vừa được hỗ trợ tối ưu page speed website]
Trước khi được tối ưu, web của mình điểm rất thấp, đặc biệt là mobile chỉ có 39. Cơ duyên thế nào lúc lướt face lại va phải chương trình tối ưu pagespeed bên Vietnix.
Sau khi được Trần Hoàng Phúc và team Vietnix hỗ trợ nhiệt tình, điểm web vọt lên 98 99 (như hình bên dưới). Dùng thử web thì thấy quá là mượt, 10 điểm cho team Vietnix.
Nói thật thì mình thật sự ấn tượng về sự nhiệt huyết, tận tâm và rất chuyên nghiệp bên Vietnix.
Anh em có nhu cầu về hosting hay có vấn đề về website như:
1. Web load chậm
2. Khách rời web vì đợi tải nội dung, hình ảnh lâu
3. Hay tất tần tật mọi thứ về website
THÌ LIÊN HỆ NGAY VIETNIX NHÉ!
Và đừng quên dùng pass “ICHARM_PAGESPEED” để được giảm 20% trọn đời hosting business và wp hosting. Quả code này còn được tặng 1 lần tối ưu pagespeed nữa nhé, ưu đãi chắc cũng phải nhất nhì thị trường luôn.
Trước khi tối ưu
Sau khi tối ưu
Hoàng Nguyễn

29 Tháng 2 lúc 17:04

·

Xin chào mọi người! Vừa rồi mình có sử dụng dịch vụ tối ưu website, tăng tốc độ tải trang pagespeed của Vietnix kết quả trên cả tuyệt vời nên mình viết bài này để chia sẻ thông tin với các bạn.
Lý do mình chọn dịch vụ tối ưu tốc độ website của Vietnix:
✅ Đội ngũ chuyên gia giàu kinh nghiệm: Đã tối ưu thành công cho hàng nghìn website trong nhiều lĩnh vực khác nhau. Các bạn nhân viên rất thân thiện, nhiệt tình và chủ động trong quá trình làm việc để cập nhật tiến độ.
✅ Quy trình chuyên nghiệp:
– Kiểm tra và phân tích: Vietnix sử dụng các công cụ tiên tiến để kiểm tra và phân tích tốc độ website của bạn.
– Xác định nguyên nhân: Vietnix xác định nguyên nhân khiến website tải chậm và đưa ra giải pháp tối ưu phù hợp.
– Tối ưu hóa website: Vietnix áp dụng các kỹ thuật tối ưu tiên tiến nhất để tăng tốc độ tải trang.
– Báo cáo kết quả: Vietnix cung cấp báo cáo chi tiết về kết quả tối ưu hóa website.
Công nghệ tiên tiến: Vietnix sử dụng các công nghệ tối ưu mới nhất như LiteSpeed, LSCache, Memcached, Redis, v.v.
✅ Cam kết kết quả: Vietnix cam kết tăng tốc độ website của bạn lên tối thiểu 90%.
✅ Giá cả cạnh tranh: Vietnix cung cấp dịch vụ tối ưu tốc độ website với mức giá cạnh tranh nhất trên thị trường.
📣 Để đăng ký sử dụng dịch vụ tối ưu tốc độ website và các dịch vụ khác như hosting, vps, domain… các bạn có thể đăng ký tại https://portal.vietnix.vn/aff.php?aff=57 hoặc Inbox cho sếp Vietnix Trung nhé.
Các bạn có thể kiểm tra tốc độ trang của mình https://lasan.edu.vn hoặc một vài trang khác đã sử dụng dịch vụ của Vietnix như sau:
https://pagespeed.web.dev/…/https…/v8beqewyt2…
https://pagespeed.web.dev/…/https…/etiohjvtl4…
https://pagespeed.web.dev/…/https…/yczuqpw6d1…
https://pagespeed.web.dev/…/https…/xf9y65kuzk…
https://pagespeed.web.dev/…/https…/fdrsms15en…
https://pagespeed.web.dev/…/https…/s7p9cgzeri…
Trước khi tối ưu
Sau khi tối ưu
Dũng cá xinh

30 Tháng 1 lúc 19:09

·

[Đỉnh]
Em có dùng hosting, vps, cloud vps, cloud server, dedicated server của rất nhiều bên từ trong nước đến nước ngoài để hosting khoảng 2,000+ domain. Mỗi bên đều có ưu nhược khác nhau, nhưng có 1 số bên đặc biệt “bá đạo”, trong đó có: Vietnix!!!!

Lần đầu tiên em được cả CEO Hưng Nguyễn lẫn Master về dev Vietnix Trung của 1 đơn vị hàng đầu liên quan đến Hosting, Server support từ A – Z (từ Zalo, Tele, đến FB và cả Phone)

Em có khá nhiều web dạng Big Data (bài, ảnh, database, data) lên đến hàng trăm Gb. Càng to thì nó càng có nhiều vấn đề về phần phản hồi ban đầu (nhược điểm cố hữu của php wordpress so với nativejs, reactjs, html, headless,…), và anh em Vietnix có nhã ý hỗ trợ xử lý phần Speed Insight này.

Kết quả thực sự kinh ngạc, từ cách trao đổi đến xử lý vấn đề, cut off những cái cần cut off, xử lý rất sâu vấn đề và gợi ý rất nhiều ý tưởng optimize hệ thống!!!! Thực sự quá hài lòng về kết quả cũng như cách tương tác của các đầu tầu bên Vietnix ^^!!!

Nhân cơ duyên được kết nối với những cao thủ của Vietnix, em xin chia sẻ và lan tỏa để nhiều anh em có cơ hội được sử dụng những dịch vụ tốt nhất với giá vô cùng hợp lý!!!!

1 – Với anh em chưa có hosting, em đặc biệt recommend sử dụng hosting bên Vietnix:
– Sử dụng mã DUNGCAXINH_PAGESPEED sẽ được giảm 20% trọn đời (lifetime luôn)
– Áp dụng các gói Hosting Business, Hosting wordpress và reg 1 năm trở lên
– Anh em chưa biết cách reg thì còm men hoặc ib để em hướng dẫn hoặc nhờ các bạn bên Vietnix support từ A – Z

2 – Anh em có hosting rồi và muốn build blog hoặc web = wordpress mà chưa có giao diện thì nhân tiện em đang có tài khoản Premium bên Envato, em sẽ tặng bất kỳ giao diện nào có trên Envato Themes (Link em để dưới còm men) ạ. Cả nhà còm hoặc ib em Themes mà mọi người “chim ưng”, em sẽ cho anh em tải về, up drive và gửi ạ!!! (Chương trình này kéo dài đến ngày 29 tết âm lịch ạ)

3 – BEST NHẤT luôn!!!! Anh em nào mua hosting dùng mã DUNGCAXINH_PAGESPEED sẽ được tối ưu 100 điểm tốc độ cho 1 web (đây là ưu đãi riêng của CEO Hưng Nguyễn dành cho bạn bè của #dungcaxinh ^^) (Giá trị nhất là cái vụ số 3 này anh chị em nhé ^^), cơ hội vàng để move về đơn vị hosting uy tín là đây ^^!!!!

Một lần nữa xin chân thành cám ơn 2 đồng chí em: Hưng Nguyễn và Vietnix Trung đã giải được một bài toán khó cho các trang WP Big data mà anh loay hoay bao lâu nay chưa tìm ra đáp án!!! Chúc Vietnix ngày càng phát triển và có một năm 2024 đại đại thắng nhé ^^ !!!!!
#SEO #Vietnix #dungcaxinh

Trước khi tối ưu
Sau khi tối ưu
Hiếu AI

2 Tháng 2 lúc 21:06

·

UY TÍN – TẬN TÂM – TỐC ĐỘ

3 từ trên là vẫn chưa đủ để nói về quy trình làm việc cực chuyên nghiệp của team Vietnix.Chuyện là mình có con website chính đang có lượt truy cập organic hàng ngày cũng tương đối (hình 1)

Vấn đề là, con site này đang nằm trên hosting dùng chung nên tốc độ load chưa nhanh, tốc độ load chưa nhanh thì trải nghiệm visitor chưa tốt, trải nghiệm visitor chưa tốt thì tỷ lệ chuyển đổi ra đơn hàng kiểu gì thì kiểu cũng sẽ bị ảnh hưởng.

Biết rõ là đang mất tiền nhưng không biết xử lý như lào, nghĩ mà cay.

Đang loay hoay thì vận may nó tới, hôm qua đang lướt phở bò thấy a Nguyễn Việt Dũng đăng bài, rảnh nên thả cái comment hóng hớt, ai ngờ ngoằng phát thấy ông Dũng tạo nhóm với Vietnix Trung luôn.

Ae Vietnix thì siêu tốc độ, lập tức lấy thông tin vào việc, không hỏi han lằng nhằng, không kỳ kèo chốt đơn dù lúc đấy cũng đang đêm muộn.
Sáng hôm sau dậy vẫn còn đang lơ ngơ mở điện thoại check tin nhắn thì đã thấy ae Vietnix báo xong việc, trong khi mình vẫn chưa biết có chuyện gì xảy ra @@.

Được cái bấm thử website thì thấy load siêu nhanh, chưa tới một giây là thông tin các thứ hiện hết. Quá phê, thả con ảnh trước sau (hình 2,3) để ace tiện đối chiếu nhé. Thế này thì mình gửi gắm nốt 15 em website còn lại cho team Vietnix thôi chứ không cần nghĩ ngợi gì nữa. 10/10.

Nên là:

  1. Anh chị em muốn có một con website tốc độ load nhanh như tốc độ trở mặt của nyc – Dùng ngay dịch vụ hosting của Vietnix
  2. Anh chị em có website rồi muốn tìm bên hosting uy tín, chuyên nghiệp hỗ trợ không quản ngày đêm – Liên hệ ngay Vietnix Trung
  3. Anh chị em quan tâm đến trải nghiệm khách hàng, từ những cái nhỏ nhất như tăng tốc độ website – Better call Vietnix Trung

Và đừng quên dùng pass “HIEUAI_PAGESPEED” để được giảm 20% trọn đời hosting business và wp hosting, quả code này còn được tặng 1 lần tối ưu pagespeed nữa nhé, ưu đãi chắc cũng phải nhất nhì thị trường luôn.
#SEO #Vietnix #hieuai

Website
Trước khi tối ưu
Sau khi tối ưu

Chỉ số tăng trưởng

Điểm Desktop

100 (+43)

Điểm Mobile

100 (+74)

Core Web Vitals

Passed

Lĩnh vực

AI