Chạy nhiều máy chủ MySQL trên cùng một máy
Trong một số trường hợp, bạn có thể muốn chạy nhiều máy chủ mysql trên cùng một máy. Bạn có thể muốn kiểm tra bản phát hành MySQL mới trong khi vẫn giữ nguyên thiết lập sản xuất hiện tại của mình. Hoặc bạn có thể muốn cấp cho những người dùng khác nhau quyền truy cập vào các máy chủ mysql khác nhau mà họ tự quản lý. (Ví dụ: bạn có thể là Nhà cung cấp dịch vụ Internet muốn cung cấp cài đặt MySQL độc lập cho các khách hàng khác nhau. ) Show
Để chạy nhiều máy chủ trên một máy, mỗi máy chủ phải có các giá trị duy nhất cho một số tham số vận hành. Chúng có thể được đặt trên dòng lệnh hoặc trong các tệp tùy chọn. Xem phần có tên “Chỉ định các tùy chọn chương trình” Ít nhất các tùy chọn sau phải khác nhau đối với mỗi máy chủ --port=port_num --port kiểm soát số cổng cho các kết nối TCP/IP --socket=đường dẫn--socket kiểm soát đường dẫn tệp ổ cắm Unix trên Unix và tên của ống được đặt tên trên Windows. Trên Windows, chỉ cần chỉ định tên đường ống riêng biệt cho những máy chủ hỗ trợ kết nối đường ống được đặt tên --shared-memory-base-name=tênTùy chọn này hiện chỉ được sử dụng trên Windows. Nó chỉ định tên bộ nhớ dùng chung được sử dụng bởi máy chủ Windows để cho phép máy khách kết nối qua bộ nhớ dùng chung. Tùy chọn này là mới trong MySQL 4. 1 --pid-file=đường dẫnTùy chọn này chỉ được sử dụng trên Unix. Nó cho biết tên của tệp mà máy chủ ghi ID tiến trình của nó Nếu bạn sử dụng các tùy chọn tệp nhật ký sau, chúng phải khác nhau đối với mỗi máy chủ
Tùy chọn tệp nhật ký được mô tả trong Nếu bạn muốn có hiệu suất cao hơn, bạn cũng có thể chỉ định các tùy chọn sau đây theo cách khác nhau cho từng máy chủ, để phân bổ tải giữa một số đĩa vật lý
Bạn cũng nên có các thư mục tạm thời khác nhau để dễ dàng xác định máy chủ MySQL nào đã tạo bất kỳ tệp tạm thời cụ thể nào Nói chung, mỗi máy chủ cũng nên sử dụng một thư mục dữ liệu khác, được chỉ định bằng tùy chọn --datadir=path Cảnh báo. Thông thường, bạn không bao giờ nên có hai máy chủ cập nhật dữ liệu trong cùng một cơ sở dữ liệu. Điều này có thể dẫn đến những bất ngờ khó chịu nếu hệ điều hành của bạn không hỗ trợ khóa hệ thống không có lỗi. Nếu (bất chấp cảnh báo này) bạn chạy nhiều máy chủ sử dụng cùng một thư mục dữ liệu và chúng đã bật ghi nhật ký, bạn phải sử dụng các tùy chọn thích hợp để chỉ định tên tệp nhật ký duy nhất cho mỗi máy chủ. Nếu không, các máy chủ sẽ cố gắng đăng nhập vào cùng một tệp. Xin lưu ý rằng kiểu thiết lập này sẽ chỉ hoạt động với các bảng ISAM, MyISAM và MERGE chứ không hoạt động với bất kỳ công cụ lưu trữ nào khác Cảnh báo chống chia sẻ thư mục dữ liệu giữa các máy chủ cũng áp dụng trong môi trường NFS. Cho phép nhiều máy chủ MySQL truy cập vào một thư mục dữ liệu chung qua NFS là một ý tưởng tồi
Làm cho nó dễ dàng cho chính mình. Quên việc chia sẻ thư mục dữ liệu giữa các máy chủ qua NFS. Một giải pháp tốt hơn là có một máy tính chứa nhiều CPU và sử dụng một hệ điều hành xử lý các luồng hiệu quả Nếu bạn có nhiều cài đặt MySQL ở các vị trí khác nhau, thông thường bạn có thể chỉ định thư mục cài đặt cơ sở cho từng máy chủ với tùy chọn --basingir=path để khiến mỗi máy chủ sử dụng một thư mục dữ liệu, tệp nhật ký và tệp PID khác nhau. (Các giá trị mặc định cho tất cả các giá trị này được xác định tương ứng với thư mục cơ sở). Trong trường hợp đó, các tùy chọn duy nhất khác mà bạn cần chỉ định là các tùy chọn --socket và --port. Ví dụ: giả sử bạn cài đặt các phiên bản khác nhau của MySQL bằng cách sử dụng bản phân phối nhị phân tệp tar. Chúng sẽ cài đặt ở các vị trí khác nhau, vì vậy bạn có thể khởi động máy chủ cho mỗi lần cài đặt bằng cách sử dụng lệnh bin/mysqld_safe trong thư mục cơ sở tương ứng của nó. mysqld_safe sẽ xác định tùy chọn --basedir thích hợp để chuyển sang mysqld và bạn chỉ cần chỉ định tùy chọn --socket và --port cho mysqld_safe. (Đối với các phiên bản MySQL cũ hơn 4. 0, sử dụng safe_mysqld thay vì mysqld_safe. ) Như đã thảo luận trong các phần sau, có thể khởi động các máy chủ bổ sung bằng cách đặt các biến môi trường hoặc bằng cách chỉ định các tùy chọn dòng lệnh thích hợp. Tuy nhiên, nếu bạn cần chạy nhiều máy chủ trên cơ sở lâu dài hơn, sẽ thuận tiện hơn khi sử dụng các tệp tùy chọn để chỉ định cho mỗi máy chủ các giá trị tùy chọn đó phải là duy nhất cho nó Chạy nhiều máy chủ trên WindowsBạn có thể chạy nhiều máy chủ trên Windows bằng cách khởi động chúng theo cách thủ công từ dòng lệnh, mỗi máy chủ có các thông số vận hành phù hợp. Trên các hệ thống dựa trên Windows NT, bạn cũng có tùy chọn cài đặt một số máy chủ dưới dạng dịch vụ Windows và chạy chúng theo cách đó. Hướng dẫn chung để chạy máy chủ MySQL từ dòng lệnh hoặc dịch vụ được đưa ra trong. Phần này mô tả cách đảm bảo rằng bạn khởi động từng máy chủ với các giá trị khác nhau cho các tùy chọn khởi động đó phải là duy nhất trên mỗi máy chủ, chẳng hạn như thư mục dữ liệu. Các tùy chọn này được mô tả trong phần có tên “Chạy nhiều máy chủ MySQL trên cùng một máy” Khởi động nhiều máy chủ Windows tại Dòng lệnhĐể khởi động nhiều máy chủ theo cách thủ công từ dòng lệnh, bạn có thể chỉ định các tùy chọn thích hợp trên dòng lệnh hoặc trong tệp tùy chọn. Sẽ thuận tiện hơn khi đặt các tùy chọn trong tệp tùy chọn, nhưng cần đảm bảo rằng mỗi máy chủ có bộ tùy chọn riêng. Để thực hiện việc này, hãy tạo một tệp tùy chọn cho mỗi máy chủ và cho máy chủ biết tên tệp bằng tùy chọn --defaults-file khi bạn chạy nó Giả sử bạn muốn chạy mysqld trên cổng 3307 với thư mục dữ liệu là C. \mydata1 và mysqld-max trên cổng 3308 với thư mục dữ liệu của C. \mydata2. (Để thực hiện việc này, hãy đảm bảo rằng trước khi bạn khởi động máy chủ, mỗi thư mục dữ liệu đều tồn tại và có bản sao cơ sở dữ liệu mysql riêng có chứa các bảng cấp. ) Sau đó tạo hai tệp tùy chọn. Ví dụ: tạo một tệp có tên C. \my-opts1. cnf trông như thế này [mysqld] datadir = C:/mydata1 port = 3307 Tạo một tệp thứ hai có tên C. \my-opts2. cnf trông như thế này [mysqld] datadir = C:/mydata2 port = 3308 Sau đó khởi động mỗi máy chủ với tệp tùy chọn riêng C:\> C:\mysql\bin\mysqld --defaults-file=C:\my-opts1.cnf C:\> C:\mysql\bin\mysqld-max --defaults-file=C:\my-opts2.cnf Trên NT, mỗi máy chủ sẽ bắt đầu ở nền trước (không có lời nhắc mới nào xuất hiện cho đến khi máy chủ thoát ra sau đó); Để tắt máy chủ, bạn phải kết nối với số cổng thích hợp C:\> C:\mysql\bin\mysqladmin --port=3307 shutdown C:\> C:\mysql\bin\mysqladmin --port=3308 shutdown Máy chủ được cấu hình như vừa mô tả sẽ cho phép máy khách kết nối qua TCP/IP. Nếu phiên bản Windows của bạn hỗ trợ các đường ống có tên và bạn cũng muốn cho phép các kết nối đường ống được đặt tên, hãy sử dụng máy chủ mysqld-nt hoặc mysqld-max-nt và chỉ định các tùy chọn kích hoạt đường ống được đặt tên và chỉ định tên của nó. Mỗi máy chủ hỗ trợ các kết nối đường ống được đặt tên phải sử dụng một tên đường ống duy nhất. Ví dụ, C. \my-opts1. tệp cnf có thể được viết như thế này [mysqld] datadir = C:/mydata1 port = 3307 enable-named-pipe socket = mypipe1 Sau đó khởi động máy chủ theo cách này C:\> C:\mysql\bin\mysqld-nt --defaults-file=C:\my-opts1.cnf Sửa đổi C. \my-opts2. cnf tương tự để máy chủ thứ hai sử dụng Khởi động nhiều máy chủ Windows dưới dạng dịch vụTrên các hệ thống dựa trên NT, máy chủ MySQL có thể chạy như một dịch vụ Windows. Quy trình cài đặt, kiểm soát và xóa một dịch vụ MySQL được mô tả trong Kể từ MySQL 4. 0. 2, bạn có thể cài đặt nhiều máy chủ dưới dạng dịch vụ. Trong trường hợp này, bạn phải đảm bảo rằng mỗi máy chủ sử dụng một tên dịch vụ khác ngoài tất cả các tham số khác phải là duy nhất cho mỗi máy chủ Đối với các hướng dẫn sau, giả sử rằng bạn muốn chạy máy chủ mysqld-nt từ hai phiên bản MySQL khác nhau được cài đặt tại C. \mysql-4. 0. 8 và C. \mysql-4. 0. 17, tương ứng. (Đây có thể là trường hợp nếu bạn đang chạy 4. 0. 8 làm máy chủ sản xuất của bạn, nhưng muốn kiểm tra 4. 0. 17 trước khi nâng cấp lên nó. ) Các nguyên tắc sau áp dụng khi cài đặt dịch vụ MySQL với tùy chọn --install hoặc --install-manual
Ghi chú. Trước MySQL 4. 0. 17, chỉ máy chủ được cài đặt bằng tên dịch vụ mặc định (MySQL) hoặc máy chủ được cài đặt rõ ràng với tên dịch vụ mysqld mới đọc nhóm [mysqld] trong các tệp tùy chọn tiêu chuẩn. Kể từ ngày 4. 0. 17, tất cả các máy chủ đều đọc nhóm [mysqld] nếu chúng đọc các tệp tùy chọn tiêu chuẩn, ngay cả khi chúng được cài đặt bằng tên dịch vụ khác. Điều này cho phép bạn sử dụng nhóm [mysqld] cho các tùy chọn sẽ được sử dụng bởi tất cả các dịch vụ MySQL và một nhóm tùy chọn được đặt tên theo từng dịch vụ để máy chủ được cài đặt với tên dịch vụ đó sử dụng Dựa trên thông tin trước đó, bạn có một số cách để thiết lập nhiều dịch vụ. Các hướng dẫn sau đây mô tả một số ví dụ. Trước khi thử bất kỳ dịch vụ nào trong số chúng, trước tiên hãy đảm bảo rằng bạn đã tắt và xóa mọi dịch vụ MySQL hiện có
Để xóa nhiều dịch vụ, hãy sử dụng mysqld --remove cho từng dịch vụ, chỉ định tên dịch vụ theo tùy chọn --remove. Nếu tên dịch vụ là mặc định (MySQL) thì có thể bỏ qua Chạy nhiều máy chủ trên UnixCách dễ nhất để chạy nhiều máy chủ trên Unix là biên dịch chúng với các cổng TCP/IP và tệp ổ cắm Unix khác nhau để mỗi máy chủ đang nghe trên các giao diện mạng khác nhau. Ngoài ra, bằng cách biên dịch trong các thư mục cơ sở khác nhau cho mỗi lần cài đặt, điều đó sẽ tự động dẫn đến các vị trí thư mục dữ liệu, tệp nhật ký và tệp PID được biên dịch khác nhau cho từng máy chủ của bạn Giả sử rằng một máy chủ hiện có được cấu hình cho số cổng TCP/IP mặc định (3306) và tệp ổ cắm Unix (/tmp/mysql. bít tất). Để cấu hình một máy chủ mới để có các tham số hoạt động khác nhau, hãy sử dụng lệnh cấu hình giống như thế này [mysqld] datadir = C:/mydata2 port = 33083 Ở đây, port_number và file_name phải khác với số cổng TCP/IP mặc định và tên đường dẫn tệp ổ cắm Unix và giá trị --prefix phải chỉ định một thư mục cài đặt khác với thư mục cài đặt MySQL hiện tại. Nếu bạn có một máy chủ MySQL đang nghe trên một số cổng nhất định, bạn có thể sử dụng lệnh sau để tìm hiểu xem nó đang sử dụng các tham số vận hành nào cho một số biến quan trọng có thể định cấu hình, bao gồm thư mục cơ sở và tên tệp ổ cắm Unix [mysqld] datadir = C:/mydata2 port = 33084 Với thông tin được hiển thị bởi lệnh đó, bạn có thể cho biết giá trị tùy chọn nào không được sử dụng khi định cấu hình máy chủ bổ sung Lưu ý rằng nếu bạn chỉ định localhost làm tên máy chủ, mysqladmin sẽ mặc định sử dụng kết nối tệp ổ cắm Unix thay vì TCP/IP. Trong Mysql 4. 1, bạn có thể chỉ định rõ ràng giao thức kết nối sẽ sử dụng bằng cách sử dụng --protocol={TCP. Ổ CẮM. ĐƯỜNG ỐNG. BỘ NHỚ} tùy chọn Bạn không cần phải biên dịch một máy chủ MySQL mới chỉ để bắt đầu với một tệp ổ cắm Unix khác và số cổng TCP/IP. Cũng có thể chỉ định các giá trị đó trong thời gian chạy. Một cách để làm như vậy là sử dụng các tùy chọn dòng lệnh [mysqld] datadir = C:/mydata2 port = 33085 Để bắt đầu một máy chủ thứ hai, hãy cung cấp các giá trị tùy chọn --socket và --port khác nhau, đồng thời chuyển một tùy chọn --datadir=path cho mysqld_safe để máy chủ sử dụng một thư mục dữ liệu khác Một cách khác để đạt được hiệu ứng tương tự là sử dụng các biến môi trường để đặt tên tệp ổ cắm Unix và số cổng TCP/IP [mysqld] datadir = C:/mydata2 port = 33086 Đây là một cách nhanh chóng để khởi động máy chủ thứ hai để sử dụng cho thử nghiệm. Điểm hay của phương pháp này là cài đặt biến môi trường sẽ áp dụng cho bất kỳ chương trình máy khách nào mà bạn gọi từ cùng một trình bao. Do đó, các kết nối cho những máy khách đó sẽ tự động được chuyển đến máy chủ thứ hai Phụ lục�E, Biến môi trường bao gồm danh sách các biến môi trường khác mà bạn có thể sử dụng để tác động đến mysqld Để thực thi máy chủ tự động, tập lệnh khởi động của bạn được thực thi khi khởi động sẽ thực thi lệnh sau một lần cho mỗi máy chủ với đường dẫn tệp tùy chọn thích hợp cho mỗi lệnh [mysqld] datadir = C:/mydata2 port = 33087 Mỗi tệp tùy chọn phải chứa các giá trị tùy chọn dành riêng cho một máy chủ nhất định Trên Unix, tập lệnh mysqld_multi là một cách khác để khởi động nhiều máy chủ. Thấy Sử dụng các chương trình máy khách trong môi trường nhiều máy chủKhi bạn muốn kết nối một chương trình máy khách với máy chủ MySQL đang lắng nghe các giao diện mạng khác với các giao diện được biên dịch vào máy khách của bạn, bạn có thể sử dụng một trong các phương pháp sau
|