stop slave;SET GLOBAL sql_slave_skip_counter = 1;start slave;Mieux vaut vérifier à chaque modification: c'est pourquoi on utilise seulement la valeur 1 pour sql_slave_skip_counter.
superformance
tutoriaux divers
jeudi 23 octobre 2014
Résoudre les conflits de réplication Mysql
En fonction de la gravité de l'erreur (OK si la donnée existe déjà sur le slave et est rigoureusement identique), on peut bypasser l'erreur. Executer le sql suivant :
Trouver les index non utilisés dans DB2
1) déterminer les id de ts et de table
db2 "SELECT TBSPACEID, TABLEID FROM SYSCAT.TABLES \ WHERE TABSCHEMA = 'schema' AND TABNAME = 'table'";2) déterminer le nombre de scans d'index (champs 8, si = 0 jamais lu)
db2pd -db sbl -tcbstats all tbspaceid=13 tableid=4 | \
grep -p "TCB Index Stats:" | \
awk '{ if ($8 == "0") { print $3} }'
3) il ne reste plus qu'à déterminer le nom des index
db2 "select INDNAME FROM SYSCAT.INDEXES WHERE TABSCHEMA = 'schema' \ AND TABNAME = 'table' AND IID in (liste des ids de l'etape 2)"
statut de DB2 HADR en SQL
$ db2 "select cast(HADR_LOCAL_HOST as varchar(10)) as local, \ cast(HADR_REMOTE_HOST as varchar(10)) as remote, \ cast(DB_NAME as varchar(10)) as db, HADR_STATE, \ HADR_CONNECT_STATUS from SYSIBMADM.SNAPHADR" LOCAL REMOTE DB HADR_STATE HADR_CONNECT_STATUS ---------- ---------- ---------- -------------- ------------------- PROD BACK DATABASE PEER CONNECTED 1 record(s) selected.
jeudi 14 août 2014
Monitoring APC
Sous RHEL, il y a une interface pour monitorer l'activité du cache d'opcode APC.
elle est située dans /usr/share/php-pecl-apc/apc.php
cp /usr/share/php-pecl-apc/apc.php /var/www/html
mercredi 13 août 2014
Réparer une base mysql avec des tables innodb/ibdata corrompues
Pour que cette méthode fonctionne, il faut au moins posséder un dump de la structure de la base, et il faut l'option innodb_file_per_table activée (c'est toujours une bonne habitude de l'activer)
- Copier les fichier IBD dans un endroit sûr, par exemple /home/bob
- Redémarrer la base, en ayant supprimé éventuellement les tablespaces systèmes ibdata1 et ib_logfile avant. attention aux tables InnoDB dans la base Mysql, les recréer au besoin
- Réimporter la structure de la base
- Réimporter les données, et la c'est la partie la plus dure ! il faut exporter les tablespaces que l'on vient de créer et réimporter à la place ceux qu'on a sauvegardé, le tout en redémarrant mysql à chaque action pour être sûr de flusher sur le disque. C'est ce que le script suivant fait:
#! /bin/bash
# superformance.blogspot.com
BKPDIR=/home/bob
USER=root
PASS=pass
DB=db
for table in $(mysql -u ${ROOT} -p${PASS} \
-NBe "select TABLE_NAME from information_schema.TABLES \
where ENGINE='InnoDB' and TABLE_SCHEMA='${DB}';" )
#supprimer le tablespace vide que l'on vient de creer
mysql -u ${ROOT} -p${PASS} \
-NBe "alter table ${table} discard tablespace;"
# arreter mysql
/etc/init.d/mysqld stop
#Copier l'ancien TBS
cp $BKPDIR/$table.ibd /var/lib/mysql/$DB
#demarrer mysql
/etc/init.d/mysqld start
#importer l'ancien tbs
mysql -u ${ROOT} -p${PASS} -NBe \
"alter table ${table} import tablespace;"
/etc/init.d/mysqld restart
done
Ensuite sauvegarder la base avec mysqldump !
mardi 12 août 2014
Générateur de configuration MySQL
2 outils pour générer des configurations MySQL :
https://tools.percona.com/wizard
http://www.fromdual.com/mysql-configuration-file-sample
https://tools.percona.com/wizard
http://www.fromdual.com/mysql-configuration-file-sample
mardi 25 février 2014
Script shell pour afficher le pourcentage de fullscan MySQL
Ce script a pour but de donner une idée de la santé de MySQL (indexation principalement).
Plus le pourcentage est important, plus les requêtes font des lectures sur le disque (pas bien !), on considère qu'il ne faut pas dépasser 20%
Bien sûr les données ne sont valable que lorsqu'il y a un peu de charge sur MYSQL
Plus le pourcentage est important, plus les requêtes font des lectures sur le disque (pas bien !), on considère qu'il ne faut pas dépasser 20%
Bien sûr les données ne sont valable que lorsqu'il y a un peu de charge sur MYSQL
#! /bin/bash
# superformance.blogspot.com
USER=root
PASS=pass
DB=db
TEMP_FILE=/tmp/$$.tmp
trap "rm $TEMP_FILE; exit" SIGHUP SIGINT SIGTERM
SOCK=/var/lib/mysqlmysql.sock
L_Handler_read_rnd_next=0
L_Handler_read_rnd=0
L_Handler_read_first=0
L_Handler_read_next=0
L_Handler_read_key=0
L_Handler_read_prev=0
while true; do
# fullscan percentage
mysql -u ${USER} -p${PASS} --connect-timeout=5 -NBe \
"show global status like 'handler%'" > /tmp/$$.tmp
V_Handler_read_rnd_next=$(grep -E -w \
"Handler_read_rnd_next" /tmp/$$.tmp | awk '{print $2}')
V_Handler_read_rnd=$(grep -E -w \
"Handler_read_rnd" /tmp/$$.tmp | awk '{print $2}')
V_Handler_read_first=$(grep -E -w \
"Handler_read_first" /tmp/$$.tmp | awk '{print $2}')
V_Handler_read_next=$(grep -E -w \
"Handler_read_next" /tmp/$$.tmp | awk '{print $2}')
V_Handler_read_key=$(grep -E -w \
"Handler_read_key" /tmp/$$.tmp | awk '{print $2}')
V_Handler_read_prev=$(grep -E -w \
"Handler_read_prev" /tmp/$$.tmp | awk '{print $2}')
Handler_read_rnd_next=$(echo "$V_Handler_read_rnd_next - \
$L_Handler_read_rnd_next" | bc)
Handler_read_rnd=$(echo "$V_Handler_read_rnd - \
$L_Handler_read_rnd" | bc)
Handler_read_first=$(echo "$V_Handler_read_first - \
$L_Handler_read_first" | bc)
Handler_read_next=$(echo "$V_Handler_read_next - \
$L_Handler_read_next" | bc)
Handler_read_key=$(echo "$V_Handler_read_key - \
$L_Handler_read_key" | bc)
Handler_read_prev=$(echo "$V_Handler_read_prev - \
$L_Handler_read_prev" | bc)
div=$( echo "$Handler_read_rnd_next + $Handler_read_rnd + \
$Handler_read_first + $Handler_read_next + \
$Handler_read_key + $Handler_read_prev" | bc)
if [ $div == 0 ]; then
echo "0%"
else
echo $( echo "scale=2;(($Handler_read_rnd_next + \
$Handler_read_rnd) / $div)* 100" | bc -l )"%"
fi
L_Handler_read_rnd_next=$V_Handler_read_rnd_next
L_Handler_read_rnd=$V_Handler_read_rnd
L_Handler_read_first=$V_Handler_read_first
L_Handler_read_next=$V_Handler_read_next
L_Handler_read_key=$V_Handler_read_key
L_Handler_read_prev=$V_Handler_read_prev
unset V_Handler_read_rnd_next
unset V_Handler_read_rnd
unset V_Handler_read_first
unset V_Handler_read_next
unset V_Handler_read_key
unset V_Handler_read_prev
sleep 5
done
Inscription à :
Articles (Atom)