NÔ LỆ
Nếu nô lệ của bạn không phải là Master, thì Slaves hoàn toàn không cần đăng nhập nhị phân. Bạn có thể đặt giới hạn về số lượng không gian nhật ký chuyển tiếp được tích lũy bởi Slave. Để điều chỉnh nhật ký chuyển tiếp ở 4G, hãy thêm relay_log_space_limit
vào /etc/my/.cnf trên mỗi Slave
[mysqld]
relay_log_space_limit=4G
và khởi động lại mysql
Nếu bạn không thể thiết lập điều này, ít nhất bạn nên có một số loại cảnh báo đó SHOW SLAVE STATUS\G
và kiểm tra giá trị của Relay_Log_Space
(tổng số byte được sử dụng bởi nhật ký chuyển tiếp).
BẬC THẦY
Đối với Master, bạn có thể đặt expire_logs_days
thành 1, nhưng có một cảnh báo nghiêm trọng tôi dành cho bạn ...
Nếu sao chép bị hỏng, bạn có 1 ngày để sửa nó. Mặt khác, nhật ký nhị phân trên Master có thể xoay đi và bạn không thể chạy bất kỳ lệnh CHANGE MASTER TO nào để sao chép lại. Tôi sẽ rời đi expire_logs_days
lúc 3 giờ trên Master.
BỀN VỮNG # 1
Nếu bạn có bất kỳ xử lý hàng loạt qua đêm nào, có thể nên chạy các quy trình hàng loạt trên Master với SET SQL_LOG_BIN=0;
khi bắt đầu Phiên. Điều này, tất nhiên, sẽ không sao chép thành Slave. Bạn có thể thực hiện Tải hàng loạt tương tự song song với cả hai nô lệ.
BỀN VỮNG # 2
Một điều khác bạn có thể làm để quản lý tích lũy nhật ký nhị phân Master là điều này.
Chạy SHOW SLAVE STATUS\G
trên cả hai nô lệ. Nhìn vào Relay_Master_Log_File
. Điều đó thể hiện nhật ký nhị phân trên Master có lệnh cuối cùng được thực thi trên Slave.
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.4.92.250
Master_User: replicant
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.009677
Read_Master_Log_Pos: 855227755
Relay_Log_File: relay-bin.000674
Relay_Log_Pos: 757296783
Relay_Master_Log_File: mysql-bin.009590
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 757296646
Relay_Log_Space: 94274010765
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 80561
1 row in set (0.00 sec)
Trong ví dụ này, Relay_Master_Log_File là mysql-bin.009590. Tất cả các bản ghi nhị phân trước cái này có thể được xóa khỏi Master. Bạn có thể chạy cái này trên Master:
PURGE BINARY LOGS TO 'mysql-bin.009590';
Điều này sẽ xóa các bản ghi cũ hơn và vẫn để lại bản sao trong chiến thuật.
CAUPAT
Nhật ký nhị phân là các tệp biên dịch ser seri (như hàng đợi FIFO) tất cả các giao dịch SQL đã hoàn thành dưới dạng câu lệnh SQL hoặc thay đổi hàng. Nhật ký chuyển tiếp là một tệp thu thập các mục nhật ký nhị phân từ một máy chủ từ xa (còn gọi là Master).
Trong bản sao MySQL
- Master phải kích hoạt nhật ký nhị phân của nó
- Slave biên dịch nhật ký chuyển tiếp
- Khi tất cả SQL trong nhật ký chuyển tiếp được xử lý, nó sẽ bị xóa
- Trên Slave, khi có nhiều hơn một bản ghi chuyển tiếp trên Máy chủ DB, nó có thể cho thấy sự sao chép bị tụt lại do luồng IO đang thu thập SQL từ Master nhanh hơn mà luồng SQL có thể xử lý nhật ký chuyển tiếp.
- Sử dụng rơle_log_space_limit ngăn không cho sao chép chồng chất và có khả năng lấp đầy đĩa. Nhật ký chuyển tiếp xoay ra dựa trên quy tắc số 3
- Máy chủ DB có thể là cả Master và Slave. Đó là tình huống duy nhất mà Slave phải kích hoạt nhật ký nhị phân. Trong kịch bản đó, Máy chủ DB sẽ có cả Nhật ký nhị phân và Nhật ký chuyển tiếp.
Nếu bạn chuyển sang Slave và bạn muốn biến nó thành Master
- dịch vụ mysql dừng
- Thêm
log-bin=mysql-bin
vào /etc/my.cnf trên Slave
- dịch vụ mysql bắt đầu
Bạn sẽ phải thiết lập sao chép các nô lệ khác cho Master mới được thăng cấp và đảm bảo dữ liệu trên Slave khớp với Master mới được thăng cấp
CẬP NHẬT 2012-08-13 17:47 EDT
Theo tài liệu MySQL trên relay-log
tùy chọn , bạn nên xác định nó. Đây là lý do tại sao:
Do cách thức phân tích tùy chọn máy chủ của MySQL, nếu bạn chỉ định tùy chọn này, bạn phải cung cấp một giá trị; tên cơ sở mặc định chỉ được sử dụng nếu tùy chọn không thực sự được chỉ định. Nếu bạn sử dụng tùy chọn --relay-log mà không chỉ định giá trị, hành vi không mong muốn có thể xảy ra; hành vi này phụ thuộc vào các tùy chọn khác được sử dụng, thứ tự mà chúng được chỉ định và liệu chúng được chỉ định trên dòng lệnh hoặc trong tệp tùy chọn. Để biết thêm thông tin về cách MySQL xử lý các tùy chọn máy chủ, hãy xem Phần 4.2.3, Tùy chọn chương trình chỉ định Tùy chọn Chương trình.