Làm cách nào để thay đổi nô lệ trước đó của MySQL thành chủ và xóa thông tin trạng thái nô lệ?


10

Tôi có một bản gốc -> cấu hình nô lệ trong đó bản gốc bị lỗi. Tôi đã có thể thiết lập lại nô lệ cũ thành chủ nhân và chủ cũ thành nô lệ từ đó. Khỏe.

Những gì tôi dường như không thể làm là xóa thông tin chính về nô lệ cũ mà bây giờ là chủ mới. Tôi hiểu rồi:

mysql> show slave status \G
*************************** 1. row ***************************
           Slave_IO_State: 
              Master_Host: 10.1.2.101
              Master_User: replicationSlave
              Master_Port: 3306
              ...
              Slave_IO_Running: No
              Slave_SQL_Running: No

Tôi đã đọc rất nhiều tài liệu về MySQL nhưng tôi vẫn chưa tìm được cách xóa thông tin nô lệ từ chủ mới. Tôi đã thử:

  1. RESET SLAVEmà dường như không xóa các cài đặt đó. [[Trên thực tế, nó xóa master.infotệp nhưng không cài đặt bộ nhớ. Xem bên dưới.]]
  2. CHANGE MASTER TO MASTER_HOST='' mà chỉ phát sinh lỗi vì nó không được dùng gần đây.
  3. Kiểm tra my.cnfcái nào không có thông tin chính vì chúng được thêm vào theo chương trình.
  4. RESET MASTERbởi vì một số tài liệu mysql đề nghị nó. Điều đó chỉ đặt lại các bản ghi bin.
  5. Chọc vào trong các bảng MySQL bên trong để xem liệu tôi có thể tìm thấy các trường để xóa không.

Cách thích hợp để làm điều này trên MySQL ~ 5.5.9 là gì? Cảm ơn vì bất kì sự giúp đỡ.


Biên tập:

Vì vậy, nó chỉ ra rằng RESET SLAVEloại bỏ các master.infotập tin như @RolandoMySQLDBA ngụ ý. Tuy nhiên, bạn vẫn cần khởi động lại máy chủ trước khi thông tin nô lệ bị xóa.

Có cách nào để xóa thông tin nô lệ này mà không phải khởi động lại mysqld không?


Câu trả lời:


10

Trong MySQL 5.5.16 trở lên, bạn có thể sử dụng RESET SLAVE ALLđể thực hiện tất cả những việc RESET SLAVEđó đặt lại các tham số kết nối từ bộ nhớ, theo cách này, nó không yêu cầu khởi động lại mysqld.


6

Cách nhanh nhất và bẩn nhất để xóa thông tin nô lệ khỏi phiên bản MySQL

  • Thêm skip-slave-startvào /etc/my.cnf trong[mysqld]
  • service mysql stop
  • rm -f /var/lib/mysql/master.info /var/lib/mysql/relay-*
  • service mysql start
  • Xóa skip-slave-startkhỏi /etc/my.cnf

Chuyện đó nên làm vì bạn !!!

Điều này sẽ là cần thiết bởi vì theo Tài liệu MySQL vềRESET SLAVE :

Trong MySQL 5.5 (không giống như trường hợp trong MySQL 5.1 trở về trước), RESET SLAVE không thay đổi bất kỳ tham số kết nối sao chép nào như máy chủ chính, cổng chính, người dùng chính hoặc mật khẩu chính được giữ lại trong bộ nhớ. Điều này có nghĩa là START SLAVE có thể được ban hành mà không yêu cầu câu lệnh THAY ĐỔI THAY ĐỔI sau RESET SLAVE.

Do đó, thông tin nhân rộng vẫn còn trong bộ nhớ. Khởi động lại mysql là cách duy nhất để đi.


Cảm ơn @Rolando. +1 Tôi đã thấy điều đó nhưng đã không thử nó. Tôi đang cố gắng không phải khởi động lại mysqld để khắc phục điều này.
Xám - SO ngừng ác vào

Ngoài ra, tôi không thấy bất kỳ master.infotập tin. Có phải luôn luôn có một "chủ" hoặc "nô lệ"?
Grey - SO ngừng ác vào

master.info luôn có trên Slave Server.
Abdul Manaf

5

RESET SLAVEtheo sau là khởi động lại không xóa thông tin nô lệ khi có liên quan đến phpmyadmin. Bạn cũng cần phải thiết lập CHANGE MASTER TO MASTER_HOST=''.


3

Tôi khuyên bạn nên duy trì lệnh Skip-Slave-start trong tệp cấu hình của bạn ('in /etc/my.cnf') trong 'mysqld' của bạn để tránh mọi sự ghi đè dữ liệu chủ-nô. Để cho bạn một ví dụ - khi làm việc trong môi trường đám mây, giả sử một chủ cũ gặp sự cố và sau đó khởi động lại thành công khi nhà cung cấp của bạn khắc phục mọi sự cố - nô lệ cũ (hiện là chủ mới) sẽ sao chép từ chủ cũ, ghi đè dữ liệu trước đó DBA có cơ hội nhận ra điều này.

BTW, điều này cũng có liên quan trong môi trường không có đám mây. Nếu, giả sử, một quản trị viên khác đưa ra chủ cũ mà không phối hợp. Ngoài ra, một vấn đề khác tại sao nên duy trì lệnh 'bỏ qua nô lệ bắt đầu' ngay cả khi đó là nô lệ - không có bản sao tự động, nghĩa là bạn có nhiều quyền kiểm soát hơn trong việc ngăn chặn kết quả không thể đoán trước. :)


Cảm ơn câu trả lời @Lena. Đó là một ý kiến ​​hay. Tôi sẽ xem xét nó.
Xám - SO ngừng ác vào
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.