2011-08-10 34 views
10

Có thể lấy trạng thái sao chép từ bất kỳ bảng cơ sở dữ liệu hệ thống nào không. bằng cách sử dụng mà tôi có thể xác định liệu bản sao là lên hay xuống.Trạng thái sao chép mysql bằng truy vấn chọn

Tôi cần biết SLAVE_IO_RUNNING và SLAVE_SQL_RUNNING = YES từ bảng hệ thống?

Manasi

Trả lời

1

Những tuyên bố chính cho điều này là HIỂN THỊ SLAVE STATUS, mà bạn phải thực thi trên mỗi slave. Tham khảo: http://dev.mysql.com/doc/refman/5.1/en/replication-administration-status.html

Trên máy chủ, bạn có thể kiểm tra trạng thái của các nô lệ được kết nối bằng SHOW PROCESSLIST để kiểm tra danh sách các quy trình đang chạy. Đối với các nô lệ được bắt đầu bằng tùy chọn - lưu trữ-lưu trữ và được kết nối với chủ, câu lệnh SHOW SLAVE HOSTS trên bản gốc hiển thị thông tin cơ bản về các nô lệ.

3

Tôi đã nhận được giải pháp trong cơ sở dữ liệu information_schema. Vui lòng kiểm tra bảng GLOBAL_STATUS trong cơ sở dữ liệu information_schema. Bạn sẽ thấy một biến "SLAVE_RUNNING" nếu nó là "ON" có nghĩa là nhân rộng đang hoạt động tốt. Nếu nó là "OFF" thì sao chép đã thất bại vì bất kỳ lý do gì và bạn cần phải kiểm tra lý do tại sao? :-)

Manasi

1

Bắt đầu từ MySQL 5.6, bạn có thể lưu trữ tình trạng nô lệ trong các bảng chứ không phải là các file bằng cách bắt đầu với máy chủ --master-info-repository=TABLE--relay-log-info-repository=TABLE.

tham khảo: http://dev.mysql.com/doc/refman/5.6/en/slave-logs.html

Ngay cả với điều đó, tôi không chắc chắn nếu các bảng sẽ chứa các giá trị cụ thể mà bạn đang tìm kiếm (SLAVE_IO_RUNNINGSLAVE_SQL_RUNNING). Tôi không thể thử điều này bởi vì tôi đang chạy mysql 5.1; Tôi chỉ tìm kiếm và tìm thấy nó trong tài liệu 5.6.

Có vẻ như bạn đang cố gắng theo dõi trạng thái luồng theo cách tự động. Vì tôi không có các bảng, tôi có kế hoạch để làm điều này với một kịch bản shell và công việc định kỳ, với một cái gì đó như thế này:

$ mysql -u root -pXXXX -e "SHOW SLAVE STATUS\G" | grep Slave_IO_Running | awk '{ print $2 }' 
$ mysql -u root -pXXXX -e "SHOW SLAVE STATUS\G" | grep Slave_SQL_Running | awk '{ print $2 }' 

tham khảo: http://www.stardothosting.com/blog/2012/02/checking-and-repairing-mysql-replication-automatically/

1

giải pháp này sử dụng awk để xử lý một chương trình đầu ra lệnh và gửi thư trong trường hợp lỗi trong bất kỳ trường nào được xử lý. Trong trường hợp này, các trường là Slave_IO_RunningSlave_SQL_Running. Điền miễn phí để thêm các trường khác từ đầu ra 'hiển thị tình trạng nô lệ' - Last_Error/Seconds_Behind_Master ví dụ hoặc awk kết quả của các lệnh show khác.
#!/bin/bash
# get some slave stats
Slave_IO_Running=mysql -u root --password="pwd" -Bse "show slave status\G" | grep Slave_IO_Running | awk '{ print $2 }'
Slave_SQL_Running = mysql -u root --password="pwd" -Bse "show slave status\G" | grep Slave_SQL_Running | awk '{ print $2 }'
Last_error = mysql -u root --password = "pwd" -Bse "show nô lệ tình trạng \ G" | grep Last_error | awk -F: '{print $ 2}'

nếu [$ Slave_SQL_Running == 'Không'] || [$ Slave_IO_Running == 'Không'];
rồi
echo "Lỗi cuối cùng:" $ Last_error | mail -s "Lỗi nhân bản trên slavedb !!!" [email protected]
fi

exit 0

+0

xin mô tả giải pháp của bạn –

+0

theo yêu cầu, vui lòng xem ở trên – ninjabber

+0

Cảm ơn bạn đã chia sẻ điều này. Đề xuất cải tiến: Chỉ tìm nạp trạng thái một lần và thực hiện phần còn lại cục bộ. Ngoài ra, tôi đề nghị sử dụng "grep -i" cho grep không phân biệt chữ hoa chữ thường. Trên máy chủ của tôi chạy mysql 5.6 "Last_Error" có chữ hoa E. –

10

Đây là tuyên bố mà tôi đã được sử dụng dựa trên câu trả lời đầu Manasi của.

SELECT variable_value 
FROM information_schema.global_status 
WHERE variable_name='SLAVE_RUNNING'; 
0

Bạn có thể thực hiện ‘TÌNH TRẠNG KHAI THÁC SHOW; truy vấn trên mỗi máy chủ phụ và tìm nạp kết quả. Bạn cũng có thể viết một tập lệnh sẽ thực thi truy vấn theo các khoảng thời gian đều đặn.

Ngoài ra, bạn có thể sử dụng các công cụ như Monyog, như tôi làm, trong đó có các cố vấn sẽ giám sát các máy chủ sao chép và cung cấp kết quả trong khoảng thời gian được đặt. Nó cũng có một trang sao chép, cung cấp thêm thông tin cho các máy chủ trong thiết lập sao chép và cung cấp tính năng cảnh báo nếu nô lệ không chạy.

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