Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen pt-online-schema-changep komutudur.
Program:
ADI
pt-online-schema-change - Tabloları kilitlemeden ALTER.
SİNOPSİS
Kullanım: pt-online-schema-change [SEÇENEKLER] DSN
pt-online-schema-change, okuma veya yazma işlemlerini engellemeden bir tablonun yapısını değiştirir.
DSN'de veritabanını ve tabloyu belirtin. Bu aracı okumadan kullanmayınız.
belgeler ve yedeklerinizi dikkatlice kontrol edin.
sakila.actor'a bir sütun ekleyin:
pt-online-schema-change --alter "ADD COLUMN c1 INT" D=sakila,t=aktör
sakila.actor'ı InnoDB olarak değiştirin, engellemesiz bir şekilde OPTIMIZE TABLE'ı etkin bir şekilde gerçekleştirin
moda çünkü zaten bir InnoDB tablosu:
pt-online-schema-change --alter "ENGINE=InnoDB" D=sakila,t=aktör
RİSKLER
Percona Toolkit olgun, gerçek dünyada kanıtlanmış ve iyi test edilmiş, ancak tüm veritabanı
araçlar, sistem ve veritabanı sunucusu için risk oluşturabilir. Bu aracı kullanmadan önce,
lütfen:
· Aracın belgelerini okuyun
· Aracın bilinen "HATALARI" gözden geçirin
· Aracı üretim dışı bir sunucuda test edin
· Üretim sunucunuzu yedekleyin ve yedekleri doğrulayın
TANIM
pt-online-schema-change, MySQL'in tabloları dahili olarak değiştirme şeklini taklit eder, ancak çalışır
Değiştirmek istediğiniz tablonun bir kopyası üzerinde. Bu, orijinal tablonun olmadığı anlamına gelir.
kilitlenir ve istemciler içindeki verileri okumaya ve değiştirmeye devam edebilir.
pt-online-schema-change, değiştirilecek tablonun boş bir kopyasını oluşturarak, değiştirerek çalışır
ve ardından orijinal tablodaki satırları yeni tabloya kopyalayın. Ne zaman
kopyalama tamamlandığında, orijinal tabloyu uzaklaştırır ve yenisiyle değiştirir. İle
varsayılan olarak, orijinal tabloyu da düşürür.
Veri kopyalama işlemi, denemeye yönelik olarak çeşitlendirilen küçük veri parçaları halinde gerçekleştirilir.
belirli bir süre içinde yürütmelerini sağlayın ("--chunk-time" bölümüne bakın). Bu süreç çok
pt-table-checksum gibi diğer araçların nasıl çalıştığına benzer. Verilerde herhangi bir değişiklik
kopyalama sırasında orijinal tablolar yeni tabloya yansıtılacaktır, çünkü araç
yeni tabloda karşılık gelen satırları güncellemek için orijinal tabloda tetikleyiciler oluşturur.
Tetikleyicilerin kullanılması, herhangi bir tetikleyici önceden tanımlanmışsa aracın çalışmayacağı anlamına gelir.
masanın üstünde.
Araç, verileri yeni tabloya kopyalamayı bitirdiğinde, atomik bir "TABLOYU YENİDEN ADLANDIRMA" kullanır.
orijinal ve yeni tabloları aynı anda yeniden adlandırma işlemi. Bu tamamlandıktan sonra,
araç orijinal tabloyu düşürür.
Yabancı anahtarlar aracın çalışmasını zorlaştırır ve ek risk oluşturur. Teknik
orijinal ve yeni tabloların atomik olarak yeniden adlandırılması, yabancı anahtarlar başvurduğunda çalışmaz
masaya. Araç, şemadan sonra yeni tabloya başvurmak için yabancı anahtarları güncellemelidir.
değişim tamamlandı. Araç, bunu gerçekleştirmek için iki yöntemi destekler. Okuyabilirsin
bununla ilgili daha fazla bilgiyi "--alter-foreign-keys-method" belgelerinde bulabilirsiniz.
Yabancı anahtarlar da bazı yan etkilere neden olur. Final masası aynı yabancı anahtarlara sahip olacak
ve orijinal tablo olarak dizinler (ALTER'inizde farklı bir şekilde belirtmediğiniz sürece)
ifadesi), ancak nesne adından kaçınmak için nesnelerin adları biraz değiştirilebilir.
MySQL ve InnoDB'deki çarpışmalar.
Güvenlik için, "--execute" seçeneğini belirtmediğiniz sürece araç tabloyu değiştirmez,
hangi varsayılan olarak etkin değildir. Araç, önlemek için çeşitli diğer önlemleri destekler.
kopyaların otomatik olarak algılanması dahil olmak üzere istenmeyen yük veya diğer sorunlar,
ve aşağıdaki güvenlik kontrollerini kullanarak:
· Çoğu durumda, bir BİRİNCİL ANAHTAR veya BENZERSİZ İNDEKS olmadıkça araç çalışmayı reddedecektir.
tabloda mevcut. Ayrıntılar için "--alter" bölümüne bakın.
· Araç, çoğaltma filtreleri algılarsa çalışmayı reddeder. Görmek
Ayrıntılar için "--[no]check-replication-filters".
· Araç, gecikmeli kopyalar gözlemlerse veri kopyalama işlemini duraklatır
replikasyonda. Ayrıntılar için "--max-lag" bölümüne bakın.
· Araç, sunucuda çok fazla yük algılarsa çalışmasını duraklatır veya durdurur. Görmek
Ayrıntılar için "--max-load" ve "--critical-load".
· Araç, "innodb_lock_wait_timeout=1" ve (MySQL 5.5 ve üstü için) ayarlar
"lock_wait_timeout=60", böylece herhangi bir kilidin kurbanı olma olasılığı daha yüksektir
çekişme ve diğer işlemleri bozma olasılığı daha düşüktür. Bu değerler olabilir
"--set-vars" belirtilerek değiştirilir.
· Araç, yabancı anahtar kısıtlamaları referans vermedikçe tabloyu değiştirmeyi reddeder.
"--alter-yabancı-anahtarlar-yöntemi" belirtirsiniz.
· Araç, "Percona XtraDB Cluster" düğümlerinde MyISAM tablolarını değiştiremez.
Perkon XtraDB Küme
pt-online-schema-change, Percona XtraDB Cluster (PXC) 5.5.28-23.7 ve daha yeni sürümlerle çalışır, ancak
iki sınırlama vardır: yalnızca InnoDB tabloları değiştirilebilir ve "wsrep_OSU_method"
"TOI" (toplam sipariş izolasyonu) olarak ayarlanmalıdır. Ana bilgisayar bir
küme düğümü ve tablo MyISAM'dir veya MyISAM'a dönüştürülmektedir ("ENGINE=MyISAM") veya
"wsrep_OSU_method", "TOI" değilse. Bu kontrolleri devre dışı bırakmanın bir yolu yoktur.
ÇIKTI
Araç, etkinlikleriyle ilgili bilgileri STDOUT'a yazdırır, böylece ne olduğunu görebilirsiniz.
yapmak. Veri kopyalama aşamasında, STDERR'ye "--ilerleme" raporlarını yazdırır. Alabilirsiniz
"--print" belirterek ek bilgi.
"--statistics" belirtilirse, çeşitli dahili olay sayımlarının bir raporu şu adreste yazdırılır:
sonu gibi:
# Etkinlik Sayısı
# ====== =====
# EKLE 1
SEÇENEKLER
"--dry-run" ve "--execute" birbirini dışlar.
Bu araç, ek komut satırı bağımsız değişkenlerini kabul eder. "SYNOPSIS" ve kullanıma bakın
detaylar için bilgi.
--değiştirmek
tür: dize
ALTER TABLE anahtar sözcükleri olmadan şema değişikliği. birden fazla gerçekleştirebilirsiniz
virgülle belirterek tabloda değişiklikler. Lütfen MySQL'e bakın
ALTER TABLE sözdizimi kılavuzu.
Aşağıdaki sınırlamalar uygulanır ve denenirse aracın başarısız olmasına neden olur:
öngörülemeyen yollar:
· Hemen hemen her durumda, bir BİRİNCİL ANAHTAR veya BENZERSİZ İNDEKS'in mevcut olması gerekir.
tablo. Bu gereklidir, çünkü araç bir DELETE tetikleyicisi oluşturur.
işlem çalışırken yeni tablo güncellendi.
Kayda değer bir istisna, bir BİRİNCİL ANAHTAR veya BENZERSİZ INDEX'in şuradan oluşturulduğu zamandır.
mevcut sütunlar ALTER maddesinin bir parçası olarak; bu durumda bunları kullanacak
DELETE tetikleyicisi için sütun(lar).
· "RENAME" yan tümcesi tabloyu yeniden adlandırmak için kullanılamaz.
· Sütunlar, yeni adla bırakılıp yeniden eklenerek yeniden adlandırılamaz. Alet
orijinal sütunun verilerini yeni sütuna kopyalamaz.
· Varsayılan değeri olmayan bir sütun eklerseniz ve bunu NULL DEĞİL yaparsanız, araç
başarısız, çünkü sizin için varsayılan bir değer tahmin etmeye çalışmayacaktır; belirtmeniz gerekir
Varsayılan.
· "YABANCI ANAHTAR kısıtlama_adı" yerine "_ kısıtlama_adı" belirtilmesini gerektirir
gerçek "kısıtlama_adı" ndan daha. MySQL'deki bir sınırlama nedeniyle, pt-online-schema-
change, oluştururken yabancı anahtar kısıtlama adlarına önde gelen bir alt çizgi ekler.
yeni masa. Örneğin, bu kısıtlamayı kaldırmak için:
KISITLAMA `fk_foo` YABANCI ANAHTAR (`foo_id`) REFERANSLAR `bar` (`foo_id`)
"--alter "YABANCI ANAHTARI DROP _fk_foo"" belirtmelisiniz.
· Araç, MySQL 5.0 ile "PAYLAŞIM MODUNDA KİLİTLE" kullanmaz çünkü bir
çoğaltmayı bozan köle hatası:
Sorgu, master ve slave üzerinde farklı hatalara neden oldu. Master'da hata:
'Kilit almaya çalışırken kilitlenme bulundu; işlemi yeniden başlatmayı deneyin' (1213),
Kölede hata: 'hata yok' (0). Varsayılan veritabanı: 'pt_osc'.
Sorgu: 'INSERT INTO pt_osc.t (id, c) DEĞERLER ('730', 'yeni satır')'
MyISAM tablosu InnoDB'ye dönüştürülürken hata oluşur, çünkü MyISAM
işlemsel ancak InnoDB işlemseldir. MySQL 5.1 ve daha yenisi bu durumu ele alıyor
doğru, ancak test, MySQL 5 ile zamanın %5.0'inde hatayı yeniden üretir.
Bu, şuna benzer bir MySQL hatasıdır:http://bugs.mysql.com/bug.php?id=45694>, ancak
MySQL 5.0'da herhangi bir düzeltme veya geçici çözüm yoktur. "PAYLAŞIM MODUNDA KİLİTLE" olmadan testler
zamanın %100'ünü geçer, bu nedenle veri kaybı veya replikasyonu bozma riski
ihmal edilebilir.
Be elbette için doğrulamak the yeni tablo if kullanma MySQL 5.0 ve dönüştürme itibaren MyISAM için
InnoDB!
--alter-yabancı-anahtarlar-yöntemi
tür: dize
Yeni tabloya başvurmaları için yabancı anahtarlar nasıl değiştirilir. yabancı anahtarlar
değiştirilecek tabloya atıfta bulunulduğundan emin olmak için özel olarak muamele edilmelidir.
doğru tabloya başvurmaya devam edin. Araç orijinal tabloyu yeniden adlandırdığında
yenisinin yerini almasına izin verin, yabancı anahtarlar yeniden adlandırılan tabloyu "takip edin" ve
bunun yerine yeni tabloya başvurmak için değiştirilebilir.
Araç, bunu başarmak için iki tekniği destekler. Otomatik olarak "çocuk
değiştirilecek tabloya atıfta bulunan tablolar".
Oto
Hangi yöntemin en iyi olduğunu otomatik olarak belirleyin. Araç "rebuild_constraints" kullanır
mümkünse (detaylar için bu yöntemin açıklamasına bakın) ve değilse, o zaman
"drop_swap" kullanır.
yeniden inşa_kısıtlamaları
Bu yöntem, yabancı anahtar kısıtlamalarını bırakmak ve yeniden eklemek için "ALTER TABLE" kullanır.
yeni tabloya başvurun. Bir veya daha fazlası olmadıkça bu tercih edilen tekniktir.
"alt" tablolar o kadar büyüktür ki "ALTER" çok uzun sürer. Alet
alt tablodaki satır sayısını şu anki oran ile karşılaştırarak bunu belirler.
aracın eski tablodaki satırları yeni tabloya kopyalayabildiği. Eğer
araç, alt tablonun öncekinden daha kısa sürede değiştirilebileceğini tahmin eder.
"--chunk-time", o zaman bu tekniği kullanacaktır. tahmin etmek amacıyla
alt tabloyu değiştirmek için gereken süre, araç satır kopyalama oranını çarpar
MySQL'in "ALTER TABLE" özelliği genellikle çok daha hızlı olduğu için "--chunk-size-limit" ile
satırları kopyalamanın harici işleminden daha.
MySQL'deki bir sınırlama nedeniyle, yabancı anahtarlar, aşağıdakilerden sonra aynı ada sahip olmayacaktır.
ALTER, ondan önce yaptılar. Araç, yabancı anahtarı yeniden adlandırmak zorundadır.
yeniden tanımlar, bu da ada önde gelen bir alt çizgi ekler. Bazı durumlarda, MySQL
ayrıca yabancı anahtar için gereken dizinleri otomatik olarak yeniden adlandırır.
bırak_takas
Yabancı anahtar kontrollerini devre dışı bırakın (FOREIGN_KEY_CHECKS=0), ardından orijinal tabloyu bırakın
yeni tabloyu yerine yeniden adlandırmadan önce. Bu normalden farklı
atomik bir "RENAME" kullanan eski ve yeni tabloyu değiştirme yöntemi
istemci uygulamaları tarafından algılanamaz.
Bu yöntem daha hızlıdır ve engellemez, ancak iki nedenden dolayı daha risklidir.
İlk olarak, orijinal tabloyu bırakmak ve yeniden adlandırmak arasında kısa bir süre için
geçici tablo, değiştirilecek tablo basitçe mevcut değil ve sorgular
karşı bir hata ile sonuçlanacaktır. İkincisi, bir hata varsa ve yeni
tablo eskisinin yerine yeniden adlandırılamaz, o zaman çok geç
iptal, çünkü eski tablo kalıcı olarak gitti.
Bu yöntem, "--no-swap-tables" ve "-no-drop-old-old-table"'ı zorlar.
Yok
Bu yöntem, "takas" olmadan "drop_swap" gibidir. Herhangi bir yabancı anahtar
orijinal tabloya başvurulduğunda, şimdi var olmayan bir tabloya başvurulacaktır. Bu irade
genellikle "SHOW ENGINE INNODB" de görünen yabancı anahtar ihlallerine neden olur.
DURUM", aşağıdakine benzer:
"idx_fk_staff_id" dizinine eklemeye çalışılıyor:
VERİ TUPLE: 2 alan;
0: uzunluk 1; altıgen 05; artan ;;
1: uzunluk 4; altıgen 80000001; artan ;;
Ama ana tablo `sakila`.`staff_old`
veya .ibd dosyası şu anda mevcut değil!
Bunun nedeni, orijinal tablonun (bu durumda sakila.staff) olarak yeniden adlandırılmış olmasıdır.
sakila.staff_old ve sonra düştü. Bu yabancı anahtar kısıtlamalarını ele alma yöntemi
veritabanı yöneticisinin aracın yerleşik özelliğini devre dışı bırakabilmesi için sağlanmıştır.
istenirse işlevsellik.
--[hayır]değiştirmeden önce analiz et
varsayılan: evet
Eski tabloyla değiştirmeden önce yeni tablo üzerinde ANALYZE TABLE'ı yürütün. Varsayılan olarak,
bu yalnızca MySQL 5.6 ve daha yenisini çalıştırırken olur ve "innodb_stats_persistent"
etkinleştirilmiş. MySQL'den bağımsız olarak etkinleştirmek veya devre dışı bırakmak için seçeneği açıkça belirtin
sürüm ve "innodb_stats_persistent".
Bu, InnoDB optimize edici istatistikleriyle ilgili potansiyel olarak ciddi bir sorunu ortadan kaldırır.
Uyarılmakta olan tablo meşgulse ve araç hızlı bir şekilde tamamlanırsa, yeni tablo
değiştirildikten sonra optimize edici istatistiklerine sahip değil. Bu, hızlı, dizin kullanımına neden olabilir
Optimize edici istatistikleri güncellenene kadar tam tablo taramaları yapmak için sorgular (genellikle
10 saniye). Tablo büyükse ve sunucu çok meşgulse, bu bir kesintiye neden olabilir.
--ask-geçiş
MySQL'e bağlanırken bir şifre isteyin.
--karakter seti
kısa form: -A; tür: dize
Varsayılan karakter seti. Değer utf8 ise, Perl'in STDOUT üzerindeki ikili modunu utf8'e ayarlar,
mysql_enable_utf8 seçeneğini DBD::mysql'ye iletir ve ardından SET NAMES UTF8'i çalıştırır
MySQL'e bağlanma. Diğer herhangi bir değer, utf8 katmanı olmadan STDOUT'ta binmode ayarlar,
ve MySQL'e bağlandıktan sonra SET NAMES'i çalıştırır.
--[hayır]kontrol-değiştir
varsayılan: evet
Belirtilen "--alter"i ayrıştırır ve olası istenmeyen davranışlara karşı uyarmaya çalışır.
Şu anda şunları kontrol eder:
Sütun yeniden adlandırılıyor
Aracın önceki sürümlerinde, bir sütunu "CHANGE COLUMN name" ile yeniden adlandırmak
new_name" bu sütundaki verilerin kaybolmasına neden olur. Araç şimdi
alter deyimi ve bu durumları yakalamaya çalışır, bu nedenle yeniden adlandırılan sütunların
orijinal verilerle aynı veriler. Ancak, bunu yapan kod tam değildir.
şişmiş SQL ayrıştırıcı, bu nedenle önce aracı "--dry-run" ve "--print" ile çalıştırmalısınız.
ve yeniden adlandırılan sütunları doğru şekilde algıladığını doğrulayın.
BİRİNCİL ANAHTARI BIRAK
"--alter", "PRIMARY KEY" (büyük/küçük harfe ve boşluğa duyarsız) içeriyorsa, bir uyarı
yazdırılır ve "--dry-run" belirtilmedikçe takım çıkar. değiştirmek
birincil anahtar tehlikeli olabilir, ancak araç bunu kaldırabilir. Aracın tetikleyicileri,
özellikle DELETE tetikleyicisi, birincil anahtarın değiştirilmesinden en çok etkilenir
çünkü araç, tetikleyicileri için birincil anahtarı kullanmayı tercih eder. Malısın
önce aracı "--dry-run" ve "--print" ile çalıştırın ve tetikleyicilerin
düzeltin.
--kontrol aralığı
tip: zaman; varsayılan: 1
"--max-lag" kontrolleri arasındaki uyku süresi.
--[hayır]kontrol planı
varsayılan: evet
Güvenlik için sorgu yürütme planlarını kontrol edin. Varsayılan olarak, bu seçenek aracın çalışmasına neden olur
Az miktarda veriye erişmesi amaçlanan sorguları çalıştırmadan önce AÇIKLAYIN, ancak
MySQL kötü bir yürütme planı seçerse birçok satıra erişebilir. Bunlar şunları içerir:
yığın sınırlarını belirlemek için sorgular ve yığın sorguları kendilerini. eğer görünürse
MySQL'in hatalı bir sorgu yürütme planı kullanacağını varsayarsak, araç
tablo.
Araç, bir yürütme planının kötü olup olmadığını belirlemek için birkaç buluşsal yöntem kullanır. bu
Birincisi, EXPLAIN'in MySQL'in erişmek için istenen dizini kullanmayı planladığını bildirip bildirmediğidir.
satırlar. MySQL farklı bir dizin seçerse, araç sorguyu güvensiz olarak değerlendirir.
Araç aynı zamanda MySQL raporlarının ne kadarının aşağıdakiler için kullanacağını da kontrol eder.
sorgu. EXPLAIN çıktısı bunu key_len sütununda gösterir. Araç şunları hatırlar:
görülen en büyük key_len ve MySQL'in daha küçük kullanacağını bildirdiği parçaları atlar
indeksin ön eki. Bu buluşsal yöntem, bir
diğer parçalardan daha kötü yürütme planı.
Araç, hatalı bir yürütme nedeniyle bir yığın atlandığında ilk kez bir uyarı yazdırır
her tabloda planlayın. Sonraki parçalar sessizce atlanır, ancak
aracın çıktısındaki ATLANMIŞ sütununda atlanan parçaların sayısı.
Bu seçenek, her tabloya ve öbeğe bazı kurulum çalışmaları ekler. iş olmasa da
MySQL için müdahaleci, tüketen sunucuya daha fazla gidiş-dönüş ile sonuçlanır
zaman. Parçaları çok küçük yapmak, ek yükün nispeten daha büyük olmasına neden olur. o
bu nedenle parçaları çok küçük yapmamanız önerilir, çünkü alet
Eğer yaparsanız tamamlamak için çok uzun bir zaman.
--[no]kontrol-çoğaltma-filtreleri
varsayılan: evet
Herhangi bir sunucuda herhangi bir çoğaltma filtresi ayarlanmışsa iptal edin. Araç sunucu arar
binlog_ignore_db ve replikate_do_db gibi çoğaltmayı filtreleyen seçenekler. Eğer o
bu tür filtreleri bulursa, hata vererek iptal eder.
Kopyalar herhangi bir filtreleme seçeneğiyle yapılandırılmışsa, dikkatli olmalısınız.
replikalarda değil, master'da bulunan veritabanlarını veya tabloları değiştirmek için,
çünkü çoğaltmanın başarısız olmasına neden olabilir. Çoğaltma hakkında daha fazla bilgi için
kurallar, bkz.http://dev.mysql.com/doc/en/replication-rules.html>.
--slave-lag'i kontrol edin
tür: dize
Bu kopyanın gecikmesi "--max-lag" değerinden az olana kadar veri kopyasını duraklatın. değer bir
Bağlantı seçeneklerinden özellikleri devralan DSN ("--port", "--user",
vb.). Bu seçenek, normal bulma davranışını geçersiz kılar ve sürekli olarak
bağlı TÜM kopyalarda çoğaltma gecikmesini izleme. izlemek istemiyorsanız
TÜM kopyalar, ancak birden fazla kopyanın izlenmesini istiyorsanız, ardından
Bu seçenek yerine "--recursion-method" seçeneğine DSN seçeneği.
--parça indeksi
tür: dize
Tabloları parçalamak için bu dizini tercih edin. Varsayılan olarak, araç en çok
parçalama için uygun dizin. Bu seçenek, oluşturduğunuz dizini belirlemenizi sağlar.
tercih etmek. Dizin mevcut değilse, araç varsayılanına geri dönecektir.
indeks seçme davranışı. Araç, dizini bir dizindeki SQL ifadelerine ekler.
"Kuvvet INDEX" maddesi. Bu seçeneği kullanırken dikkatli olun; kötü bir indeks seçimi
kötü performansa neden olur.
--yığın-indeks-sütunları
tür: int
Bir "--yığın indeksi"nin yalnızca en soldaki bu sütunlarını kullanın. Bu sadece için çalışır
bileşik dizinler ve MySQL sorgu iyileştiricisindeki bir hatanın olduğu durumlarda kullanışlıdır.
(planlayıcı) bulmak için dizini kullanmak yerine geniş bir satır aralığını taramasına neden olur.
başlangıç ve bitiş noktaları tam olarak Bu sorun bazen şu dizinlerde oluşur:
4 veya daha fazla gibi birçok sütun. Bu olursa, araç bir uyarı yazdırabilir
"--[no]kontrol planı" seçeneğiyle ilgili. Alete yalnızca ilkini kullanma talimatı verme
Dizinin N sütunu, bazı durumlarda hata için bir geçici çözümdür.
--Parça boyutu
tip: boyut; varsayılan: 1000
Kopyalanan her yığın için seçilecek satır sayısı. İzin verilen son ekler k, M, G'dir.
Bu seçenek, yığın boyutunu ayarlamak olan varsayılan davranışı geçersiz kılabilir.
parçaları tam olarak "--yığın-zaman" saniyelerinde çalıştırmaya çalışmak için dinamik olarak. Bu ne zaman
seçenek açıkça ayarlanmaz, varsayılan değeri başlangıç noktası olarak kullanılır, ancak
bu durumda, araç bu seçeneğin değerini yok sayar. Bu seçeneği açıkça ayarlarsanız,
ancak, daha sonra dinamik ayarlama davranışını devre dışı bırakır ve tüm parçaları oluşturmaya çalışır.
tam olarak belirtilen satır sayısı.
Bir incelik var: öbek dizini benzersiz değilse, öbek dizini
istenenden daha büyük olacaktır. Örneğin, bir tablo bir dizin tarafından öbeklenmişse,
10,000 belirli bir değer içeriyorsa, eşleşen bir WHERE yan tümcesi yazmanın bir yolu yoktur.
değerlerin yalnızca 1,000'i ve bu yığın en az 10,000 satır büyüklüğünde olacaktır. böyle bir
"--chunk-size-limit" nedeniyle yığın muhtemelen atlanacak.
--parça boyutu sınırı
tip: yüzer; varsayılan: 4.0
İstenen yığın boyutundan bu kadar büyük parçaları kopyalamayın.
Bir tablonun benzersiz dizinleri olmadığında, yığın boyutları yanlış olabilir. Bu seçenek
hata için maksimum tolere edilebilir bir sınır belirtir. araç kullanır ile
öbekte kaç satır olduğunu tahmin edin. Bu tahmin istenen yığını aşarsa
boyut çarpı sınırı, ardından araç öbeği atlar.
Bu seçenek için minimum değer 1'dir; bu, hiçbir yığının şundan daha büyük olamayacağı anlamına gelir.
"--Parça boyutu". Tarafından bildirilen satırlar nedeniyle muhtemelen 1 belirtmek istemezsiniz.
EXPLAIN, dizindeki gerçek satır sayısından farklı olabilen tahminlerdir.
parça. 0 değerini belirterek büyük boyutlu yığın denetimini devre dışı bırakabilirsiniz.
Araç ayrıca bu seçeneği, başvuruda bulunan yabancı anahtarların nasıl işleneceğini belirlemek için kullanır.
değiştirilecek tablo. Ayrıntılar için "--alter-Foreign-keys-method" bölümüne bakın.
--parça-zaman
tip: yüzer; varsayılan: 0.5
Her veri kopyalama sorgusunun yürütülmesi bu kadar uzun sürecek şekilde yığın boyutunu dinamik olarak ayarlayın.
Araç, kopyalama hızını (saniyedeki satır sayısı) izler ve her birinden sonra yığın boyutunu ayarlar.
veri kopyalama sorgusu, böylece bir sonraki sorgu bu süreyi (saniye olarak) alır.
uygulamak. Saniyede katlanarak azalan hareketli bir sorgu ortalaması tutar, bu nedenle
sunucu yükündeki değişiklikler nedeniyle sunucunun performansı değişirse, araç
çabuk uyum sağlar.
Bu seçenek sıfıra ayarlanırsa yığın boyutu otomatik olarak ayarlanmaz, bu nedenle sorgu süreleri
değişebilir, ancak sorgu yığın boyutları değişmez. Aynı şeyi yapmanın başka bir yolu da bir
varsayılan olarak bırakmak yerine, "--chunk-size" değerini açıkça belirtin.
--yapılandırma
tür: Dizi
Bu virgülle ayrılmış yapılandırma dosyalarının listesini okuyun; belirtilmişse, bu ilk olmalıdır
komut satırındaki seçenek.
--kritik yük
tür: Dizi; varsayılan: Threads_running=50
Her parçadan sonra GLOBAL STATUS GÖSTER'i inceleyin ve yük çok yüksekse işlemi iptal edin. bu
seçeneği, MySQL durum değişkenlerinin ve eşiklerinin virgülle ayrılmış bir listesini kabul eder. Bir
isteğe bağlı "=MAX_VALUE" (veya ":MAX_VALUE") her bir değişkeni takip edebilir. verilmezse,
araç, başlangıçtaki mevcut değeri inceleyerek ve ikiye katlayarak bir eşik belirler.
Daha fazla ayrıntı için "--max-load" bölümüne bakın. Bu seçenekler benzer şekilde çalışır, ancak bunun dışında
seçeneği, aracı duraklatmak yerine durdurur ve varsayılan değer
eşik belirtmezseniz farklı hesaplanır. Bu seçeneğin nedeni, bir
orijinal tablodaki tetikleyicilerin sunucuya çok fazla yük eklemesi durumunda güvenlik kontrolü
aksama süresine neden olmasıdır. Muhtemelen Threads_running'in tek bir değeri yoktur.
her sunucu için yanlıştır, ancak varsayılan olarak 50'nin aşağıdakiler için kabul edilemez derecede yüksek olduğu görülmektedir.
çoğu sunucu, işlemin derhal iptal edilmesi gerektiğini belirtir.
--veri tabanı
kısa biçim: -D; tür: dize
Bu veritabanına bağlanın.
--varsayılan-motor
Yeni tablodan "ENGINE" öğesini kaldırın.
Varsayılan olarak yeni tablo, orijinal tabloyla aynı tablo seçenekleriyle oluşturulur,
bu nedenle, orijinal tablo InnoDB'yi kullanıyorsa, yeni tablo InnoDB'yi kullanır. kesin olarak
çoğaltmayı içeren durumlarda, bu, bir
Aynı masa için farklı motor. Bu seçeneğin belirtilmesi, yeni tablonun
sistemin varsayılan motoruyla oluşturulmalıdır.
--defaults-dosyası
kısa form: -F; tür: dize
Yalnızca verilen dosyadan mysql seçeneklerini okuyun. Mutlak bir yol adı vermelisiniz.
--[no]yeni-tablo bırak
varsayılan: evet
Orijinal tablonun kopyalanması başarısız olursa yeni tabloyu bırakın.
"--no-drop-new-table" ve "-no-swap-tables" belirtilmesi yeni, değiştirilmiş kopyayı bırakır
orijinal tabloyu değiştirmeden tablonun. "--yeni-tablo-adı" konusuna bakın.
--no-drop-new-table "alter-yabancı-anahtarlar-yöntem drop_swap" ile çalışmaz.
--[hayır]bırak-eski-tablo
varsayılan: evet
Yeniden adlandırdıktan sonra orijinal tabloyu bırakın. Orijinal tablo oluşturulduktan sonra
yeni tablonun yerini alması için başarıyla yeniden adlandırıldı ve herhangi bir hata yoksa,
araç varsayılan olarak orijinal tabloyu düşürür. Herhangi bir hata varsa, araç bırakır
orijinal tablo yerinde.
"--no-swap-tables" belirtilirse, bırakılacak eski bir tablo yoktur.
--[hayır]bırakma tetikleyicileri
varsayılan: evet
Tetikleyicileri eski masaya bırakın. "--no-drop-tetikleyiciler", "-no-drop-eski-table"ı zorlar.
--kuru çalışma
Yeni tabloyu oluşturun ve değiştirin, ancak tetikleyiciler oluşturmayın, verileri kopyalamayın veya tabloları değiştirmeyin.
orijinal masa.
--uygulamak
Belgeleri okuduğunuzu ve tabloyu değiştirmek istediğinizi belirtin. Mecbursun
tabloyu değiştirmek için bu seçeneği belirtin. Bunu yapmazsanız, araç yalnızca
bazı güvenlik kontrolleri ve çıkış. Bu, belgeleri okuduğunuzdan emin olmanıza yardımcı olur
ve bu aracı nasıl kullanacağınızı anlayın. Belgeleri okumadıysanız, o zaman
bu seçeneği belirtmeyin.
--Kuvvet
Bu seçenekler, alternatif-yabancı anahtarlar-yöntemi kullanılması durumunda onayı atlar = yok,
hangi yabancı anahtar kısıtlamalarını kırabilir.
--yardım et
Yardımı göster ve çık.
--ev sahibi
kısa biçim: -h; tür: dize
Ana bilgisayara bağlanın.
--max-akış-ctl
tür: şamandıra
--max-lag'a biraz benzer, ancak PXC kümeleri için. Harcanan ortalama zaman kümesini kontrol edin
Akış Kontrolü için duraklatma ve belirtilen yüzdeyi aşarsa aleti duraklatma
seçeneğinde. 0 değeri, *herhangi bir* Akış Kontrolü yapıldığında aracın duraklatılmasına neden olur.
aktivite tespit edilir. Varsayılan, Akış Kontrolü denetimi olmamasıdır. Bu seçenek mevcuttur
PXC sürümleri 5.6 veya üzeri için.
--max-gecikme
tip: zaman; varsayılan: 1s
Tüm replikaların gecikmesi bu değerden az olana kadar veri kopyalamayı duraklatın. Her veriden sonra-
kopya sorgusu (her bir yığın), araç tüm kopyaların çoğaltma gecikmesine bakar.
hangi bağlanır, Seconds_Behind_Master. Herhangi bir replika şundan daha fazla gecikiyorsa
Bu seçeneğin değeri, daha sonra araç "--check-interval" saniye boyunca uyuyacaktır,
sonra tüm kopyaları tekrar kontrol edin. "--check-slave-lag" belirtirseniz, yalnızca araç
tüm sunucuları değil, o sunucuyu gecikme açısından inceler. Tam olarak hangisini kontrol etmek istiyorsanız
Aracın izlediği sunucularda, "--recursion-method" için DSN değerini kullanın.
Araç, kopyaların gecikmesini durdurmak için sonsuza kadar bekler. Herhangi bir replika durdurulursa,
araç, çoğaltma başlatılana kadar sonsuza kadar bekler. Veri kopyalama, tüm
replikalar çalışıyor ve çok fazla gecikme yapmıyor.
Araç, beklerken ilerleme raporları yazdırır. Bir çoğaltma durdurulursa, bir
hemen ilerleme raporu, ardından her ilerleme raporu aralığında tekrar.
--azami yük
tür: Dizi; varsayılan: Threads_running=25
Her parçadan sonra GLOBAL STATUS GÖSTER'i inceleyin ve herhangi bir durum değişkeni varsa duraklatın.
eşiklerinden daha yüksektir. Seçenek, virgülle ayrılmış bir MySQL listesini kabul eder
durum değişkenleri. Her birini isteğe bağlı bir "=MAX_VALUE" (veya ":MAX_VALUE") takip edebilir
değişken. Verilmezse, araç mevcut durumu inceleyerek bir eşik belirler.
değeri ve %20 oranında artırılması.
Örneğin, Threads_connected çok yükseldiğinde aracın duraklamasını istiyorsanız,
"Threads_connected" belirtilebilir ve araç,
çalışmaya başlar ve bu değere %20 ekler. Geçerli değer 100 ise, alet
Threads_connected 120'yi aştığında duraklar ve 120'nin altına düştüğünde çalışmaya devam eder
yine. 110 gibi açık bir eşik belirtmek isterseniz, ikisinden birini kullanabilirsiniz.
"Threads_connected:110" veya "Threads_connected=110".
Bu seçeneğin amacı, aletin yüzeye çok fazla yük eklemesini önlemektir.
sunucu. Veri kopyalama sorguları müdahaleciyse veya kilit beklemelerine neden oluyorsa,
sunucudaki diğer sorgular engelleme ve sıraya girme eğiliminde olacaktır. Bu genellikle neden olur
Threads_running artacak ve araç, SHOW GLOBAL'ı çalıştırarak bunu algılayabilir.
STATUS, her sorgu tamamlandıktan hemen sonra. Bunun için bir eşik belirtirseniz
değişken, ardından araca, sorgular normal şekilde çalışana kadar beklemesini söyleyebilirsiniz.
yine. Ancak bu, sıraya girmeyi engellemez; sadece sunucuya bir şans verecek
kuyruktan kurtarmak için. Kuyruğa girdiğini fark ederseniz, azaltmak en iyisidir.
parça zamanı.
--yeni-tablo-adı
tür: dize; varsayılan: %T_new
Değiştirilmeden önce yeni tablo adı. %T orijinal tablo adıyla değiştirilir.
Varsayılan kullanıldığında, araç en fazla 10 "_" (alt çizgi) ile adın önüne ekler.
benzersiz bir tablo adı bulun. Bir tablo adı belirtilmişse, araç onu öneklemez.
"_" ile, bu nedenle tablo mevcut olmamalıdır.
--parola
kısa biçim: -p; tür: dize
Bağlanırken kullanılacak parola. Parola virgül içeriyorsa, bunlar kaçılmalıdır
ters eğik çizgi ile: "sınav\,ple"
--pid
tür: dize
Verilen PID dosyasını oluşturun. PID dosyası zaten mevcutsa araç başlamaz ve
içerdiği PID, mevcut PID'den farklıdır. Ancak, eğer PID dosyası
mevcutsa ve içerdiği PID artık çalışmıyorsa, araç PID'nin üzerine yazacaktır.
geçerli PID ile dosya. Araç çıktığında PID dosyası otomatik olarak kaldırılır.
--Eklenti
tür: dize
Bir "pt_online_schema_change_plugin" sınıfını tanımlayan Perl modül dosyası. bir eklenti
pt-online-schema'nın birçok bölümüne bağlanabilen bir Perl modülü yazmanıza izin verir.
değişiklik. Bu, Perl ve Percona Toolkit kuralları hakkında iyi bir bilgi sahibi olmayı gerektirir.
bu belgenin kapsamı dışındadır. Varsa lütfen Percona ile iletişime geçin.
Sorularınız veya yardıma ihtiyacınız var.
Daha fazla bilgi için "PLUGIN" bölümüne bakın.
--Liman
kısa biçim: -P; tür: int
Bağlantı için kullanılacak bağlantı noktası numarası.
--Yazdır
SQL ifadelerini STDOUT'a yazdırın. Bu seçeneği belirlemek, çoğu öğeyi görmenizi sağlar.
aracın yürüttüğü ifadeler. Bu seçeneği "--dry-run" ile kullanabilirsiniz.
örnek.
--ilerleme
tür: dizi; varsayılan: zaman,30
Satırları kopyalarken ilerleme raporlarını STDERR'ye yazdırın. Değer virgülle ayrılmış
iki bölümden oluşan liste. İlk kısım yüzde, zaman veya yineleme olabilir; en
ikinci kısım, bir güncellemenin ne sıklıkta yazdırılması gerektiğini yüzde, saniye,
veya yineleme sayısı.
--sessizlik
kısa biçim: -q
Mesajları STDOUT'a yazdırmayın ("--ilerleme"yi devre dışı bırakır). Hatalar ve uyarılar
hala STDERR'ye yazdırılır.
-- yineleme
tür: int
Kopyaları keşfederken hiyerarşide yinelenecek düzey sayısı. Varsayılan
sonsuz. Ayrıca bkz. "--özyineleme-yöntemi".
--recursion-yöntemi
tür: dizi; varsayılan: işlem listesi, ana bilgisayarlar
Kopyaları keşfetmek için tercih edilen özyineleme yöntemi. Olası yöntemler şunlardır:
YÖNTEM KULLANIMLARI
==============================
süreç listesi PROSES LİSTESİNİ GÖSTER
ana bilgisayarlar KÖLE KONAKLARI GÖSTER
dsn=DSN Bir tablodaki DSN'ler
hiçbiri köle bulma
SHOW SLAVE HOSTS güvenilir olmadığı için processlist yöntemi varsayılandır.
Ancak, sunucu standart olmayan bir bağlantı noktası kullanıyorsa (bağlantı noktası değil) hosts yöntemi daha iyi çalışabilir.
3306). Araç genellikle doğru olanı yapar ve tüm kopyaları bulur, ancak
tercih edilen bir yöntemdir ve ilk olarak kullanılacaktır.
Hosts yöntemi, replikaların Report_host, Report_port, ile yapılandırılmasını gerektirir.
vb.
dsn yöntemi özeldir: diğer DSN dizelerinin okunduğu bir tablo belirtir.
Belirtilen DSN, bir D ve t veya veritabanı nitelikli bir t belirtmelidir. DSN tablosu
aşağıdaki yapıya sahip olmalıdır:
TABLO OLUŞTUR `dsns` (
`Id` int(11) NULL DEĞİL AUTO_INCREMENT,
"parent_id" int(11) VARSAYILAN BOŞ,
"dsn" Varchar(255) NULL DEĞİL,
BİRİNCİL ANAHTAR ("kimlik")
);
Aracın, çoğaltma gecikmesi için yalnızca 10.10.1.16 ve 10.10.1.17 ana bilgisayarlarını izlemesini sağlamak için,
tabloya "h=10.10.1.16" ve "h=10.10.1.17" değerlerini girin. Şu anda,
DSN'ler kimliğe göre sıralanır, ancak id ve parent_id aksi takdirde yoksayılır.
--set-vars
tür: Dizi
MySQL değişkenlerini bu virgülle ayrılmış "değişken=değer" çiftleri listesinde ayarlayın.
Varsayılan olarak, araç şunları ayarlar:
bekleme_zaman aşımı=10000
innodb_lock_wait_timeout=1
lock_wait_timeout=60
Komut satırında belirtilen değişkenler bu varsayılanları geçersiz kılar. Örneğin,
"--set-vars wait_timeout=500" belirtilmesi, 10000 varsayılan değerini geçersiz kılar.
Araç bir uyarı yazdırır ve bir değişken ayarlanamıyorsa devam eder.
--uyku
tip: yüzer; varsayılan: 0
Her bir parçayı kopyaladıktan sonra ne kadar süre uyuyacağınız (saniye cinsinden). Bu seçenek şu durumlarda kullanışlıdır:
"--max-lag" ve "--max-load" ile kısma mümkün değildir. Küçük, alt saniye
0.1 gibi değer kullanılmalıdır, aksi takdirde aracın kopyalanması çok uzun sürebilir
büyük masalar.
--priz
kısa formlar; tür: dize
Bağlantı için kullanılacak yuva dosyası.
--İstatistik
Dahili sayaçlarla ilgili istatistikleri yazdırın. Bu, kaç uyarı geldiğini görmek için yararlıdır.
INSERT sayısına kıyasla bastırıldı.
--[hayır]takas tabloları
varsayılan: evet
Orijinal tabloyu ve yeni, değiştirilmiş tabloyu değiştirin. Bu adım çevrimiçi
yeni şema ile tablonun yerini alarak şema değiştirme işlemi
orijinal masa. Orijinal tablo "eski tablo" olur ve araç onu düşürür
"--[no]bırak-eski tablo"yu devre dışı bırakmadığınız sürece.
--dener
tür: dizi
Kritik işlemlerin kaç kez deneneceği. Bazı işlemler aşağıdaki nedenlerden dolayı başarısız olursa,
önemli, kurtarılabilir hatalar, araç bekler ve işlemi yeniden dener. Bunlar
varsayılan deneme sayısı ve bekleme süresi ile yeniden denenen işlemler
denemeler arasında (saniye cinsinden):
OPERASYON BEKLEME DENEYİMİ
=================== ===== ====
create_triggers 10 1
drop_triggers 10 1
kopya_satırlar 10 0.25
takas_tables 10 1
update_foreign_keys 10 1
analiz_tablo 10 1
Varsayılanları değiştirmek için aşağıdaki gibi yeni değerleri belirtin:
-- create_triggers:5:0.5,drop_triggers:5:0.5 dener
Bu, aracın 5 ile 0.5 kez "create_triggers" ve "drop_triggers" denemesini sağlar.
denemeler arasında ikinci bekleme. Yani format:
işlem:dener:bekle[,işlem:dener:bekle]
Her üç değer de belirtilmelidir.
Çoğu işlemin yalnızca MySQL 5.5 ve daha yeni sürümlerde etkilendiğini unutmayın.
meta veri kilitleri nedeniyle "lock_wait_timeout" ("--set-vars" konusuna bakın). "copy_rows"
İşlem, MySQL'in herhangi bir sürümünde "innodb_lock_wait_timeout" tarafından etkilenir.
Tetikleyicileri oluşturmak ve bırakmak için, her "CREATE" için deneme sayısı geçerlidir.
Her bir tetik için TRIGGER" ve "DROP TRIGGER" ifadesi. Satırları kopyalamak için sayı
of try, tüm tablo için değil, her bir parça için geçerlidir. Tabloları değiştirmek için, sayı
of try genellikle bir kez uygulanır çünkü genellikle yalnızca bir "TABLOYU YENİDEN ADLANDIR" vardır
Beyan. Yabancı anahtar kısıtlamalarını yeniden oluşturmak için, deneme sayısı aşağıdakilere uygulanır:
her bir ifade "rebuild_constraints" için ("ALTER" ifadeleri)
"--yabancı-anahtarlar-yöntemi"; "drop_swap" yöntemi için diğer ifadeler).
Aşağıdaki hatalar oluşursa araç her işlemi yeniden dener:
Kilit bekleme zaman aşımı (innodb_lock_wait_timeout ve lock_wait_timeout)
Kilitlenme bulundu
Sorgu öldürüldü (KILL QUERY )
Bağlantı kesildi (KILL CONNECTION )
MySQL ile bağlantı kesildi
Bağlantıların kesilmesi ve kesilmesi durumunda, araç otomatik olarak yeniden bağlanacaktır.
Hatalar ve yeniden denemeler "--statistics"e kaydedilir.
--kullanıcı
kısa biçim: -u; tür: dize
Mevcut kullanıcı değilse oturum açmak için kullanıcı.
--versiyon
Sürümü göster ve çık.
--[hayır]sürüm kontrolü
varsayılan: evet
Percona Toolkit, MySQL ve diğer programların en son sürümünü kontrol edin.
Bu, standart bir "güncellemeleri otomatik olarak kontrol et" özelliğidir ve iki ek
özellikleri. İlk olarak araç, yerel sistemdeki diğer programların sürümlerini şurada kontrol eder:
kendi versiyonuna ek olarak. Örneğin, her MySQL sunucusunun sürümünü kontrol eder.
Perl'e ve Perl modülü DBD::mysql'ye bağlanır. İkincisi, kontrol eder ve uyarır
bilinen sorunları olan sürümler hakkında. Örneğin, MySQL 5.5.25'te kritik bir hata vardı ve
5.5.25a olarak yeniden yayınlandı.
Tüm güncellemeler veya bilinen sorunlar, aracın normal çıktısından önce STDOUT'a yazdırılır.
Bu özellik asla aletin normal çalışmasına müdahale etmemelidir.
Daha fazla bilgi için ziyaret edin .
EKLENTİ
"--plugin" tarafından belirtilen dosya, adında bir sınıf (yani bir paket) tanımlamalıdır.
Bir "new()" alt yordamı ile "pt_online_schema_change_plugin". Araç bir
bu sınıfın bir örneğini seçin ve tanımladığı tüm kancaları çağırın. Kanca gerekmez, ancak bir
eklenti onlarsız pek kullanışlı değil.
Bu kancalar, bu sırayla, tanımlanmışsa çağrılır:
init
Before_create_new_table
after_create_new_table
Before_alter_new_table
after_alter_new_table
Before_create_triggers
after_create_triggers
Before_copy_rows
after_copy_rows
Before_swap_tables
after_swap_tables
Before_update_foreign_keys
after_update_foreign_keys
Before_drop_old_table
after_drop_old_table
Before_drop_triggers
önce_çıkış
get_slave_lag
Her kanca farklı argümanlar iletilir. Bir kancaya hangi argümanların iletildiğini görmek için,
kancanın adını aracın kaynak kodunda aşağıdaki gibi arayın:
# --eklenti kancası
if ( $plugin && $plugin->can('init') ) {
$eklenti->init(
orig_tbl => $orig_tbl,
child_tables => $child_tables,
renamed_cols => $renamed_cols,
köleler => $ köleler,
slave_lag_cxns => $slave_lag_cxns,
);
}
"# --plugin hook" yorumu her kanca çağrısından önce gelir.
Sorularınız varsa veya yardıma ihtiyacınız varsa lütfen Percona ile iletişime geçin.
DSN SEÇENEKLER
Bu DSN seçenekleri, bir DSN oluşturmak için kullanılır. Her seçenek "seçenek=değer" şeklinde verilir.
Seçenekler büyük/küçük harfe duyarlıdır, dolayısıyla P ve p aynı seçenek değildir. olamaz
boşluk "=" işaretinden önce veya sonra ve değer boşluk içeriyorsa alıntı yapılmalıdır.
DSN seçenekleri virgülle ayrılmıştır. Tüm ayrıntılar için percona-toolkit kılavuz sayfasına bakın.
Bir
dsn: karakter kümesi; kopya: evet
Varsayılan karakter seti.
· NS
dsn: veritabanı; kopya: evet
Eski ve yeni tablo için veritabanı.
F
dsn: mysql_read_default_file; kopya: evet
Yalnızca verilen dosyadan varsayılan seçenekleri oku
· H
dsn: ana bilgisayar; kopya: evet
Ana bilgisayara bağlanın.
· P
dsn: şifre; kopya: evet
Bağlanırken kullanılacak parola. Parola virgül içeriyorsa, bunlar kaçılmalıdır
ters eğik çizgi ile: "sınav\,ple"
· P
dsn: bağlantı noktası; kopya: evet
Bağlantı için kullanılacak bağlantı noktası numarası.
· S
dsn: mysql_socket; kopya: evet
Bağlantı için kullanılacak yuva dosyası.
· T
dsn: tablo; kopya: hayır
Değiştirilecek tablo.
· sen
dsn: kullanıcı; kopya: evet
Mevcut kullanıcı değilse oturum açmak için kullanıcı.
ÇEVRE
"PTDEBUG" ortam değişkeni, STDERR'ye ayrıntılı hata ayıklama çıktısı sağlar. Etkinleştirmek
hata ayıklama ve tüm çıktıları bir dosyaya yakalama, aracı aşağıdaki gibi çalıştırın:
PTDEBUG=1 pt-online-schema-change ... > DOSYA 2>&1
Dikkatli olun: Hata ayıklama çıktısı hacimlidir ve birkaç megabayt çıktı üretebilir.
SİSTEM ŞARTLAR
Perl, DBI, DBD::mysql ve herhangi bir programa yüklenmesi gereken bazı çekirdek paketlere ihtiyacınız var.
Perl'in oldukça yeni versiyonu.
Bu araç yalnızca MySQL 5.0.2 ve daha yeni sürümlerde çalışır, çünkü önceki sürümlerde çalışmaz.
tetikleyicileri destekler.
onworks.net hizmetlerini kullanarak pt-online-schema-changep'i çevrimiçi kullanın