MySQL レプリケーション設定後にデータの整合性を検証する

light-bulb

レプリケーション設定後に、マスターとスレーブで本当にデータが一致しているのか心配になった場合に、整合性をテーブル単位で検証するためのシェルスクリプトになります。

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
・・・・

コメントを残す

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。