Це команда pt-table-syncp, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн- емулятор Windows або онлайн емулятор MAC OS
ПРОГРАМА:
ІМ'Я
pt-table-sync - ефективна синхронізація даних таблиці MySQL.
СИНТАКСИС
Використання: pt-table-sync [ПАРАЦІЇ] DSN [DSN]
pt-table-sync ефективно синхронізує дані між таблицями MySQL.
Цей інструмент змінює дані, тому для максимальної безпеки вам слід створити резервну копію даних перед використанням
це. Під час синхронізації сервера, який є підпорядкованим реплікацією, із "--replicate" або
Методи "--sync-to-master", це завжди вносить зміни в майстер реплікації, ніколи
безпосередньо підпорядкована реплікація. Загалом це єдиний безпечний спосіб принести репліку
синхронізуватися зі своїм господарем; зміни репліки зазвичай є джерелом
проблеми в першу чергу. Однак зміни, які він вносить на головному пристрої, повинні бути забороненими
зміни, які встановлюють поточні значення даних і фактично впливають лише на репліку.
Синхронізуйте db.tbl на хості 1 до хосту 2:
pt-table-sync --виконати h=host1,D=db,t=tbl h=host2
Синхронізувати всі таблиці на хості 1 з хостом 2 і хостом 3:
pt-table-sync --виконати host1 host2 host3
Зробіть так, щоб у slave1 були такі самі дані, що й у головному пристрої реплікації:
pt-table-sync --execute --sync-to-master slave1
Вирішіть відмінності, які pt-table-checksum виявлено на всіх підлеглих елементах master1:
pt-table-sync --execute --replicate test.checksum master1
Те саме, що й вище, але вирішуйте відмінності лише на slave1:
pt-table-sync --execute --replicate test.checksum \
--sync-to-master slave1
Синхронізуйте master2 у конфігурації реплікації master-master, де копія master2 db.tbl
відомо або підозрюється, що є неправильним:
pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl
Зауважте, що в конфігурації master-master наступне НЕ буде робити те, що ви хочете,
оскільки він внесе зміни безпосередньо на master2, які потім будуть проходити через реплікацію
і змінити дані master1:
# Не робіть цього в налаштуваннях master-master!
pt-table-sync --виконати h=master1,D=db,t=tbl master2
РИЗИКИ
УВАГА: pt-table-sync змінює дані! Перш ніж використовувати цей інструмент, будь ласка:
· Прочитайте документацію до інструменту
· Перегляньте відомі "ПОМИЛКИ" інструмента
· Перевірте інструмент на невиробничому сервері
· Створіть резервну копію робочого сервера та перевірте резервні копії
pt-table-sync є зрілим, перевіреним у реальному світі та добре перевіреним, але якщо використовується
неправильно це може мати негативні наслідки. Завжди спочатку перевіряйте синхронізацію з
«--dry-run» і «--print».
ОПИС
pt-table-sync виконує односторонню та двонаправлену синхронізацію даних таблиці. Це робить НЕ
синхронізувати структури таблиць, індекси або будь-які інші об’єкти схеми. Наступне
описує односторонню синхронізацію. «ДВОНАСпрямована синхронізація» описана далі.
Цей інструмент є складним і функціонує кількома різними способами. Щоб користуватися ним безпечно і
Фактично, ви повинні розуміти три речі: мету "--реплікації", пошук
відмінності та визначення хостів. Ці три поняття тісно пов’язані і визначають
як буде працювати інструмент. Нижче наведена скорочена логіка:
якщо DSN має частину, синхронізуйте лише цю таблицю:
якщо 1 DSN:
якщо --sync-to-master:
DSN є підпорядкованим. Підключіться до головного та синхронізуйте.
якщо більше 1 DSN:
Перший DSN є джерелом. Синхронізуйте кожен DSN по черзі.
інакше якщо --replicate:
якщо --sync-to-master:
DSN є підпорядкованим. Підключіться до його господаря, знайдіть записи
відмінностей і виправити.
ще:
DSN є головним. Знайдіть рабів і підключіться до кожного,
знайти записи відмінностей і виправити.
ще:
якщо лише 1 DSN і --sync-to-master:
DSN є підпорядкованим. Підключіться до його господаря, знайдіть таблиці і
відфільтрувати за допомогою --databases тощо та синхронізувати кожну таблицю з головною.
ще:
знайти таблиці, фільтрувати за допомогою --databases тощо та синхронізувати кожну
DSN до першого.
pt-table-sync може виконуватися одним із двох способів: з "--replicate" або без. За замовчуванням є
запускати без "--replicate", що змушує pt-table-sync автоматично знаходити відмінності
ефективно за допомогою одного з кількох алгоритмів (див. «АЛГОРИТМИ»). Як варіант, значення
"--replicate", якщо вказано, змушує pt-table-sync використовувати вже знайдені відмінності
попередньо запустивши pt-table-checksum з власною опцією "--replicate". Суворо
кажучи, вам не потрібно використовувати "--replicate", оскільки pt-table-sync може знайти відмінності,
але багато людей використовують "--replicate", якщо, наприклад, вони регулярно перевіряють суму, використовуючи pt-table-
контрольну суму, а потім за потреби виправте відмінності за допомогою pt-table-sync. Якщо ви не впевнені, прочитайте кожен
уважно ознайомтеся з документацією на інструмент і вирішуйте самі, або проконсультуйтеся з фахівцем.
Незалежно від того, використовується «--replicate» чи ні, вам потрібно вказати, які хости використовувати
синхронізувати. Є два способи: з «--sync-to-master» або без. Уточнення
"--sync-to-master" змушує pt-table-sync очікувати одного і єдиного підпорядкованого DSN в командному рядку.
Інструмент автоматично виявить ведучого підпорядкованого пристрою та синхронізує його, щоб його дані були
такий самий, як і його господар. Це досягається шляхом внесення змін до головного, який потім
протікати через реплікацію та оновлювати підпорядкований пристрій, щоб усунути його відмінності. Be обережний
хоча: хоча цей параметр визначає та синхронізує один підлеглий, якщо є інші підлеглі
на тому самому головному пристрої вони отримають шляхом реплікації зміни, призначені для підлеглого
які ви намагаєтеся синхронізувати.
Крім того, якщо ви не вкажете «--sync-to-master», перший DSN, наданий на
командний рядок є вихідним хостом. Завжди існує лише один вихідний хост. Якщо ви також не робите
вкажіть "--replicate", тоді ви повинні вказати принаймні один інший DSN як місце призначення
господар. Може бути один або кілька хостів призначення. Повинні бути вихідні та цільові хости
незалежний; вони не можуть бути в одній топології реплікації. pt-table-sync помре з
помилка, якщо вона виявляє, що хост призначення є підпорядкованим через запис змін
безпосередньо на хости призначення (і небезпечно записувати безпосередньо в підпорядковані пристрої). Або, якщо ви
вкажіть "--replicate" (але не "--sync-to-master"), тоді pt-table-sync очікує один і тільки
один головний DSN в командному рядку. Інструмент автоматично виявить всі майстра
підпорядкованих пристроїв і синхронізувати їх з головним. Це єдиний спосіб синхронізувати декілька (всіх) підпорядкованих пристроїв на
один раз (оскільки "--sync-to-master" вказує лише одного підпорядкованого пристрою).
Кожен хост у командному рядку вказується як DSN. Перший DSN (або лише DSN для випадків
наприклад "--sync-to-master") надає значення за замовчуванням для інших DSN, незалежно від того, чи
вказуються в командному рядку або автоматично виявляються інструментом. Тому в цьому прикладі
pt-table-sync --виконати h=host1,u=msandbox,p=msandbox h=host2
DSN хоста 2 успадковує частини DSN "u" і "p" від DSN хоста 1. Використовувати
Параметр "--explain-hosts", щоб побачити, як pt-table-sync інтерпретуватиме DSN, наведені на
command line.
ВИХІД
Якщо ви вкажете параметр «--verbose», ви побачите інформацію про відмінності
між столами. У таблиці є один рядок. Кожен сервер друкується окремо. Для
наприклад,
# Синхронізація h=host1,D=test,t=test1
# ВИДАЛИТИ ЗАМІНИТИ ВСТАВИТИ АЛГОРИТМ ОНОВЛЕННЯ ПОЧАТОК КІНЕЦЬ ВИХІД БАЗА ДАННИХ.ТАБЛИЦЯ
# 0 0 3 0 Чанк 13:00:00 13:00:17 2 test.test1
Таблиця test.test1 на хості1 вимагала 3 оператори "INSERT" для синхронізації та використовувала
Алгоритм фрагментів (див. «АЛГОРИТМИ»). Операція синхронізації для цієї таблиці розпочалася о 13:00:00
і закінчився через 17 секунд (часи взяті з "NOW()" на вихідному хості). Тому що
були виявлені відмінності, його «СТАТУС ВИХІДЖЕННЯ» становив 2.
Якщо ви вкажете параметр «--print», ви побачите фактичні оператори SQL, які відповідає сценарію
використовує для синхронізації таблиці, якщо також вказано "--execute".
Якщо ви хочете побачити інструкції SQL, які pt-table-sync використовує для вибору фрагментів,
фрагменти, рядки тощо, потім вкажіть «--print» один раз і «--verbose» двічі. Будь обережний
хоча: це може надрукувати багато операторів SQL.
Існують випадки, коли жодна комбінація операторів "INSERT", "UPDATE" або "DELETE" не може
вирішувати розбіжності, не порушуючи певного унікального ключа. Наприклад, припустимо, що є a
первинний ключ у стовпці a та унікальний ключ у стовпці b. Тоді немає можливості їх синхронізувати
дві таблиці з простими операторами UPDATE:
+---+---+ +---+---+
| а | б | | а | б |
+---+---+ +---+---+
| 1 | 2 | | 1 | 1 |
| 2 | 1 | | 2 | 2 |
+---+---+ +---+---+
У цьому випадку інструмент переписує запити на "DELETE" і "REPLACE". Це автоматично
обробляється після першого порушення індексу, тому вам не доведеться турбуватися про це.
Будьте обережні, використовуючи pt-table-sync у будь-якій установці master-master. Майстер-майстер реплікація
за своєю суттю складний, і легко зробити помилку. Ви повинні бути впевнені, що використовуєте
інструмент правильно для реплікації "головний-майстер". Для огляду див. "КОНТАКТ".
правильне використання.
Також будьте обережні з таблицями, які мають обмеження зовнішнього ключа за допомогою «ON DELETE» або «ON
UPDATE", оскільки це може спричинити ненавмисні зміни в дочірніх таблицях. Див
"--[no]check-child-tables".
Загалом, цей інструмент найкраще підходить, коли ваші таблиці мають первинний ключ або унікальний індекс.
Хоча він може синхронізувати дані в таблицях без первинного ключа або унікального індексу, він може
найкраще синхронізувати ці дані іншим способом.
РЕПЛІКАЦІЯ БЕЗПЕКА
Загалом, безпечна синхронізація головного та ведомого реплікації є нетривіальною проблемою.
Є всілякі проблеми, над якими варто подумати, наприклад, інші процеси, що змінюють дані,
намагається змінити дані на веденому пристрої, незалежно від того, чи є місце призначення та джерело провідним-головним
пара та багато іншого.
Загалом, безпечний спосіб зробити це - змінити дані на головному, і дозволити змінам
потік через реплікацію до підпорядкованого, як і будь-які інші зміни. Однак це працює лише в тому випадку, якщо
можна ЗАМІНИТИ в таблицю на головній. REPLACE працює, лише якщо є a
унікальний індекс у таблиці (інакше він діє як звичайна INSERT).
Якщо ваша таблиця має унікальні ключі, ви повинні використовувати «--sync-to-master» та/або «--replicate»
варіанти синхронізації підпорядкованого пристрою з його господарем. Це, як правило, буде правильно. Коли
в таблиці немає унікального ключа, немає іншого вибору, окрім як змінити дані на
slave, і pt-table-sync виявить, що ви намагаєтеся це зробити. Буде скаржитися і
die, якщо ви не вкажете «--no-check-slave» (див. «--[no]check-slave»).
Якщо ви синхронізуєте таблицю без первинного або унікального ключа на парі провідний-головний, ви
необхідно змінити дані на сервері призначення. Тому потрібно уточнити
«--no-bin-log» для безпеки (див. «--[no]bin-log»). Якщо ви цього не зробите, зміни, які ви вносите
сервер призначення реплікується назад на вихідний сервер і змінить там дані!
Загалом безпечна річ, яку можна зробити на парі провідний-головний, - це використовувати "--sync-to-master"
щоб ви не змінювали дані на цільовому сервері. Вам також знадобиться
вкажіть "--no-check-slave", щоб pt-table-sync не скаржився на те, що він змінює дані
на раба.
АЛГОРИТМИ
pt-table-sync має загальну структуру синхронізації даних, яка використовує різні алгоритми для пошуку
відмінності. Інструмент автоматично вибирає найкращий алгоритм для кожної таблиці на основі
індекси, типи стовпців і параметри алгоритму, визначені «--algorithms». The
доступні наступні алгоритми, перераховані в порядку переваг за замовчуванням:
Чанка
Знаходить індекс, перший стовпець якого є числовим (включаючи типи дати та часу), і
ділить діапазон значень стовпця на частини приблизно "--chunk-size" рядків.
Синхронізує фрагмент за один раз шляхом підсумовування контрольної суми всього фрагмента. Якщо шматок відрізняється на
джерело та призначення, контрольні суми рядків кожного блоку окремо, щоб знайти рядки, які
відрізняються.
Це ефективно, коли стовпець має достатню потужність, щоб шматки закінчилися
приблизно правильний розмір.
Початкова контрольна сума на блок досить мала і призводить до мінімального мережевого трафіку
і споживання пам'яті. Якщо потрібно перевірити рядки фрагмента, лише первинний ключ
стовпці та контрольна сума надсилаються по мережі, а не весь рядок. Якщо рядок
якщо виявлено інше, буде отримано весь рядок, але не раніше.
Зауважте, що цей алгоритм не працюватиме, якщо розділити стовпець char, де всі значення
почніть з того самого персонажа. У цьому випадку інструмент вийде і запропонує вибрати a
інший алгоритм.
Гризти
Знаходить індекс і піднімає індекс у фрагментах фіксованого розміру рядків "--chunk-size",
за допомогою алгоритму без зворотного відстеження (докладніше про цей алгоритм див. pt-archiver). Це
дуже схожий на "Chunk", але замість попереднього обчислення меж кожного
частина таблиці на основі потужності індексу, вона використовує "LIMIT" для визначення кожного відрізка
верхня межа та верхня межа попереднього фрагмента, щоб визначити нижню межу.
Це працює поетапно: один запит знаходить рядок, який визначатиме верхню частину наступного відрізка
boundary, а контрольна сума наступного запиту складає весь відрізок. Якщо клунок відрізняється
між джерелом і призначенням, він перевіряє відрізок рядок за рядком, так само як "Chunk"
робить.
Група
Вибирає всю таблицю, згруповану за всіма стовпцями, з доданим стовпцем COUNT(*).
Порівнює всі стовпці, і якщо вони однакові, порівнює значення стовпця COUNT(*) з
визначити, скільки рядків потрібно вставити або видалити в пункт призначення. Працює на столах
без первинного ключа чи унікального індексу.
потік
Вибирає всю таблицю в одному великому потоці та порівнює всі стовпці. Вибирає всі
колонки. Набагато менш ефективний, ніж інші алгоритми, але працює, коли його немає
відповідний для них індекс.
Майбутні плани
Можливості майбутніх алгоритмів – TempTable (те, що я спочатку назвав знизу вгору
у попередніх версіях цього інструмента), DrillDown (те, що я спочатку називав зверху вниз) та
GroupByPrefix (подібно до роботи агента завдань SqlYOG). Кожен алгоритм має сильні сторони
і слабкості. Якщо ви хочете реалізувати свою улюблену техніку пошуку
відмінності між двома джерелами даних на, можливо, різних серверах, я готовий
допомогти. Алгоритми дотримуються простого інтерфейсу, що робить його досить легким для написання
твій власний.
БІДІРЕКСІЙНИЙ СИНХРОНІЗАЦІЯ
Двонаправлена синхронізація – нова експериментальна функція. Для надійної роботи є
ряд суворих обмежень:
* працює лише під час синхронізації одного сервера з іншими незалежними серверами
* жодним чином не працює з реплікацією
* вимагає, щоб таблиця(и) була розділена на шматки за допомогою алгоритму Chunk
* не є N-шляхом, лише двонаправлений між двома серверами одночасно
* не обробляє зміни DELETE
Наприклад, припустимо, що у нас є три сервери: c1, r1, r2. c1 – центральний сервер, a
псевдо-господар для інших серверів (а саме r1 і r2 не є підпорядкованими для c1). r1 і r2 є
віддалені сервери. Рядки в таблиці foo оновлюються та вставляються на всіх трьох серверах і ми
хочете синхронізувати всі зміни між усіма серверами. Таблиця foo має стовпці:
id int ПЕРВИННИЙ КЛЮЧ
ts мітка часу автоматично оновлено
ім'я варчар
Зміщення автоматичного збільшення використовуються, щоб нові рядки з будь-якого сервера не створювали конфліктів
значення первинного ключа (id). Загалом, беріть новіші рядки, визначені стовпцем ts
пріоритет, коли під час двонаправленої синхронізації знайдено однаковий, але різний рядок. «Те саме
але різний» означає, що два рядки мають однакове значення первинного ключа (ідентифікатора), але різні
значення для іншого стовпця, як-от стовпець імені в цьому прикладі. Те саме, але відрізняється
конфлікти вирішуються «конфліктом». Конфлікт порівнює деяку колонку з конкуруючими
рядків для визначення «переможця». Виграшний рядок стає джерелом, а його значення використовуються
щоб оновити інший рядок.
Існують незначні відмінності між трьома стовпцями, які використовуються для досягнення двонаправленої синхронізації
з якими ви повинні бути знайомі: стовпець фрагмента ("--chunk-column"), стовпець(и) порівняння
("--стовпці") і стовпець конфлікту ("--conflict-column"). Використовується лише стовпець фрагмента
розбити стіл; наприклад, "WHERE id >= 5 AND id < 10". Частки підсумовуються контрольною сумою і коли
контрольні суми фрагментів виявляють різницю, інструмент вибирає рядки в цьому фрагменті та контрольні суми
"--стовпці" для кожного рядка. Якщо контрольна сума стовпця відрізняється, рядки містять один або кілька
конфліктні значення стовпців. У традиційній односпрямованій синхронізації конфлікт є спірним
точки, оскільки її можна вирішити, просто оновивши весь рядок призначення за допомогою
значення вихідного рядка. Однак у двонаправленій синхронізації "--conflict-column" (в
відповідно до інших параметрів «--conflict-*» зі списку нижче) порівнюється, щоб визначити, який
рядок «правильний» або «авторитетний»; цей рядок стає "джерелом".
Щоб повністю синхронізувати всі три сервери, потрібні два запуску pt-table-sync. Перший
запуск синхронізує c1 і r1, потім синхронізує c1 і r2, включаючи будь-які зміни з r1. У цей момент c1
і r2 повністю синхронізовані, але в r1 відсутні будь-які зміни з r2, тому що c1 не вніс
мати ці зміни, коли він і r1 були синхронізовані. Тому потрібен другий запуск, який синхронізує файл
сервери в тому ж порядку, але цього разу, коли c1 і r1 синхронізовані, r1 отримує зміни r2.
Інструмент не синхронізує N-спосібів, лише двонаправлено між першим DSN, вказаним на
командний рядок і кожен наступний DSN по черзі. Отже, інструмент у цьому прикладі буде запущено
двічі подобається:
pt-table-sync --двонаправлений h=c1 h=r1 h=r2
Параметр «--bidirectional» вмикає цю функцію та викликає різноманітні перевірки працездатності
виконано. Ви повинні вказати інші параметри, які вказують pt-table-sync як вирішити
конфлікти для однакових, але різних рядків. Ці параметри:
* --conflict-column
* --конфлікт-порівняння
* --конфліктне значення
* --конфлікт-поріг
* --conflict-error"> (необов'язково)
Використовуйте «--print», щоб перевірити цей параметр перед «--execute». Надруковані оператори SQL будуть
мати коментарі, на якому хосте буде виконано оператор, якщо ви використовуєте його
«--виконати».
Технічна примітка: перший DSN завжди є «лівим» сервером, а інші DSN — це
завжди «правильний» сервер. Оскільки будь-який сервер може стати джерелом або призначенням, він є
незрозуміло вважати їх "src" і "dst". Тому їх зазвичай називають
як лівий і правий. Це легко запам’ятати, оскільки перший DSN завжди ліворуч
інших DSN сервера в командному рядку.
EXIT СТАТУС
Нижче наведено статуси виходу (також звані значеннями повернення або кодами повернення), коли pt-
Завершення та вихід із синхронізації таблиці.
СТАТУС ЗНАЧЕННЯ
====== ============================================== ===========
0 Успіх.
1 Внутрішня помилка.
2 Принаймні одна таблиця відрізнялася за призначенням.
3 Комбінація 1 і 2.
ВАРІАНТИ
Вкажіть принаймні одне з "--print", "--execute" або "--dry-run".
«--where» і «--replicate» є взаємовиключними.
Цей інструмент приймає додаткові аргументи командного рядка. Зверніться до розділу «СІНОПСИС» та використання
інформацію для деталей.
--алгоритми
тип: рядок; за замовчуванням: Chunk, Nibble, GroupBy, Stream
Алгоритм для порівняння таблиць у порядку переваги.
Для кожної таблиці pt-table-sync перевірить, чи можна синхронізувати таблицю з даною
алгоритми в тому порядку, в якому вони наведені. Перший алгоритм, який може синхронізувати
використовується таблиця. Дивіться «АЛГОРИТМИ».
--запитай-пройди
Запитувати пароль при підключенні до MySQL.
-- двонаправлений
Увімкнути двонаправлену синхронізацію між першим і наступними хостами.
Додаткову інформацію див. у розділі «ДВОНАСпрямована синхронізація».
--[no]bin-log
за замовчуванням: так
Увійдіть у двійковий журнал ("SET SQL_LOG_BIN=1").
Якщо вказати «--no-bin-log», «SET SQL_LOG_BIN=0».
--buffer-in-mysql
Доручити MySQL буферизувати запити у своїй пам’яті.
Цей параметр додає параметр "SQL_BUFFER_RESULT" до запитів порівняння. Це
змушує MySQL виконувати запити та розміщувати їх у тимчасовій таблиці внутрішньо
перед відправкою результатів назад до pt-table-sync. Перевагою цієї стратегії є
що pt-table-sync може отримувати рядки за бажанням, не використовуючи багато пам’яті всередині
Perl, звільняючи блокування таблиці MySQL (щоб зменшити суперечку з
інші запити). Недоліком є те, що він використовує більше пам'яті на сервері MySQL
замість цього.
Ви, ймовірно, хочете також залишити «--[no]buffer-to-client» увімкненим, оскільки буферизація
у тимчасову таблицю, а потім завантажувати все це в пам'ять Perl, ймовірно, безглуздо
що робити. Цей параметр найбільш корисний для алгоритмів GroupBy і Stream, які
може отримати багато даних із сервера.
--[ні]буфер для клієнта
за замовчуванням: так
Витягувати рядки один за одним із MySQL під час порівняння.
Ця опція вмикає "mysql_use_result", що змушує MySQL утримувати вибрані рядки на
сервера, поки інструмент не отримає їх. Це дозволяє інструменту використовувати менше пам’яті, але
може довше залишати рядки заблокованими на сервері.
Якщо цей параметр вимкнено, вказавши «--no-buffer-to-client», тоді
"mysql_store_result" використовується, що змушує MySQL надсилати всі вибрані рядки до інструменту
якось. Це може призвести до того, що "курсор" результатів буде триматися відкритим протягом меншого часу
на сервері, але якщо таблиці великі, це все одно може зайняти багато часу і використовувати
вся твоя пам'ять.
Для більшості нетривіальних розмірів даних цю опцію потрібно залишити увімкненою.
Цей параметр вимкнено, якщо використовується «--bidirectional».
--набір символів
коротка форма: -А; тип: рядок
Набір символів за замовчуванням. Якщо значення - utf8, встановлює binmode Perl на STDOUT на utf8,
передає параметр mysql_enable_utf8 в DBD::mysql і запускає SET NAMES UTF8 після
підключення до MySQL. Будь-яке інше значення встановлює binmode на STDOUT без рівня utf8,
і запускає SET NAMES після підключення до MySQL.
--[ні]check-child-tables
за замовчуванням: так
Перевірте, чи "--execute" негативно вплине на дочірні таблиці. Коли "--замінити",
вказано "--replicate" або "--sync-to-master", інструмент може синхронізувати таблиці за допомогою
Операції "REPLACE". Якщо синхронізована таблиця має дочірні таблиці з "ON DELETE
CASCADE», «ON UPDATE CASCADE» або «ON UPDATE SET NULL», інструмент друкує помилку та
пропускає таблицю, оскільки "REPLACE" стає "DELETE", потім "INSERT", тому "DELETE" буде
перейти до дочірньої таблиці та видалити її рядки. У гіршому випадку це можна видалити
всі рядки в дочірніх таблицях!
Вкажіть «--no-check-child-tables», щоб вимкнути цю перевірку. Аби повністю уникнути
впливаючи на дочірні таблиці, також вкажіть "--no-foreign-key-checks", щоб MySQL не
каскадувати будь-які операції з батьківських таблиць до дочірніх.
Ця перевірка виконується лише в тому випадку, якщо «--execute» та один із «--replace», «--replicate» або
Вказано "--sync-to-master". "--print" не перевіряє дочірні таблиці.
Повідомлення про помилку друкує лише першу дочірню таблицю, знайдену з "ON DELETE CASCADE",
Обмеження зовнішнього ключа "ON UPDATE CASCADE" або "ON UPDATE SET NULL". Може бути
інші уражені дочірні таблиці.
--[ні]чек-майстер
за замовчуванням: так
За допомогою "--sync-to-master" спробуйте переконатися, що виявлений головний пристрій є справжнім провідним.
--[no]чек-раб
за замовчуванням: так
Перевірте, чи сервер призначення є підпорядкованим.
Якщо сервер призначення є підпорядкованим, вносити на нього зміни, як правило, небезпечно.
Однак іноді доводиться; "--replace" не працюватиме, якщо немає унікального індексу,
наприклад, так що ви не можете вносити зміни в головну частину в цьому сценарії. За замовчуванням pt-
table-sync скаржиться, якщо ви спробуєте змінити дані на підпорядкованому пристрої. Вкажіть
"--no-check-slave", щоб вимкнути цю перевірку. Використовуйте його на свій страх і ризик.
--[ні]чек-тригерів
за замовчуванням: так
Перевірте, чи не визначено тригери в цільовій таблиці.
Тригери були введені в MySQL v5.0.2, тому для старих версій ця опція не має
ефект, оскільки тригери не перевірятимуться.
-- шматок-стовпчик
тип: рядок
Розбити таблицю на цій колонці.
-- індекс фрагмента
тип: рядок
Розбийте таблицю за допомогою цього індексу.
--розмір шматка
тип: рядок; за замовчуванням: 1000
Кількість рядків або розмір даних на блок.
Розмір кожного фрагмента рядків для алгоритмів "Chunk" і "Nibble". Розмір може
бути або кількістю рядків, або розміром даних. Розміри даних вказуються за допомогою суфікса
k=кібібайти, M=мебібайти, G=гібібайти. Розміри даних перетворюються на кількість рядків
шляхом ділення на середню довжину рядка.
--стовпці
коротка форма: -с; тип: масив
Порівняйте цей список стовпців, розділених комами.
--config
тип: масив
Прочитайте цей розділений комами список конфігураційних файлів; якщо вказано, це має бути першим
параметр у командному рядку.
--конфлікт-колонка
тип: рядок
Порівняйте цей стовпець, коли рядки конфліктують під час «--двонаправленої» синхронізації.
Якщо знайдено однаковий, але різний рядок, значення цього стовпця з кожного рядка дорівнює
порівнюють за «--конфлікт-порівняння», «--конфлікт-значення» і
"--conflict-threshold", щоб визначити, який рядок має правильні дані та стає
джерело. Стовпчик може бути будь-якого типу, для якого є відповідний
"--conflict-comparison" (це майже всі типи, крім, наприклад, blobs).
Цей параметр працює лише з «--bidirectional». Додаткову інформацію див. у розділі «ДВОНАСпрямована синхронізація».
інформація.
--конфлікт-порівняння
тип: рядок
Виберіть «--conflict-column» з цією властивістю як джерело.
Параметр впливає на те, як значення "--conflict-column" з конфліктуючих рядків
порівняно. Можливі порівняння – одне з цих MAGIC_comparisons:
новітні|найстаріші|найбільші|найменші|дорівнюють|збіги
ПОРІВНЯННЯ ВИБИРАЄ РЯДК З
========== ========================================== ==================
новітнє Найновіший тимчасовий --конфлікт-колонка значення
найстаріший Найстаріший тимчасове значення --conflict-column
найбільше Найбільше числове "--conflict-column value
найменше Найменше числове значення --conflict-column
дорівнює --conflict-column значення дорівнює --conflict-value
matches --conflict-column значення, що відповідає шаблону регулярного виразу Perl
--конфліктне значення
Цей параметр працює лише з «--bidirectional». Додаткову інформацію див. у розділі «ДВОНАСпрямована синхронізація».
інформація.
--конфлікт-помилка
тип: рядок; за замовчуванням: попереджати
Як повідомляти про нерозв’язні конфлікти та конфліктні помилки
Цей параметр змінює спосіб сповіщення користувача, коли конфлікт неможливо вирішити або
викликає якусь помилку. Можливі значення:
* warn: надрукуйте попередження для STDERR про нерозв'язний конфлікт
* die: Die, припинити синхронізацію та надрукувати попередження на STDERR
Цей параметр працює лише з «--bidirectional». Додаткову інформацію див. у розділі «ДВОНАСпрямована синхронізація».
інформація.
--конфліктний поріг
тип: рядок
Сума, на яку один "--conflict-column" має перевищувати інший.
"--conflict-threshold" запобігає розв'язанню конфлікту, якщо він є абсолютним
різниця між двома значеннями "--conflict-column" менша за цю суму. Для
наприклад, якщо два "--conflict-column" мають значення позначки часу "2009-12-01 12:00:00" і
«2009-12-01 12:05:00» різниця 5 хвилин. Якщо встановлено «--conflict-threshold».
до "5m" конфлікт буде вирішено, але якщо "--conflict-threshold" встановлено на "6m"
конфлікт не вдасться вирішити, оскільки різниця не більша або не дорівнює
до 6 хвилин. У цьому останньому випадку «--conflict-error» повідомить про збій.
Цей параметр працює лише з «--bidirectional». Додаткову інформацію див. у розділі «ДВОНАСпрямована синхронізація».
інформація.
--конфліктне значення
тип: рядок
Використовуйте це значення для певного "--conflict-comparison".
Ця опція дає значення для «дорівнює» та «відповідає» «--conflict-comparison».
Цей параметр працює лише з «--bidirectional». Додаткову інформацію див. у розділі «ДВОНАСпрямована синхронізація».
інформація.
--бази даних
коротка форма: -d; тип: хеш
Синхронізувати лише цей список баз даних, розділений комами.
Поширеним запитом є синхронізація таблиць з однієї бази даних з таблицями з іншої бази даних
на одному або іншому сервері. Це поки неможливо. "--бази даних" не підійде
це, і ви не можете зробити це з D-частиною DSN, тому що за відсутності a
Ім'я таблиці передбачає, що весь сервер має бути синхронізований, а частина D контролює лише контроль
база даних з'єднання за замовчуванням.
--defaults-файл
коротка форма: -F; тип: рядок
Читайте лише параметри mysql із зазначеного файлу. Ви повинні вказати абсолютний шлях.
--сушить
Проаналізуйте, виберіть алгоритм синхронізації для використання, роздрукуйте та вийдіть.
Має на увазі "--verbose", щоб ви могли побачити результати. Результати в тому ж виході
формат, який ви побачите, запустивши інструмент, але будуть нулі для
уражені рядки. Це тому, що інструмент насправді виконується, але зупиняється перед ним
порівнює будь-які дані і просто повертає нулі. Нулі не означають, що немає змін
бути зробленим.
-- двигуни
коротка форма: -е; тип: хеш
Синхронізувати лише цей розділений комами список систем зберігання даних.
--виконати
Виконайте запити, щоб таблиці мали ідентичні дані.
Цей параметр дозволяє pt-table-sync фактично синхронізувати дані таблиці, виконуючи всі запити
який він створив для вирішення таблиць відмінностей. тому Таблиці волі be змінився!
І якщо ви також не вкажете «--verbose», зміни будуть внесені без звуку. Якщо це
це не те, що ви хочете, дивіться "--print" або "--dry-run".
--пояснюють-господарі
Роздрукуйте інформацію про підключення та вийдіть.
Роздрукуйте список хостів, до яких буде підключатися pt-table-sync, з усіма різними
параметри підключення та вийдіть.
--float-precision
тип: внутр
Точність для перетворення числа в рядок "FLOAT" і "DOUBLE". Викликає FLOAT і
значення DOUBLE, які потрібно округлити до вказаної кількості цифр після десяткової коми,
з КРУГЛО() функція в MySQL. Це може допомогти уникнути невідповідності контрольної суми через
різні представлення з плаваючою комою одних і тих же значень на різних MySQL
версії та обладнання. За замовчуванням не округлення; значення перетворюються в
струни за CONCAT () функцію, а MySQL вибирає рядкове представлення. Якщо ви
вкажіть значення 2, наприклад, тоді значення 1.008 і 1.009 будуть округлені до
1.01, а контрольна сума буде рівною.
--[ні]перевірок зовнішнього ключа
за замовчуванням: так
Увімкнути перевірку зовнішніх ключів ("SET FOREIGN_KEY_CHECKS=1").
Якщо вказати «--no-foreign-key-checks», «SET FOREIGN_KEY_CHECKS=0».
--функція
тип: рядок
Яку хеш-функцію ви хотіли б використовувати для контрольних сум.
За замовчуванням встановлено "CRC32". Інші хороші варіанти включають "MD5" і "SHA1". Якщо у вас є
встановлено визначену користувачем функцію "FNV_64", "pt-table-sync" виявить її і
воліють використовувати його, оскільки він набагато швидше, ніж вбудовані. Ви також можете використовувати
MURMUR_HASH, якщо ви встановили цю визначену користувачем функцію. Обидва вони є
поширюється разом із Maatkit. Для отримання додаткової інформації та контрольних показників див. pt-table-checksum.
--допомога
Показати довідку та вийти.
--[no]hex-blob
за замовчуванням: так
Стовпці "HEX()" "BLOB", "TEXT" і "BINARY".
Коли дані рядка з джерела витягуються для створення запитів для синхронізації даних (тобто
запити, які відображаються за допомогою "--print" і виконуються за допомогою "--execute"), двійкові стовпці обертаються
in HEX() тому двійкові дані не створюють недійсний оператор SQL. Ти можеш
вимкніть цю опцію, але, ймовірно, не слід.
--господар
коротка форма: -h; тип: рядок
Підключитися до хоста.
--ignore-columns
тип: хеш
Ігноруйте цей розділений комами список назв стовпців у порівняннях.
За допомогою цього параметра стовпці не порівнюються. Однак, якщо рядок визначено
відрізняються між таблицями, усі стовпці в цьому рядку будуть синхронізовані незалежно від того. (Це не
наразі можна виключити стовпці з самого процесу синхронізації, лише з
порівняння.)
--ignore-бази даних
тип: хеш
Ігноруйте цей список баз даних, розділених комами.
(системні бази даних, такі як information_schema та performance_schema ігноруються
за замовчуванням)
--ignore-engines
тип: Hash; за замовчуванням: FEDERATED,MRG_MyISAM
Ігноруйте цей розділений комами список механізмів зберігання даних.
--ignore-tables
тип: хеш
Ігноруйте цей список таблиць, розділених комами.
Назви таблиць можуть бути уточнені з іменем бази даних.
--ignore-tables-regex
тип: рядок; група: Фільтр
Ігноруйте таблиці, імена яких відповідають регулярному виразу Perl.
--[no]index-hint
за замовчуванням: так
Додайте підказки FORCE/USE INDEX до запитів на фрагменти та рядки.
За замовчуванням "pt-table-sync" додає підказку FORCE/USE INDEX до кожного оператора SQL для примусу
MySQL на використання індексу, вибраного алгоритмом синхронізації або зазначеного
"--chunk-index". Зазвичай це добре, але в рідкісних випадках індекс може бути не таким
найкраще для запиту, щоб ви могли придушити підказку індексу, вказавши
"--no-index-hint" і дозвольте MySQL вибрати індекс.
Це не впливає на запити, надруковані "--print"; це впливає лише на шматок і
рядкові запити, які "pt-table-sync" використовує для вибору та порівняння рядків.
-- замок
тип: внутр
Блокування таблиць: 0 = немає, 1 = за цикл синхронізації, 2 = за таблицю або 3 = глобально.
Для цього використовуються "ЗАБЛОКУВАННЯ ТАБЛИЦ". Це може допомогти запобігти зміні таблиць, поки ви працюєте
оглядаючи їх. Можливі значення наступні:
ЗНАЧЕННЯ ЗНАЧЕННЯ
===== ============================================== ==========
0 Ніколи не замикайте столи.
1 Блокування та розблокування один раз за цикл синхронізації (як реалізовано
за алгоритмом синхронізації). Це найбільш зерниста
доступний рівень блокування. Наприклад, Chunk
Алгоритм блокує кожен фрагмент C рядки, а потім
розблокувати їх, якщо вони однакові на джерелі та в
призначення, перш ніж перейти до наступного фрагмента.
2 Блокування та розблокування перед та після кожного столу.
3 Блокування та розблокування один раз для кожного синхронізованого сервера (DSN) з
C .
Підпорядкований пристрій реплікації ніколи не блокується, якщо "--replicate" або "--sync-to-master"
зазначено, оскільки теоретично блокування таблиці на головному має запобігти будь-яким змінам
від проведення. (Ви не змінюєте дані на своєму підпорядкуванні, чи не так?) Якщо «--wait» є
враховуючи, що ведучий (джерело) заблоковано, а потім інструмент чекає, поки підлеглий наздожене
до майстра, перш ніж продовжити.
Якщо вказано "--transaction", "LOCK TABLES" не використовується. Замість цього заблокуйте та розблокуйте
реалізуються шляхом початку та здійснення транзакцій. Виняток – якщо
"--lock" дорівнює 3.
Якщо вказано «--no-transaction», то «LOCK TABLES» використовується для будь-якого значення
«--замок». Дивіться «--[no]transaction».
--блокування та перейменування
Заблокуйте вихідну та цільову таблиці, синхронізуйте, а потім поміняйте імена місцями. Це корисно як а
менш блокуючий ALTER TABLE, коли таблиці достатньо синхронізовані одна з одною
(що ви можете виконати будь-якою кількістю засобів, включаючи дамп і перезавантаження
або навіть щось на кшталт pt-архіватора). Для цього потрібні рівно два DSN і передбачається, що вони
знаходяться на одному сервері, тому він не очікує на реплікацію чи подібне. Таблиці є
заблоковано за допомогою LOCK TABLES.
--пароль
коротка форма: -p; тип: рядок
Пароль для використання під час підключення. Якщо пароль містить коми, їх потрібно екранувати
із зворотною косою рискою: "іспит\,ple"
--під
тип: рядок
Створіть заданий файл PID. Інструмент не запуститься, якщо файл PID вже існує і
PID, який він містить, відрізняється від поточного PID. Однак, якщо файл PID
існує, а PID, який він містить, більше не працює, інструмент перезапише PID
файл із поточним PID. Файл PID видаляється автоматично, коли інструмент виходить.
--порт
коротка форма: -П; тип: внутр
Номер порту для підключення.
--друк
Надрукуйте запити, які усунуть розбіжності.
Якщо ви не довіряєте "pt-table-sync" або просто хочете побачити, що він буде робити, це a
хороший спосіб бути в безпеці. Ці запити є дійсними SQL, і ви можете запустити їх самостійно
хочете синхронізувати таблиці вручну.
--метод рекурсії
тип: масив; за замовчуванням: список процесів, хости
Бажаний метод рекурсії, який використовується для пошуку підлеглих.
Можливі методи:
ВИКОРИСТАННЯ МЕТОДУ
=========== ===================
список процесів ПОКАЗАТИ СПИСОК ПРОЦЕСІВ
ведучі ПОКАЗАТЬ ВЕРСІХ ХОСТІВ
none Не знайти рабів
Метод списку процесів є кращим, оскільки SHOW SLAVE HOSTS ненадійний.
Однак метод hosts потрібен, якщо сервер використовує нестандартний порт (не
3306). Зазвичай pt-table-sync робить правильно і знаходить підпорядкованих, але ви можете
вкажіть бажаний метод, і він буде використаний першим. Якщо він не знайде рабів, то
будуть спробовані інші методи.
--замінити
Запишіть усі оператори "INSERT" і "UPDATE" як "REPLACE".
Це автоматично вмикається за потреби, коли є унікальні порушення індексу.
-- тиражувати
тип: рядок
Таблиці синхронізації, зазначені в цій таблиці як різні.
Вказує, що "pt-table-sync" має перевіряти вказану таблицю, щоб знайти дані
відрізняється. Таблиця точно така ж, як і однойменний аргумент pt-table-
контрольна сума. Тобто він містить записи, які таблиці (і діапазони значень) відрізняються
між господарем і рабом.
Для кожної таблиці та діапазону значень, які показують відмінності між основним і
slave, "pt-table-checksum" синхронізує цю таблицю з відповідним реченням "WHERE",
до свого господаря.
Це автоматично встановлює "--wait" на 60 і спричиняє внесення змін до головного
замість раба.
Якщо вказано «--sync-to-master», інструмент вважатиме, що вказаний вами сервер є
веденого та підключіться до головного, як зазвичай, для синхронізації.
В іншому випадку він спробує використати «SHOW PROCESSLIST», щоб знайти підпорядкованих серверів вашого сервера
вказано. Якщо йому не вдасться знайти підлеглих за допомогою «SHOW PROCESSLIST», він перевірить
Натомість "ПОКАЗАТИ ВЕРСІХ ХОСТІВ". Ви повинні налаштувати "хост звіту" для кожного підлеглого,
"report-port" та інші параметри для правильної роботи. Після знаходження рабів це буде
перевірте вказану таблицю на кожному підпорядкуванні, щоб знайти дані, які потрібно синхронізувати, і
синхронізувати його.
Інструмент спочатку перевіряє копію таблиці головного, припускаючи, що головна копія є
потенційно також раб. Будь-яка таблиця, яка показує відмінності, буде $NOT be
синхронізовано з підлеглими. Наприклад, припустимо, що ваша реплікація налаштована як A->B,
B->C, B->D. Припустимо, що ви використовуєте цей аргумент і вказуєте сервер B. Інструмент буде
перегляньте копію таблиці сервером B. Якщо це виглядає як дані сервера B у табл
«test.tbl1» відрізняється від копії сервера А, інструмент не синхронізуватиме цю таблицю
сервери C і D.
--set-varis
тип: масив
Встановіть змінні MySQL у цьому списку пар "змінна=значення", розділених комами.
За замовчуванням інструмент встановлює:
час очікування=10000
Змінні, зазначені в командному рядку, замінюють ці значення за замовчуванням. Наприклад,
зазначення "--set-vars wait_timeout=500" замінює значення за замовчуванням 10000.
Інструмент друкує попередження та продовжує роботу, якщо не вдається встановити змінну.
--розетка
коротка форма: -S; тип: рядок
Файл сокета для підключення.
--sync-to-master
Розглядайте DSN як підпорядкований і синхронізуйте його з головним.
Розглядайте вказаний вами сервер як підпорядкований. Перевірте "ПОКАЗАТИ СТАТУС ВЕДОМОГО", підключитися до
головне сервера, і розглядати головне як джерело, а підпорядковане як
призначення. Викликає внесення змін до головного. Встановлює "--wait" на 60
за замовчуванням встановлює «--lock» на 1 за замовчуванням і вимикає «--[no]transaction» за замовчуванням.
Дивіться також "--replicate", який змінює поведінку цього параметра.
--таблиці
коротка форма: -t; тип: хеш
Синхронізувати лише цей список таблиць, розділених комами.
Назви таблиць можуть бути уточнені з іменем бази даних.
--тайм-аут-ок
Продовжуйте, якщо "--wait" не вдається.
Якщо ви вкажете «--wait», і підпорядкований не наздоганяє головну позицію раніше
час очікування, поведінка за замовчуванням — перервати. Ця опція зберігає інструмент
все одно збираюся. попередження: якщо ви намагаєтеся отримати послідовне порівняння між
два сервери, ви, ймовірно, не захочете продовжувати роботу після тайм-ауту.
--[ні]транзакції
Використовуйте транзакції замість "ЗАБЛОКУВАТИ ТАБЛИЦІ".
Точність початку та фіксації транзакцій контролюється за допомогою «--lock».
Це ввімкнено за замовчуванням, але оскільки "--lock" вимкнено за замовчуванням, його немає
ефект
Більшість параметрів, які вмикають блокування, також вимикають транзакції за замовчуванням, тому, якщо хочете
щоб використовувати блокування транзакцій (через «ЗАБЛОКУВАННЯ У РЕЖИМІ СПІЛЬНОГО ВІДПОВІДАЛЬНЯ» та «ДЛЯ ОНОВЛЕННЯ», ви повинні
явно вкажіть "--transaction".
Якщо ви не вкажете "--transaction" явно, "pt-table-sync" вирішить за-
на основі таблиці, чи використовувати транзакції чи блокування таблиці. На даний момент використовується
транзакції на таблицях InnoDB і блокування таблиць на всіх інших.
Якщо вказано "--no-transaction", то "pt-table-sync" не використовуватиме транзакції на
всі (навіть не для таблиць InnoDB), а блокування контролюється за допомогою "--lock".
Якщо ввімкнено, явно чи неявно, встановлюється рівень ізоляції транзакції
«ПОВТОРНЕ ЧИТАННЯ», а транзакції розпочинаються «З ПІДЗВІТНИМ СКРИТКОМ».
-- обрізати
Стовпці "TRIM()" "VARCHAR" у режимах "BIT_XOR" і "ACCUM". Допомагає при порівнянні MySQL
4.1 до >= 5.0.
Це корисно, коли вас не хвилює різниця в кінцевому просторі між MySQL
версії, які відрізняються за обробкою кінцевих пробілів. MySQL 5.0 і пізніші всі
зберегти кінцеві пробіли в "VARCHAR", тоді як попередні версії видалили їх.
--[ні]унікальних чеків
за замовчуванням: так
Увімкнути унікальні перевірки ключів ("SET UNIQUE_CHECKS=1").
Якщо вказати «--no-unique-checks», «SET UNIQUE_CHECKS=0».
--користувач
коротка форма: -у; тип: рядок
Користувач для входу, якщо не поточний користувач.
-багатослівний
коротка форма: -v; сукупно: так
Роздрукувати результати операцій синхронізації.
Дивіться «ВИХОД» для отримання додаткової інформації про вихід.
-- версія
Показати версію та вийти.
--[ні]перевірка версії
за замовчуванням: так
Перевірте наявність останньої версії Percona Toolkit, MySQL та інших програм.
Це стандартна функція «автоматично перевіряти оновлення» з двома додатковими
особливості. Спочатку інструмент перевіряє версію інших програм у локальній системі
доповнення до власної версії. Наприклад, він перевіряє версію кожного сервера MySQL
він підключається до Perl і модуля Perl DBD::mysql. По-друге, він перевіряє та попереджає
про версії з відомими проблемами. Наприклад, у MySQL 5.5.25 була критична помилка та
було повторно випущено як 5.5.25a.
Будь-які оновлення або відомі проблеми друкуються на STDOUT перед звичайним виведенням інструмента.
Ця функція ніколи не повинна заважати нормальній роботі інструменту.
Для отримання додаткової інформації відвідайте .
-- зачекайте
коротка форма: -w; тип: час
Як довго чекати, щоб раби наздогнали свого господаря.
Змусьте ведучого почекати, поки підлеглий наздожене у реплікації, перш ніж порівнювати
таблиці. Значення — це кількість секунд, протягом яких потрібно чекати до закінчення часу очікування (див
"--тайм-аут-ок"). Встановлює "--lock" на 1 і "--[no]transaction" на 0 за замовчуванням. Якщо ти
побачити помилку, наприклад,
MASTER_POS_WAIT повернув -1
Це означає, що час очікування був перевищений, і вам потрібно його збільшити.
На значення за замовчуванням цього параметра впливають інші параметри. Щоб побачити, що таке цінність
по суті, запустити з «--help».
Щоб повністю вимкнути очікування (крім блокувань), вкажіть «--wait» 0. Це допомагає, коли
підлеглий відстає на таблицях, які не синхронізуються.
--де
тип: рядок
Речення "WHERE", щоб обмежити синхронізацію частиною таблиці.
--[no]нульовий шматок
за замовчуванням: так
Додайте фрагмент для рядків із нульовими або еквівалентними нулю значеннями. Єдине має ефект, коли
Вказано "--chunk-size". Метою нульового фрагмента є захоплення a
Потенційно велика кількість нульових значень, які призводять до дисбалансу розміру першого
шматок. Наприклад, якщо багато від’ємних чисел було вставлено в беззнакове
цілочисельний стовпець, що змушує їх зберігати як нулі, потім ці нульові значення фіксуються
нульовим фрагментом замість першого фрагмента та всіма його ненульовими значеннями.
dsn ВАРІАНТИ
Ці параметри DSN використовуються для створення DSN. Кожна опція задається як "option=value".
Параметри чутливі до регістру, тому P і p не є однаковими параметрами. Не може бути
пробіл перед або після "=", і якщо значення містить пробіли, його потрібно взяти в лапки.
Параметри DSN розділяються комами. Для отримання повної інформації див.
· А
dsn: набір символів; копія: так
Набір символів за замовчуванням.
· Д
dsn: база даних; копія: так
База даних, що містить таблицю для синхронізації.
· Ф
dsn: mysql_read_default_file; копія: так
Читайте лише параметри за замовчуванням із заданого файлу
· Год
dsn: хост; копія: так
Підключитися до хоста.
· с
dsn: пароль; копія: так
Пароль для використання під час підключення. Якщо пароль містить коми, їх потрібно екранувати
із зворотною косою рискою: "іспит\,ple"
· П
dsn: порт; копія: так
Номер порту для підключення.
· С
dsn: mysql_socket; копія: так
Файл сокета для підключення.
· т
копія: так
Таблиця для синхронізації.
· у
dsn: користувач; копія: так
Користувач для входу, якщо не поточний користувач.
НАВКОЛИШНЄ СЕРЕДОВИЩЕ
Змінна середовища "PTDEBUG" дозволяє вивести детальний налагодження в STDERR. Для того, щоб
налагодження та захоплення всього результату у файл, запустіть інструмент, як:
PTDEBUG=1 pt-table-sync ... > ФАЙЛ 2>&1
Будьте обережні: результат налагодження об’ємний і може генерувати кілька мегабайт.
SYSTEM ВИМОГИ
Вам потрібен Perl, DBI, DBD::mysql і деякі основні пакети, які слід встановити в будь-якому
досить нова версія Perl.
Використовуйте pt-table-syncp онлайн за допомогою служб onworks.net