Bài đăng nổi bật

Redo log, undo log và binary log

Đây là ba loại log mà bạn đã từng nghe khi tiếp cận mysql. Trong các cơ sở dữ liệu quan hệ (RDBMS) khác, cũng sẽ có các thành phần có vai tr...

Thứ Bảy, 27 tháng 2, 2016

Quick setup haproxy and keepalived

Haproxy đóng vai trò như một reverse proxy thực hiện load balancer. Bản thân một haproxy thì không ấn định  high availabilty (HA) cho chính nó. Tính chất HA là ấn định cho cac backend server đằng sau nó. Nếu chỉ có một haproxy thì mô hình sẽ có một SPOF (Single Point Of Failure). Nó down thì cả hệ thống down theo. Để giải quyết, chúng ta  có thể thêm một haproxy để dự phòng (redundancy). Nhưng phương án đó lại phát sinh thêm vấn đề . Khi failover xảy ra client làm sao kết nối đến haproxy dự phòng. Tôi không thể gán cùng một IP lên hai haproxy được. IP conflict sẽ khiến mạng không ổn định. Tôi cũng không thể gán IP khác nhau cho mỗi haproxy được. Khi failover, tôi sẽ phải thông báo cho tất cả client về IP mới. Việc đó thật quá sức. Xem chừng lúc này chúng ta cần đến keepalived. Sử dụng keepalived sẽ cho phép tôi tạo ra một VIP - Virtual IP. Client sẽ kết nối đến haproxy qua VIP này. VIP này sẽ được keepalived luân chuyển sang haproxy dự phòng khi failover. Tất cả đều trong suốt với client. Client không biết được nó đang kết nối đến VIP, nó nghĩ nó đang kết nối trực tiếp đến một single backend thay vì một cluster backend nằm sau VIP. Client sẽ không biết đến real IP của proxy và IP của backend cũng như sự luân chuyển VIP này khi failover.

Q&A MySQL and Galera cluster

Các câu hỏi thường gặp trong mysql, galera cluster và các câu trả lời ngắn gọn.

xbstream: Can't create/write to file './ibdata1' galera

Đây là lỗi tôi gặp phải khi khởi động mariadb galera cluster cụm 3 node. Diễn biến là như này. Ban đầu tôi quên không cấu hình iptables giữa các server, tất nhiên khi đó các node joiner sẽ không thể đồng bộ data với donor để tham gia vào cluster. Tôi bèn stop iptables, nhưng sau đó tôi liên tục gặp thông báo "xbstream: Can't create/write to file './ibdata1' galera". Quái lạ, hay là trên joiner node có một file ibdata1 đó chưa được xóa, tôi tự nhủ. Di chuyển đến khu vực datadir của joiner tôi không thấy file nào tên là ibdata1 chỉ có sst_in_progress và grastate.dat Tại datadir của joiner, tôi bèn rm -rf * hi vọng sẽ xóa sạch các file cũ để làm mới khu vực này sau khi sst từ donor. Tiếp tục khởi động mysql trên joiner, tôi tiếp tục nhận được thông báo lỗi cũ...

Thứ Năm, 25 tháng 2, 2016

Kỹ thuật benchmark

Bạn khó có thể biết chính xác khả năng hoạt động server cho đến khi benchmark. Kết quả benchmark không chỉ tiết lộ ngưỡng hoạt động ở mức trần của server, của dịch vụ trên server mà còn giúp bạn loại trừ những sự cố tiềm ẩn. Ví dụ: Bạn có thể biết được disk có vấn đề khi kết quả benchmark cho tốc độ đo có chừng 53MB/s. Sẽ thật tai hại nếu sử dụng ổ cứng đó cho dịch vụ. Phát hiện và thay thế sớm sẽ bớt đau đớn hơn rất nhiều khi dịch vụ đã online.

Thứ Tư, 24 tháng 2, 2016

Raid on chip và Raid Card

Khi khai thác thông tin một server, tôi nhận thấy có sự khác biệt sau trong kết quả.

Cài đặt MegaCLI

MegaCLI là một công cụ kiểm tra tình trạng raid của LSI, nay đã là Avagotech. Và để công cụ này hoạt động server của bạn phải dùng MegaRAID, sản phẩm của LSI.

Thứ Ba, 23 tháng 2, 2016

Tìm hiểu về RAID

RAID - Viết tắt của Redundancy Array of Inexpensive Disks, theo cách gọi phổ biến thì là Redundancy Array of Independent Disks. Đó là một công nghệ storage cho phép gom nhiều physical disk thành một logical unit. Bằng cách này, RAID nâng cao throughput do data được đẩy vào nhiều disk. Về dung lượng data cũng được nâng cao, khả năng fault-tolerance của disk cũng được cải thiện khi mà các data bị mất trên một disk có thể khôi phục qua quá trình rebuilding từ các disk còn lại trong array. Tùy vào RAID level được sử dụng mà các ưu điểm trên có thể xuất hiện một phần hoặc tất cả. Chúng ta sẽ điểm qua các RAID level thông dụng nhất: RAID-0, RAID-1, RAID-5, RAID-6, RAID-10 và RAID-01.