2011-08-27 9 views
19

Tôi đang tự mình thử dự án cơ sở dữ liệu quy mô lớn đầu tiên của mình. Tôi có một myisam mysql db trên máy chủ 1 với một ứng dụng php tiêu thụ số lượng lớn dữ liệu khác nhau. Tôi có mysql myisam trên máy chủ 2 với ứng dụng php chọn và hiển thị dữ liệu.Tư vấn và kỹ thuật sao chép Muzak

Tôi muốn sao chép dữ liệu trên máy chủ 2.

Câu hỏi:

  1. Tôi có nên thay đổi máy chủ 1 mysql db để InnoDB
  2. Bạn có thể sao chép server1 InnoDB để server2 MyISAM
  3. tôi lưu trữ media như blobs với ý định sử dụng bộ nhớ đệm để giảm tải ứng suất trên máy chủ trực tiếp. Tôi có nên sử dụng lưu trữ hệ thống tập tin và rsync không.
  4. Bất kỳ lời khuyên chung nào từ những người có kinh nghiệm khác?

Trả lời

26

Dưới đây là những gì tôi đề xuất dựa trên kinh nghiệm của tôi.

  1. Bạn có thể sử dụng một loại công cụ (MyISAM hoặc InnoDB) cho cả hai máy chủ. Tôi trộn cả hai động cơ, bạn có thể gặp Deadlock, các vấn đề giao dịch, v.v ... và thời gian sửa chúng có thể gây đau đớn. Tôi gặp vấn đề một chút trước với InnoDB -> MyISAM. Bây giờ tôi đã sử dụng MyISAM trên tất cả các máy chủ.

  2. Để lưu trữ phương tiện (như hình ảnh, video hoặc tài liệu), bạn có thể tạo NFS và gắn kết thư mục như/usermedia/cả hai máy chủ truy cập. Do đó bạn không phải rsync mỗi lần. Ngoài ra, bạn có thể lưu dữ liệu meta hoặc thông tin phương tiện vào cơ sở dữ liệu để tham khảo và nơi tệp được lưu trên đĩa. Lưu ý: sử dụng blob để lưu tệp có thể tốt tùy thuộc vào phương tiện. Nếu bạn có một tệp xấp xỉ 1 gig có thể không phải là một ý tưởng hay để lưu trên cơ sở dữ liệu chẳng hạn).

  3. Sử dụng hệ thống bộ nhớ đệm để truy xuất dữ liệu (chẳng hạn như memcached). Ví dụ: nếu bạn yêu cầu dữ liệu và bạn cần hiển thị chúng cho người dùng, hãy xem trước trong bộ nhớ cache. Nếu nó không có trong bộ nhớ đệm, hãy truy vấn cơ sở dữ liệu, lưu nó vào bộ đệm và hiển thị. Lần sau cùng một thông tin được yêu cầu, bạn sẽ không yêu cầu nó từ máy chủ mà từ bộ nhớ. Giải pháp này sẽ tránh được nhiều cuộc gọi trên máy chủ cơ sở dữ liệu mà sẽ cải thiện hiệu suất.

Hãy cho tôi biết nếu bạn cần trợ giúp thêm.

+0

Cảm ơn. Các tập tin media là hình ảnh. 3 phiên bản của cùng một hình ảnh ở các kích cỡ khác nhau. Kích thước tập tin từ khoảng 10k đến 80k và không có khả năng nhiều hơn thế. Với ý nghĩ đó, nó vẫn sẽ là một kích thước db khổng lồ. Điều đó có quan trọng không? Hoặc là mysql đủ cứng rắn cho công việc. Tất nhiên memcached sẽ được sử dụng trên trực tiếp. – user915831

+0

Tôi thích ý tưởng của nfs. Nhưng vì đây là một dự án cá nhân, số tiền của tôi bị giới hạn. Tôi có một máy chủ chuyên dụng trực tiếp tốt. Trong một trung tâm dữ liệu với băng thông không được đo và kết nối t1. Tôi có một máy chủ nội bộ trong văn phòng nhưng bị hạn chế bởi kết nối Internet upstream mà là khoảng 512up 20mbs xuống. Vì vậy, với kết nối nfs iconnection trên máy chủ trong nhà sẽ làm chậm phần mềm tiêu thụ xuống - phải không? – user915831

+0

Máy chủ có nằm trong cùng một trung tâm dữ liệu không? họ có thể nói chuyện với nhau mà không cần VPN không? kiểm tra liên kết này http://how-to.linuxcareer.com/how-to-configure-nfs-on-linux. Có lẽ bạn có thể bắt đầu lưu trữ hình ảnh trong cơ sở dữ liệu vì chúng nhỏ và sau đó chuyển sang giải pháp NFS nếu bạn nâng cấp lên phương tiện lớn hơn. –

23

Tôi muốn giới thiệu InnoDB (cho các giao dịch, khóa hàng và không khóa bảng) và redis như bộ nhớ đệm rất nhanh và hiệu quả