レプリケーション設定後に、マスターとスレーブで本当にデータが一致しているのか心配になった場合に、整合性をテーブル単位で検証するためのシェルスクリプトになります。
USER=root
PASSWORD=xxxxxx
SCHEMAS="db1 db2 dn3"
OUTPUT=./output_`date '+%Y%m%d%H%M'`.txt
echo "" > $OUTPUT
for SCHEMA in $SCHEMAS
do
# テーブルの一覧を取得
TABLES=`mysql -u $USER -p$PASSWORD -N -B -e "select table_name from INFORMATION_SCHEMA.TABLES where table_schema = '$SCHEMA'"`
# テーブルのデータ量とレコード数をファイルに出力
for TABLE in $TABLES
do
mysql -u $USER -p$PASSWORD -N -B -e "SELECT table_schema, table_name, sum(data_length) AS data_size , table_rows FROM information_schema.tables WHERE table_schema = '$SCHEMA' AND table_name = '$TABLE'" | sed -e "s/\t/,/g" >> $OUTPUT
done
done
出力イメージ
db1,t_user,56180736,328353 db1,t_company,8192,312 db1,m_area,8192,0 ・・・・