Làm cách nào để tắt hoàn toàn bản sao MySQL


64

Tôi đang chạy bản sao MySQL chính kép và bây giờ muốn chuyển sang một cơ sở dữ liệu duy nhất không có bản sao. Làm thế nào để tôi hoàn toàn vô hiệu hóa sao chép trên cả hai cơ sở dữ liệu?

Câu trả lời:


81

Để vô hiệu hóa hoàn toàn sao chép với thiết lập chính chủ, bạn nên thực hiện các thao tác sau trên mỗi nô lệ:

  1. STOP SLAVE;
  2. RESET SLAVE;(Sử dụng RESET SLAVE ALL;cho MySQL 5.5.16 trở lên)
  3. Chỉnh sửa my.cnf và xóa bất kỳ thông tin nào (nếu có) liên quan đến các tùy chọn "chính -..." hoặc "sao chép -...". Bạn có thể không có bất cứ điều gì trong my.cnf, vì sao chép cũng có thể được thiết lập động.
  4. Khởi động lại mysqld.

nếu sao chép được thiết lập linh hoạt, bước 1 và 2 là đủ.
tanyehzheng

4
Cho đến khi MySQL được khởi động lại, nó sẽ báo cáo thông tin sao chép cũ trên SLAVE STATUScác truy vấn ngay cả sau khi RESET SLAVElệnh được đưa ra. Quan trọng cần biết để theo dõi hoặc các công cụ quản lý cấu hình từ xa. Xác nhận hành vi với MySQL 5.5,38 trên CentOS 6.5.
Chris Laskey

Tôi làm các bước nhưng tại sao nô lệ không hoạt động đó vẫn nằm trong danh sách lệnh mtop? Làm thế nào để loại bỏ nó khỏi danh sách?
Scott Chu

18

Tôi biết đây là một câu hỏi cũ nhưng tôi thấy tôi cũng phải đặt lại các biến nô lệ. Nếu bạn sử dụng "blah" như được đề xuất, máy chủ sẽ thử khởi động để tìm máy chủ 'blah'.

Thay đổi MASTERthànhMASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';

Bạn có thể xác minh rằng máy không còn là nô lệ

SHOW SLAVE STATUS \G;

5
Điều này không còn hoạt động. Cài đặt CHANGE MASTER TO MASTER_HOST=''bây giờ ném một lỗi.
Xám

LRI 1210 (HY000): Đối số không chính xác với MASTER_HOST
Kazimieras Aliulis

Hoạt động với tôi trên CentOS 6 (MySQL 5.1), sau khi SHOW SLAVE STATUS này trả về một tập hợp trống, trong khi sau khi RESET SLAVE, nó vẫn hiển thị một số thông tin chính.
Martijn

Câu trả lời này vẫn hợp lệ cho người dùng MySQL 5.1 (vẫn có thể tồn tại).
RolandoMySQLDBA

12

Trên (các) máy chủ nô lệ:

  1. Chạy "dừng nô lệ" để dừng sao chép.
  2. Chạy "thiết lập lại nô lệ" để báo cho máy chủ nô lệ quên vị trí của nó trong nhật ký nhị phân được lấy từ máy chủ chính.
  3. Thêm "Skip-Slave-start" vào my.cnf để ngăn việc sao chép bắt đầu khi bạn khởi động lại MySQL.

Không cần phải khởi động lại MySQL trên máy chủ hoặc nô lệ. Toàn bộ tài liệu có thể được tìm thấy trong phần 19 của Tài liệu tham khảo MySQL .

Tôi khuyên bạn nên để phần còn lại của cài đặt sao chép trong trường hợp bạn quyết định trở lại cấu hình trước đó. Bằng cách đó, bạn chỉ cần đẩy dữ liệu lên và đặt lại vị trí nô lệ (đừng quên xóa bỏ bắt đầu nô lệ) thay vì tạo lại toàn bộ thiết lập.


7

Bất kể phiên bản MySQL nào, Cách đầy đủ nhất để làm điều này là như sau

cd /var/lib/mysql
service mysql stop
rm -f master.info relay-*`
service mysql start

Điều này phải làm việc cho anh ta phiên bản mới nhất vì cài đặt sao chép vẫn còn lưu lại trong RAM cho MySQL 5.5.

Tôi vừa trả lời một câu hỏi tương tự về chủ đề này: Làm thế 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ệ?


6

Chỉ chỉnh sửa tệp my.cnf là không đủ để vô hiệu hóa sao chép. Trong thực tế, nó không còn là cách được khuyến nghị cho phép nó. Đặt các mục trong tệp my.cnf chỉ có hiệu quả cho lần khởi động tiếp theo và hoạt động như thể bạn đã nhập lệnh vào máy khách mysql:

mysql thay đổi chủ thành master_host = 'blah', master_user = 'blah', master_password = 'blah' ...;

Cả hai phương thức này sẽ tạo một tệp trong thư mục dữ liệu được gọi là master.info . Miễn là tệp này tồn tại, máy chủ sẽ thử và sao chép bằng các chi tiết ở đó. "RESET SLAVE;" lệnh được liệt kê trong câu trả lời đầu tiên sẽ thoát khỏi tệp master.info (cũng như tệp rơle-log.info ). Như đã đề cập trong câu trả lời đầu tiên, bạn cũng muốn đảm bảo rằng bạn không có thông tin cấu hình đó trong tệp my.cnf, nếu không, trong lần khởi động lại tiếp theo của máy chủ, đăng nhập sẽ được bật lại.


5

Một câu trả lời là đây:

http://www.oops.net.br/~bac/bam/canopy_Vpl_setup.htm

* Chỉnh sửa tệp cấu hình MySQL: /etc/my.cnf và xóa 7 dòng sau vào phần có tiêu đề [mysqld]:

port=3306
log-bin
server-id=1
master-host=10.0.0.2
master-user=server_1_repl
master-password=server_1_passwd
master-port=3306*

Khởi động lại MySQL.


4

Tôi đang thêm điều này vào câu trả lời của Harrison Fisk:

Nếu bạn đã sử dụng RESET SLAVE ALL;thì khởi động lại là không cần thiết.

Ngoài ra, bạn có thể muốn bật các sự kiện đã bị vô hiệu hóa trên nô lệ:

select * from information_schema.events where status = 'SLAVESIDE_DISABLED';

Đối với mỗi người trong số họ:

alter event <event_name> enable;
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.