Điểm:0

Bản sao MySQL AWS EC2: Cấu hình để truy vấn Slave từ Master

lá cờ us

Tôi đã thiết lập thành công tình huống MySQL master-slave trên các phiên bản AWS EC2 riêng biệt. Slave đang chạy và sao chép master thành công.

Càng xa càng tốt.

Bây giờ tôi muốn có thể truy vấn nô lệ (để phân tích, v.v.) nhưng tôi không thể tìm thấy cấu hình phù hợp để có thể gửi truy vấn từ chủ đến nô lệ.

Các lỗi tôi gặp phải (tùy thuộc vào cài đặt Hồ sơ bảo mật AWS của tôi) là "Kết nối bị từ chối" hoặc "Đã hết thời gian kết nối"

Trên nô lệ, tôi đã cho phép Nhóm bảo mật EC2 cho khối IP chính để sử dụng để kết nối với cổng 3306 và tôi đã sử dụng địa chỉ IP của nô lệ trong cấu hình kết nối của chủ.

Điều đó dẫn đến lỗi "Kết nối bị từ chối" khi tôi cố truy vấn nô lệ từ chủ.

Trên máy chủ, tôi đã chạy 'hiển thị danh sách quy trình đầy đủ' và thấy máy chủ phụ là tên máy chủ AWS EC2, không phải IP và cổng 44508 đã được xử lý ở cuối, vì vậy tôi đã thay đổi thông tin kết nối trên máy chủ để sử dụng máy chủ phụ tên thay vì địa chỉ IP và cài đặt Nhóm bảo mật trên nô lệ để cho phép lưu lượng truy cập từ chủ trên cổng 44508 thay vì 3306.

Điều đó dẫn đến lỗi "Hết thời gian kết nối".

Tôi đã thử kết hợp IP/tên máy chủ/cổng trong Nhóm bảo mật của nô lệ, nhưng chỉ nhận được một trong 2 lỗi đó, với bất kỳ kết hợp nào.

Bất kỳ ai cũng có thể đưa ra các mẹo về cách định cấu hình mọi thứ để tôi có thể chạy các truy vấn (chỉ đọc) trên máy phụ từ máy chủ đó và trả lại kết quả cho máy chủ? TIA.

Cả hai hệ thống đều được thiết lập giống nhau, ngoại trừ hệ thống chính cũng đang chạy Codeigniter4, đây là nơi tôi đang thiết lập cấu hình kết nối:

Ubuntu 20.04.3 LTS và MySQL 8.0.26-0

Điểm:1
lá cờ la

Trong thiết lập như vậy, máy khách của bạn (ứng dụng, phần mềm) sẽ kết nối với nô lệ và chỉ chạy các truy vấn CHỌN (nếu bạn cần chạy truy vấn ghi - chúng chỉ nên được thực hiện trên chính).

Bạn nên kiểm tra:

  1. Nếu máy chủ MySQL lắng nghe trên mạng trong máy chủ nô lệ.
  2. Nếu các nhóm bảo mật cho phép kết nối với máy chủ nô lệ bằng ứng dụng của bạn.
  3. Slave nên được cấu hình ở dạng chỉ đọc để tránh sự cố.
lá cờ us
Máy chủ phụ đang sao chép chính xác, với dữ liệu được đẩy từ nhật ký nhị phân chính sang phụ. 'hiển thị trạng thái nô lệ' không hiển thị lỗi và các cập nhật về chủ đang xuất hiện gần như ngay lập tức trong nô lệ.'hiển thị danh sách quy trình đầy đủ' trên bản gốc hiển thị nô lệ. Nhóm bảo mật trên master cho phép truy cập từ và đến Slave. Nhóm bảo mật trên nô lệ cho phép truy cập vào và từ chủ. Tôi tưởng tượng nô lệ không được định cấu hình là chỉ đọc, nhưng tôi vẫn có thể truy vấn nó. Cám ơn vì sự quan tâm của bạn.
lá cờ us
Không còn nghi ngờ gì nữa, điều này có liên quan đến: Trên máy chủ nô lệ, tôi không thể đăng nhập vào nô lệ với tư cách là người dùng 'nô lệ'. Bảng 'mysql.user' hiển thị plugin cho người dùng 'nô lệ' là 'cached_sha2_password' thay vì 'mysql_native_password', đó có thể là lý do tại sao tôi không thể đăng nhập với tư cách người dùng (thậm chí không phải là 'root' ... Tôi có thể đăng nhập bằng 'sudo mysql')
lá cờ us
Không cố đăng nhập với tư cách 'nô lệ' nữa, giống như người dùng thông thường mà tôi sử dụng trên chủ. Tôi chắc chắn có thể đăng nhập vào db nô lệ bằng thông tin đăng nhập của người dùng bình thường. Tuy nhiên, không có niềm vui khi kết nối từ chủ, vì vậy tôi đã tạo một người dùng mới trên chủ có cùng tên và thông tin đăng nhập như trên chủ nhưng với IP máy chủ của nô lệ, sau đó với IP của chủ và sau đó với tên Máy chủ được báo cáo bởi 'hiển thị đầy đủ processlist' kết hợp những thứ đó trong chuỗi kết nối db với cổng 3306 hoặc cổng 44508 được báo cáo bởi 'hiển thị danh sách quy trình đầy đủ' nhưng vẫn không có niềm vui.
lá cờ la
Bạn nên đưa ra tất cả các lệnh chỉ sửa đổi dữ liệu trên máy chủ để tránh sự cố và tạo người dùng với máy chủ cục bộ hoặc 127.0.0.1 làm máy chủ, tức là user@'127.0.0.1' nếu bạn đang kết nối với MySQL từ máy chủ phụ.
lá cờ us
Cám ơn bạn một lần nữa. Có, tôi đưa ra tất cả các lệnh trên chủ và cho phép họ quản lý những gì xảy ra với nô lệ. Không có vấn đề với việc sao chép. Đây là một cơ sở dữ liệu chủ khá trưởng thành với tất cả người dùng máy chủ cục bộ được chỉ định và có sẵn để sử dụng trên chủ. Tôi không thể tìm ra cách chạy truy vấn trên nô lệ từ chủ. Tôi đang cố gắng kết nối với nô lệ từ chủ để chạy các truy vấn của mình và tôi không chạy bất cứ thứ gì TỪ nô lệ. Tôi muốn có thể chạy các truy vấn trên nô lệ TỪ chủ.
lá cờ la
Làm cách nào để bạn kết nối từ máy chủ chính đến máy chủ MySQL phụ khi cố gắng chạy truy vấn?
lá cờ us
Cảm ơn bạn, một lần nữa cho sự chú ý của bạn. Tôi sử dụng thông tin kết nối điển hình của MySQL ... máy chủ, người dùng, mật khẩu. Sau đó, tôi chỉ cần kiểm tra xem kết nối cơ sở dữ liệu đã được thực hiện hay chưa, nhưng trong mọi trường hợp, tôi không nhận được bất kỳ kết quả nào ngoại trừ (a) kết nối cơ sở dữ liệu không thành công và (b) lỗi "Kết nối bị từ chối" hoặc "Đã hết thời gian kết nối". Tôi đã mở hoàn toàn tường lửa của máy chủ nô lệ cho bất kỳ lưu lượng truy cập TCP nào từ bất kỳ nguồn nào bằng bất kỳ cổng nào và tôi đã nhận được lỗi "Đã hết thời gian kết nối". Tôi đã xác minh rằng máy chủ MySQL đang chạy (và đang sao chép máy chủ) và ngay cả khi mọi thứ đang mở... Tôi thấy bối rối.
lá cờ us
Khi tôi đưa ra 'hiển thị bản sao' trên bản chính, tôi thấy kết quả là bản phụ, nhưng mục nhập không có giá trị 'máy chủ'. Khi tôi phát hành 'hiển thị danh sách quy trình đầy đủ', tôi thấy nô lệ trong kết quả có giá trị Máy chủ hoàn chỉnh. Có lẽ điều đó có ý nghĩa gì đó?
lá cờ la
Hiển thị lệnh chính xác mà bạn đang sử dụng để kết nối và bạn cũng có thể dán my.cnf của nô lệ
lá cờ us
kết nối lỗi) { die("Kết nối không thành công: " . $conn->connect_error); } echo "Đã kết nối thành công"; ?>
lá cờ us
Bạn có câu hỏi cụ thể nào về cấu hình MySQL không? server_id=2 chẳng hạn.
lá cờ la
Hãy để chúng tôi [tiếp tục cuộc thảo luận này trong cuộc trò chuyện](https://chat.stackexchange.com/rooms/129860/discussion-between-martynas-saint-and-james-butler).
Điểm:0
lá cờ us

GIẢI QUYẾT: Trong /etc/mysql/mysql.conf.d/mysqld.cnf của nô lệ, tôi cần nhận xét các dòng 'địa chỉ liên kết' và 'địa chỉ mysqlx-bind-address', dừng nô lệ, khởi động lại mysqld và khởi động nô lệ.

Có 'bind-address = 127.0.0.1' đã ngăn các kết nối từ bất kỳ nơi nào khác. Nhận xét nó cho phép truy cập từ tất cả các nguồn, không chỉ localhost. Nhóm bảo mật EC2 hạn chế quyền truy cập vào cổng 3306 chỉ đối với máy chủ chính.

Làm việc tuyệt vời xung quanh, bây giờ. Cảm ơn bạn, một lần nữa, cho sự chú ý của bạn.

lá cờ la
về cơ bản cái này: Bạn nên kiểm tra: Nếu máy chủ MySQL lắng nghe trên mạng trong máy chủ nô lệ. ;:) rất vui vì bạn đã giải quyết được vấn đề của mình.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.