linux:adminsys:check_replication_mysql
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
linux:adminsys:check_replication_mysql [11/02/2010 12:40] – maj avec 2e chance daniel | linux:adminsys:check_replication_mysql [11/02/2010 14:28] (Version actuelle) – apostrophes virées dans commentaires daniel | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
Ce script vérifie les positions master et slave de deux noeuds mysql en réplication maitre-maitre. | Ce script vérifie les positions master et slave de deux noeuds mysql en réplication maitre-maitre. | ||
<code bash> | <code bash> | ||
- | #!/bin/bash | ||
- | |||
# Ce script loggue les positions sur le master local, le master distant et le slave | # Ce script loggue les positions sur le master local, le master distant et le slave | ||
# Avec en colonnes | # Avec en colonnes | ||
# 1 timestamp | # 1 timestamp | ||
- | # 2 master_log_on_remote_master | + | # 2 remote_master_master_log_file |
- | # 3 master_log-pos_on_remote_master | + | # 3 remote_master_master_log_pos |
- | # 4 master_log_on_local_slave | + | # 4 local_slave_master_log_file |
- | # 5 master_log-pos_on_local_slave | + | # 5 local_slave_master_log_pos |
- | # 6 master_log_on_local_master | + | # 6 local_master_master_log_file |
- | # 7 master_log-pos_on_local_master | + | # 7 local_master_master_log_pos |
- | # 8 master_log_on_remote_slave | + | # 8 remote_slave_master_log_file |
- | # 9 master_log-pos_on_remote_slave | + | # 9 remote_slave_master_log_pos |
# 10 date en plus clair | # 10 date en plus clair | ||
+ | # 11 local_delay | ||
+ | # 12 remote_delay | ||
# le user mysql qui réplique doit avoir les droits REPLICATION CLIENT, REPLICATION SLAVE et PROCESS | # le user mysql qui réplique doit avoir les droits REPLICATION CLIENT, REPLICATION SLAVE et PROCESS | ||
+ | |||
LOG=/ | LOG=/ | ||
ERRLOG=/ | ERRLOG=/ | ||
+ | LOCK=/ | ||
TMP=/ | TMP=/ | ||
- | DEST=' | ||
DEBUG=0 | DEBUG=0 | ||
Ligne 40: | Ligne 40: | ||
init_vars() { | init_vars() { | ||
# marche pas si le $user a seulement les droits de réplication slave, il faut client | # marche pas si le $user a seulement les droits de réplication slave, il faut client | ||
- | | + | |
- | | + | |
- | | + | # on rapproche le plus possible les mesures master/ |
- | | + | remote_master_status=$(/ |
- | # sinon on passe par ssh, mais root doit avoir une clé | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | # et on extrait les valeurs qui nous intéressent |
- | | + | |
- | # check index du fichier de log | + | |
- | | + | remote_master_master_log_pos=$(echo |
- | | + | local_slave_master_log_file=$(echo -e "$local_slave_status"|awk '/ Master_Log_File/ |
- | | + | |
- | | + | local_slave_master_log_pos=$(echo |
- | | + | |
- | remote_master_log_pos=$(expr "$remote_master" | + | |
- | | + | |
- | | + | |
- | remote_slave_log_pos=$(expr " | + | |
+ | | ||
+ | remote_slave_master_log_file=$(echo -e " | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
} | } | ||
if [ $DEBUG -gt 0 ]; then | if [ $DEBUG -gt 0 ]; then | ||
init_vars | init_vars | ||
- | echo " | + | echo " |
- | echo "local_master | + | echo -e " |
- | echo "local_slave | + | echo -e "remote_master_master_log_pos\t$remote_master_master_log_pos" |
- | echo "remote_slave | + | echo -e "local_slave_master_log_file\t$local_slave_master_log_file" |
- | echo "local_delay | + | echo -e "local_slave_master_log_pos\t$local_slave_master_log_pos" |
- | echo "remote_delay | + | echo " |
- | echo "local_error | + | echo " |
- | echo "remote_error | + | echo -e " |
+ | echo -e " | ||
+ | echo -e " | ||
+ | echo -e "remote_slave_master_log_file\t$remote_slave_master_log_file" | ||
+ | echo -e "remote_slave_master_log_pos\t$remote_slave_master_log_pos" | ||
+ | echo "remote_slave_delay | ||
+ | echo "remote_slave_error | ||
echo "Fin debug, on sort" | echo "Fin debug, on sort" | ||
exit | exit | ||
fi | fi | ||
- | echo "$TS $remote_master | + | init_vars |
+ | echo "$TS $remote_master_master_log_file | ||
>$TMP | >$TMP | ||
- | init_vars | + | # Check souci qcq |
- | # check un souci qcq | + | if [ -z "$remote_master_master_log_file" -o -z "$remote_master_master_log_pos" ] || \ |
- | if [ -z "$remote_master_log_index" -o -z "$remote_master_log_pos" ] || \ | + | [ -z "$local_slave_master_log_file" -o -z "$local_slave_master_log_pos" ] || \ |
- | [ -z "$local_slave_log_index" -o -z "$local_slave_log_pos" ] || \ | + | |
- | [ "$remote_master_log_index" -gt "$local_slave_log_index" ] || \ | + | |
- | [ "$remote_master_log_pos" -gt "$local_slave_log_pos" ] || [ "$local_delay" -gt ' | + | [ -z "$local_slave_delay" -o -z " |
- | | + | [ "$remote_master_master_log_file" |
- | | + | [ "$local_master_master_log_file" |
- | [ "$local_master_log_index" -gt "$remote_slave_log_index" ] || \ | + | [ "$remote_master_master_log_pos" -gt "$local_slave_master_log_pos" |
- | [ "$local_master_log_pos" -gt "$remote_slave_log_pos" ] || [ "$remote_delay" -gt ' | + | [ "$local_master_master_log_pos" -gt "$remote_slave_master_log_pos" ] || [ "$remote_slave_delay" -gt 1 ] |
then | then | ||
# 2e chance | # 2e chance | ||
Ligne 96: | Ligne 109: | ||
# connexion distante | # connexion distante | ||
- | if [ -z "$remote_master_log_index" -o -z "$remote_master_log_pos" ]; then | + | if [ -z "$remote_master_master_log_file" -o -z "$remote_master_master_log_pos" ]; then |
- | echo " | + | echo " |
# connexion locale | # connexion locale | ||
- | elif [ -z "$local_slave_log_index" -o -z "$local_slave_log_pos" ]; then | + | elif [ -z "$local_slave_master_log_file" -o -z "$local_slave_master_log_pos" ]; then |
- | echo " | + | echo " |
# fichier slave local trop vieux | # fichier slave local trop vieux | ||
- | elif [ $remote_master_log_index -gt $local_slave_log_index | + | elif [ "$remote_master_master_log_file" |
- | echo "Le fichier de log est plus recent | + | echo "Le fichier de log est différent |
- | echo -e "Sur le slave de $local_host on a l' | + | echo -e "Sur le slave de $local_host on a l' |
echo "On restart le slave de $local_host" | echo "On restart le slave de $local_host" | ||
- | / | + | / |
# position slave local en retard | # position slave local en retard | ||
- | elif [ $remote_master_log_pos | + | elif [ "$remote_master_master_log_pos" |
- | echo "Le slave de $local_host est en retard de ${local_delay}s (slave $local_slave_log_pos | + | echo "Le slave de $local_host est en retard de ${local_slave_delay}s (slave $local_slave_master_log_pos |
- | master $remote_host : $remote_master | + | master $remote_host : $remote_master_master_log_file $remote_master_master_log_pos |
- | slave $local_host : $local_slave" >> $TMP | + | slave $local_host : $local_slave_master_log_file $local_slave_master_log_pos" >> $TMP |
echo -e "\nSur le slave de $local_host on a l' | echo -e "\nSur le slave de $local_host on a l' | ||
echo "\nOn restart le slave de $local_host" | echo "\nOn restart le slave de $local_host" | ||
Ligne 118: | Ligne 131: | ||
# on recommence avec le slave distant | # on recommence avec le slave distant | ||
- | if [ -z "$local_master_log_index" -o -z "$local_master_log_pos" ]; then | + | if [ -z "$local_master_master_log_file" -o -z "$local_master_master_log_pos" ]; then |
- | echo " | + | echo " |
- | elif [ -z "$remote_slave_log_index" -o -z "$remote_slave_log_pos" ]; then | + | elif [ -z "$remote_slave_master_log_file" -o -z "$remote_slave_master_log_pos" ]; then |
- | echo " | + | echo " |
- | elif [ $local_master_log_index -gt $remote_slave_log_index | + | elif [ "$local_master_master_log_file" |
- | echo "Le fichier de log est plus recent | + | echo "Le fichier de log est différent |
- | echo -e "Sur le slave de $remote_host on a l' | + | echo -e "Sur le slave de $remote_host on a l' |
echo "On restart le slave de $remote_host" | echo "On restart le slave de $remote_host" | ||
/ | / | ||
- | elif [ $local_master_log_pos | + | elif [ "$local_master_master_log_pos" |
- | echo "Le slave de $remote_host est en retard de ${remote_delay}s (slave $remote_slave_log_pos | + | echo "Le slave de $remote_host est en retard de ${$remote_slave_delay}s (slave $remote_slave_master_log_pos |
- | master $local_host : $local_master | + | master $local_host : $local_master_master_log_file $local_master_master_log_pos |
- | slave $remote_host : $remote_slave" >> $TMP | + | slave $remote_host : $remote_slave_master_log_file $remote_slave_master_log_pos" >> $TMP |
- | echo -e "Sur le slave de $remote_host on a l' | + | echo -e "Sur le slave de $remote_host on a l' |
echo "On restart le slave de $remote_host" | echo "On restart le slave de $remote_host" | ||
/ | / |
linux/adminsys/check_replication_mysql.1265888433.txt.gz · Dernière modification : 11/02/2010 12:40 de daniel