The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Синхронизация master и slave MySQL, несмотря на конфликтные запросы
Иногда возникает необходимость догнать мастер несмотря на конфликтные запросы из relay-лога.
Вместо того чтобы, для разрешения конфликтов, вручную выполнять 2 команды 
можно в крайних ситуациях использовать скрипт:

#!/bin/sh

n=1
until [ $n = "0" ];do 
   n=`mysql -Be 'show slave status \G' | grep Seconds_Behind_Master| cut -f2 -d: | tr -d " "`
   echo $n; 
   if [ $n = "NULL" ]; then 
      mysql -Be ' SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave;'
   fi; 
   sleep 1
done


Для быстрой и полной синхронизации небольшой таблицы:
(http://www.mysqlperformanceblog.com/2008/06/29/resyncing-table-on-mysql-slave/)

   LOCK TABLE tbl WRITE;
   SELECT * FROM table INTO OUTFILE '/tmp/tbl.txt';
   DELETE FROM tbl;
   LOAD DATA INFILE 'tmp/tbl.txt' INTO TABLE tbl;
   UNLOCK TABLES; 

Другой вариант:

   RENAME TABLE rep TO rep_maint;
   SELECT * FROM rep_maint INTO OUTFILE '/tmp/rep.txt';
   CREATE TABLE rep_new LIKE rep_maint;
   LOAD DATA INFILE '/tmp/rep.txt' INTO TABLE rep_new;
   RENAME TABLE rep_maint TO rep_old, rep_new TO rep;
 
24.06.2008 , Автор: Dmitry Molchanov
Ключи: mysql, replication, sql / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / SQL и базы данных / MySQL специфика / Оптимизация и администрирование MySQL

Обсуждение [ RSS ]
  • 1, sanitar (??), 16:27, 28/06/2008 [ответить]  
  • +/
    при возникновении ситуации с несоглассованностью данных между мастеро и слейвом надо прибивать все данных на слейве и заново поднимать репликацию
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру