Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tập lệnh kiểm tra tình trạng sao chép MySQL

Hôm nay trong bài viết này chúng ta sẽ tìm hiểu về cách giám sát việc nhân rộng MySQL. Ngày nay yêu cầu thiết lập sao chép trong môi trường của bạn nhưng đã đủ chưa? Câu trả lời của tôi là ‘KHÔNG’. Chúng ta cần theo dõi sự nhân rộng của mình theo thời gian. Tôi đã viết một kịch bản nhỏ để giám sát môi trường của chúng ta, mà tôi sẽ chia sẻ với các bạn để biến cuộc sống của bạn trở nên dễ dàng như cuộc sống của tôi.

Những điều cần giám sát về phía nô lệ của bạn:

LAST_ERRNO
SECONDS_BEHIND_MASTER
IO_IS_RUNNING
SQL_IS_RUNNING
MASTER_LOG_FILE
RELAY_MASTER_LOG_FILE

Tất cả các biến này là một phần của 'hiển thị trạng thái nô lệ'

Lưu tập lệnh dưới đây trong tệp .sh và thực thi như sau:

./mysqlhealthcheck.sh

MYSQL_CHECK=$(./mysql-uUsername -ppassword -e "SHOW VARIABLES LIKE '%version%';" || echo 1)
#echo $MYSQL_CHECK
STATUS_LINE=$(./mysql-uUsername -ppassword -e "SHOW SLAVE STATUS\G")"1"
LAST_ERRNO=$(grep "Last_Errno" <<< "$STATUS_LINE" | awk '{ print $2 }')
SECONDS_BEHIND_MASTER=$( grep "Seconds_Behind_Master" <<< "$STATUS_LINE" | awk '{ print $2 }')
IO_IS_RUNNING=$( grep "Slave_IO_Running" <<< "$STATUS_LINE" | awk '{ print $2 }')
SQL_IS_RUNNING=$(grep "Slave_SQL_Running" <<< "$STATUS_LINE" | awk '{ print $2 }')
MASTER_LOG_FILE=$(grep " Master_Log_File" <<< "$STATUS_LINE" | awk '{ print $2 }')
RELAY_MASTER_LOG_FILE=$(grep "Relay_Master_Log_File" <<< "$STATUS_LINE" | awk '{ print $2 }')
ERRORS=()
MESSAGE="NO ERROR"
bold=$(tput bold)
normal=$(tput sgr0)
echo "${bold}MYSQL_CHECK : ${normal} $MYSQL_CHECK "
echo "${bold}LAST_ERRNO : ${normal} $LAST_ERRNO "
printf "\n"
echo "${bold}SECONDS_BEHIND_MASTER : ${normal} $SECONDS_BEHIND_MASTER"
printf "\n"
echo "${bold}IO_IS_RUNNING : ${normal} $IO_IS_RUNNING"
printf "\n"
echo "${bold}SQL_IS_RUNNING : ${normal} $SQL_IS_RUNNING"
printf "\n"
echo "${bold}MASTER_LOG_FILE : ${normal} $MASTER_LOG_FILE"
printf "\n"
echo "${bold}RELAY_MASTER_LOG_FILE : ${normal} $RELAY_MASTER_LOG_FILE"
printf "\n"
### if there is an error ###
if [ "${#ERRORS[@]}" -gt 0 ]
then
MESSAGE="An error has been detected involving the mysql replciation. Below is a list of the reported errors:\n\n
$(for i in $(seq 1 ${#ERRORS[@]}) ; do echo "\t${ERRORS[$i]}\n" ; done)
Please correct this ASAP
"
echo -e $MESSAGE 
else 
echo -e $MESSAGE
fi
ĐẦU RA:
MYSQL_CHECK : Variable_name Value
innodb_version 1.1.8
protocol_version 10
slave_type_conversions
version 5.5.19-enterprise-commercial-advanced-log
version_comment MySQL Enterprise Server - Advanced Edition (Commercial)
version_compile_machine i686
version_compile_os linux2.6 
LAST_ERRNO : 0
SECONDS_BEHIND_MASTER : 0
IO_IS_RUNNING : Yes
SQL_IS_RUNNING : Yes
MASTER_LOG_FILE : mysql-bin.000007
RELAY_MASTER_LOG_FILE : mysql-bin.000007
NO ERROR

bạn cũng có thể thêm tập lệnh này vào công việc cron của mình và gửi phần “echo -e $ MESSAGE” cho chính bạn qua email.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 5 công cụ MySQL GUI hàng đầu (Miễn phí &Trả phí)

  2. Tầm quan trọng của độ dài varchar trong bảng MySQL

  3. Xác định tệp cấu hình MySQL nào đang được sử dụng

  4. Doctrine 2 và bảng liên kết Nhiều đến nhiều với một trường bổ sung

  5. Không thể thay đổi cột được sử dụng trong ràng buộc khóa ngoại