Quay lại

Triển Khai Master - Slave Trong Laravel Sử Dụng Read Replica trong Amazon RDS Chuyên mục PHP và Laravel    2024-05-09    13 Lượt xem    13 Lượt thích    comment-3 Created with Sketch Beta. 0 Bình luận

Triển Khai Master - Slave Trong Laravel Sử Dụng Read Replica trong Amazon RDS
   

Giới Thiệu

Trong môi trường phát triển phần mềm hiện đại, việc quản lý dữ liệu là một phần quan trọng không thể thiếu. Trong môi trường web, cơ sở dữ liệu chính là trái tim của hệ thống, đóng vai trò quan trọng trong việc lưu trữ và truy cập dữ liệu. Đối với các ứng dụng web có lượng truy cập lớn, việc tối ưu hóa hiệu suất và độ tin cậy của cơ sở dữ liệu trở thành một yêu cầu cấp bách.

Trong Laravel, một trong những framework phổ biến nhất cho phát triển web PHP, chúng ta có khả năng triển khai Master-Slave Replication bằng cách sử dụng Read Replica trong Amazon RDS. Master-Slave Replication cho phép chúng ta có một cơ sở dữ liệu chính (Master) nhận và ghi dữ liệu, trong khi các cơ sở dữ liệu sao chép (Slaves) được sử dụng để đọc dữ liệu. Việc này không chỉ giúp tăng hiệu suất của hệ thống mà còn tăng tính khả dụng và độ tin cậy của cơ sở dữ liệu.

Trong bài viết này, chúng ta sẽ khám phá cách triển khai Master-Slave Replication trong Laravel và sử dụng Read Replica trong Amazon RDS. Chúng ta sẽ tìm hiểu cách cấu hình Laravel để tận dụng tính năng Read Replica của Amazon RDS, cũng như ưu điểm và nhược điểm của việc sử dụng Master-Slave Replication trong môi trường phát triển ứng dụng web.

Bước 1: Tạo Read Replica trong Amazon RDS

  1. Đăng nhập vào AWS Management Console.
  2. Chọn dịch vụ RDS.
  3. Tạo một instance RDS mới.
  4. Chọn RDS của bạn muốn tạo read replica và click vào actioc để tạo read replica.
  5. Chọn tùy chọn replica zone, kích thước, và cấu hình khác nếu cần.
  6. Nhấn "Create replica" để tạo replica.

Bước 2: Cấu hình Laravel để sử dụng Read Replica

  1. Trong file config/database.php, cấu hình kết nối cho read replica:

    // config/database.php
    <?php
    return [
    
        'default' => env('DB_CONNECTION', 'mysql'),
    
        'connections' => [
            'mysql' => [
    		    'read' => [
    		        'host' => [
    		            '192.168.1.1',
    		            '196.168.1.2',
    		        ],
    		    ],
    		    'write' => [
    		        'host' => [
    		            '196.168.1.3',
    		        ],
    		    ],
    		    'sticky' => true,
                'driver' => 'mysql',
                 # 'host' => env('DB_HOST', '127.0.0.1'),
                'port' => env('DB_PORT', '3306'),
                'database' => env('DB_DATABASE', 'forge'),
                'username' => env('DB_USERNAME', 'forge'),
                'password' => env('DB_PASSWORD', ''),
                'unix_socket' => env('DB_SOCKET', ''),
                'charset' => 'utf8mb4',
                'collation' => 'utf8mb4_unicode_ci',
                'prefix' => '',
                'strict' => true,
                'engine' => null,
            ],
        ],
    ];
    
    1. Tính năng "sticky": Khi được thiết lập là true, tính năng "sticky" sẽ đảm bảo rằng các truy vấn đọc sẽ được thực hiện trực tiếp trên máy chủ master sau khi thực hiện một hoạt động ghi. Điều này giúp khắc phục tình huống khi máy chủ master đã được ghi dữ liệu nhưng máy chủ slave chưa kịp cập nhật dữ liệu, dẫn đến khi đọc trên slave dữ liệu có thể chưa được mới nhất. Bằng cách này, tính năng "sticky" cung cấp một cơ chế đảm bảo rằng dữ liệu được đọc sẽ luôn là mới nhất từ máy chủ master, đảm bảo tính nhất quán của hệ thống.

    2. Cấu hình host trong read: Trong Laravel, bạn có thể cấu hình host trong phần read của cơ sở dữ liệu để truyền vào một mảng IP nếu bạn có nhiều máy chủ cơ sở dữ liệu hoặc scale server. Laravel sẽ chọn ngẫu nhiên một máy chủ trong danh sách để kết nối, giúp phân phối tải giữa các máy chủ và tăng tính khả dụng của hệ thống.

Bước 3: Kiểm tra kết nối và sử dụng Read Replica

  1. Chạy các lệnh artisan để kiểm tra kết nối và thực hiện các thao tác cần thiết trên replica.
  2. Đảm bảo rằng bạn đang sử dụng kết nối đúng cho mỗi loại truy vấn (đọc hoặc ghi) trong ứng dụng của bạn.

Lưu ý Quan Trọng:

  • Sử dụng replica đọc để truy vấn dữ liệu chỉ đọc hoặc truy vấn có thể chấp nhận độ trễ dữ liệu.
  • Đảm bảo rằng bạn hiểu rõ cách Amazon RDS sao chép dữ liệu và độ trễ giữa cơ sở dữ liệu gốc và replica.
  • Kiểm tra chi phí cho việc triển khai replica đọc vì nó có thể tăng chi phí hoạt động của bạn.

Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough

Bài viết liên quan

Learning English Everyday