2011-01-08 71 views
5

Tôi đang có hai phiên bản mysql trên cùng một máy. Các bản cài đặt có trên/usr/loca/mysql1 và/usr/local/mysql2.thay đổi đường dẫn my.cnf mặc định trong mysql

Tôi có các tệp my.cnf riêng biệt nằm trong/etc/mysql1 và/etc/mysql2. Tôi đã cài đặt thể hiện đầu tiên của sql bằng cách sử dụng phân phối nguồn và với tùy chọn --prefix =/usr/local/mysql1. Điều thứ hai tôi nhận được từ việc sao chép và chép thư mục tương tự vào/usr/local/mysql2.

Khi tôi khởi động mysql daemon trên /usr.local/mysql/libexec nó đọc tệp my.cnf trong/etc/mysql1. Và nếu tôi khởi động mysql daemon trong/usr/local/mysql2 nó đọc cùng một tập tin my.cnf. Tôi có số cổng riêng và tệp .sock được xác định trong tệp .cnf ở 2 vị trí đó.

Tôi có thể đọc tệp my.cnf ở vị trí thứ hai bằng cách sử dụng tùy chọn --defaults-file =/etc/mysql2/my.cnf khi khởi động mysqld. Tôi không cần phải nhập này mỗi khi tôi bắt đầu daemon.

Nếu tôi sắp có nhiều phiên bản hơn, làm cách nào tôi có thể trỏ tệp my.cnf chính xác để đọc cho từng và mọi trình nền mysql. Thế nào là retionale đằng sau liên kết mysqld với tệp my.cnf.

làm cách nào tôi có thể xác định vị trí của tệp my.cnf cho từng trường hợp.

+0

Chỉ cần viết hai tập lệnh khởi động mysqld riêng biệt (hoặc mysqlmanager) tách biệt từng chữ một với một số khác – ajreal

+0

Hệ điều hành của bạn là gì? –

Trả lời

6

Như bạn đã khám phá, MySQL có một vị trí tìm kiếm được biên dịch cho tệp cấu hình của nó. Mặc dù bạn có thể biên dịch lại chính mình, thay đổi điều này, bạn cũng đã phát hiện ra tùy chọn --defaults-file tới mysqld, hướng dẫn sử dụng đường dẫn cấu hình hoàn toàn khác. Kết hợp với --data-dir, điều này có nghĩa là bạn có thể bắt đầu nhiều phiên bản của MySQL bị ràng buộc với các cổng khác nhau (và địa chỉ, nếu thích) và làm việc với bộ dữ liệu riêng biệt hoàn toàn, trong khi làm việc cùng các tệp nhị phân và thư viện.

Theo truyền thống, hầu hết các bản phân phối hệ điều hành sẽ gộp một tập lệnh init duy nhất để bắt đầu phiên bản "mặc định" của MySQL; đó là, cài đặt được đặt ở vị trí "thông thường" và với đường dẫn cấu hình chuẩn. Mặc dù điều này là để phục vụ cho trường hợp phổ biến nhất, nhưng những gì bạn đang theo sau có một chút khác biệt, vì vậy bạn sẽ cần phải tạo các tập lệnh riêng biệt để khởi chạy các phiên bản riêng biệt.

Nếu bạn dự định triển khai nhiều cá thể MySQL trên cùng một máy (và tôi phải hỏi tại sao), thì bạn có thể muốn viết một tập lệnh init tùy chỉnh có cách "khám phá" từng trong số này (có lẽ bằng cách kiểm tra một số thư mục có chứa bố cục "phổ biến") và sau đó lặp lại chúng, bắt đầu từ mỗi thư mục. Tất nhiên, cùng một init script sau đó cần phải có khả năng định vị và đúng cách tắt mỗi một.

0

Tôi nghĩ cách chắc chắn duy nhất là biên dịch từ nguồn có tùy chọn tiền tố. Hoặc là, hoặc tạo ra một kịch bản bash mà bắt đầu mysql2 với tùy chọn --defaults-file và sau đó sử dụng nó để bắt đầu nó thay thế.

Tuy nhiên, "tạo" cài đặt khác theo cách bạn đã làm không tốt. Khi bạn biên dịch một gói, PREFIX được mã hóa cứng vào tệp thực thi. Vì vậy, bất cứ khi nào nó tìm kiếm một tài nguyên, nó bắt đầu từ tiền tố đó, trừ khi được yêu cầu không có tùy chọn dòng lệnh.

Vì vậy, nếu tôi là bạn, tôi sẽ chỉ biên dịch lại từ nguồn có tiền tố mới.

Các vấn đề liên quan