Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
# Проверка таблиц базе $DB_TO_CHECK и записать результат в таблицу $CHECKSUM
# $CHECKSUM=replicate_db.checksum (обазятельно должна участовать в репликации)
pt-table-checksum -q \
--replicate $CHECKSUM --create-replicate-table --databases $DB_TO_CHECK \
h=$MASTER_HOST,u=$USR,p=$PWD 2>&1
# используя флаг -q мы переключаем скрипт в тихий режим и тогда скрирт веренте return code 0 если все ок и
# больше нуля если pt-table-checksum нашел разницу в таблицах
if [ $? -gt 0 ]; then
# если pt-table-checksum вернул не нулевой результать запускаем pt-table-sycn чтобы синхронизировать
# chunks с ошибками
pt-table-sync --execute --sync-to-master --verbose \
--replicate $CHECKSUM \
--databases $DB_TO_CHECK \
h=$SLAVE_HOST,u=$USR,p=$PWD 2>&1
fi
SELECT
db, tbl, count(chunk) AS chunks
FROM replicate_db.checksum
WHERE this_crc <> master_crc
GROUP BY db,tbl
ORDER BY db,tbl;
mysqldump --no-data --skip-comments -u dbuser -p dbname > db1.sql
mysqldump --no-data --skip-comments -u dbuser -p dbname > db2.sql
diff db1.sql db2.sql
mysqldbcompare --skip-data-check --skip-row-count --run-all-tests --server1=root:***@192.168.1.133 --changes-for=server2 --difftype=sql compare1:compare2# server1 on 192.168.1.133: ... connected.
# Checking databases compare1 on server1 and compare2 on server2
#
# WARNING: Cannot generate SQL statements for these objects.
# Check the difference output for other discrepencies.
--- `compare2`
+++ `compare1`
@@ -1 +1 @@
-CREATE DATABASE `compare2` /*!40100 DEFAULT CHARACTER SET cp1251 */
+CREATE DATABASE `compare1` /*!40100 DEFAULT CHARACTER SET cp1251 */
# WARNING: Cannot generate SQL statements for these objects.
# Check the difference output for other discrepencies.
--- `compare2`
+++ `compare1`
@@ -1 +1 @@
-CREATE DATABASE `compare2` /*!40100 DEFAULT CHARACTER SET cp1251 */
+CREATE DATABASE `compare1` /*!40100 DEFAULT CHARACTER SET cp1251 */
# WARNING: Objects in server1.compare1 but not in server1.compare2:
# TABLE: table2
# VIEW: view1
#
# Defn Row Data
# Type Object Name Diff Count Check
# -------------------------------------------------------------------------
# TABLE table1 FAIL SKIP SKIP
#
# Transformation for --changes-for=server2:
#
ALTER TABLE `compare2`.`table1`
CHANGE COLUMN data data varchar(46) NULL;
Databases are consistent given skip options specified.
#
# ...done
Обзор средств синхронизации баз данных MySQL