Doküman menüsü

Sürüm 3.0.0

Bağlantı Kontrolleri

Bağlantı açılış kontrolleri: Kaynak ve hedef sunucu kimlikleri, oturum parametreleri, uyarı kapasitesi ve karakter seti uyumluluğu.

Bu kontroller GoArchive veritabanına bağlanırken, ön kontrollerden ve herhangi bir takip kaydı yazılmadan önce çalışır. Ön kontrollerin atlanması bu kontrolleri etkilemez.

SRC_DEST_IDENTITY_CHECK

Bu kontrol, kaynak ile hedefin aynı sunucu kimliğini (server_uuid) ve aynı şema adını bildirdiği durumu yakalar; şema adları büyük/küçük harf ayrımı gözetilmeden karşılaştırılır. Kendi üzerine yapılan bir arşivleme, tabloyu kendisiyle karşılaştırarak doğrular ve ardından tek kopyayı siler.

failed to connect to databases: SRC_DEST_IDENTITY_CHECK: source and destination
are the same database (server_uuid=…; source schema=app at db1:3306, destination
schema=app at db1:3306). GoArchive refuses: it would verify the table against
itself and delete the only copy. …

Çözüm: destination ayarını farklı bir sunucuya veya şemaya yönlendirin. Aynı sunucuda farklı bir şema kullanımı desteklenir. Büyük/küçük harf duyarlılığı ve klonlanmış sunucular için Sınırlar ve Kısıtlamalar sayfasına bakın.

AUTO_INCREMENT_ZERO_MODE_CHECK

Her bağlantı (kaynak, hedef ve replika; bağlantı havuzunun sonradan açtıkları dahil), devraldığı oturum SQL modlarına NO_AUTO_VALUE_ON_ZERO ekler. Böylece bir AUTO_INCREMENT kolonuna açıkça yazılan sıfır değeri sıfır olarak kalır, diğer modlar ise olduğu gibi korunur. Bu hata, GoArchive’ın oturumun bu ayarı uyguladığını kanıtlayamadığı anlamına gelir.

Çözüm: Sunucunun veya bir proxy’nin bağlantı başlatma (connection initialization) adımlarını uygulayıp uygulamadığını kontrol edin. Hata iletisinde sarmalanmış (wrapped) bir sorgu kök nedeni yer alıyorsa, raporda öncelikle bu hata gösterilir (önce bu hatayı inceleyin).

Oturum Saat Dilimi

Kaynak, hedef ve replika bağlantılarının her biri, açıldığı anda oturumunun UTC’de çalıştığını kanıtlar (time_zone = '+00:00', Oturum ayarları ). Bu ayarı geçersiz kılan bir sunucu veya proxy session time zone is not UTC hatasıyla reddedilir. Bu kontrolün bir adı yoktur ve hiçbir parametre onu atlatamaz.

MAX_ERROR_COUNT_CHECK

GoArchive her INSERT işleminin ve anahtar üzerinden çalışan her sorgunun uyarılarını okur; bu nedenle her oturumun bu uyarıları saklaması gerekir. Başlangıçta açılan veya bağlantı havuzunun sonradan açtığı her yeni kaynak ve hedef bağlantısı, oturumunun max_error_count değerini okur ve 0 değerini 1024’e yükseltir. Bu hata, bağlantının bunu yapamadığı anlamına gelir:

failed to connect to databases: failed to connect to destination database: destination: MAX_ERROR_COUNT_CHECK: db2:3306: the session's max_error_count is 0, so MySQL keeps none of a statement's warnings for GoArchive to read, and this account may not raise it (…). Raise the server's global max_error_count (MySQL's default is 1024), or grant SESSION_VARIABLES_ADMIN to this account so GoArchive raises its own sessions to 1024

Çözüm: Genel (global) değerin bir DBA tarafından yükseltilmesini sağlayın (SET PERSIST max_error_count = 1024) veya ilgili sunucu için belirtilen hesaba SESSION_VARIABLES_ADMIN yetkisi verin (Kullanıcı Yetkileri ).

Çalıştırma sırasında kapatılan (retired) bir bağlantının yerine, diğer bağlantılarda olduğu gibi yenisi açılır. Bu nedenle çalıştırma sırasında 0’a düşürülen genel değer, yerine açılan bir sonraki bağlantıya yansır. Hesap bu değeri yükseltemezse çalıştırma o noktada durur: Yalnızca açık olan veritabanı işlemi (transaction) geri alınır. Ayar veya yetki düzeltildikten sonra, bir sonraki çalıştırmanın kurtarma süreci yığını tamamlar. Replika bağlantıları kontrol edilmez: Bu bağlantılar yalnızca replika durumunu okur.

SESSION_CHARSET_CHECK

GoArchive her değeri oturumun karakter seti üzerinden okur ve sorguya bağlar (bind). Bu nedenle her bağlantı, kimlik doğrulamasından sonra utf8mb4 karakter setine ve utf8mb4_general_ci karşılaştırma kuralına ayarlanır. Ardından her yeni kaynak ve hedef bağlantısı oturumunu okur ve istemci (client), bağlantı (connection) ve sonuçlar (results) için utf8mb4 ile utf8mb4_general_ci değerlerini şart koşar. Daraltılmış bir oturum, karşılayamadığı metni ? olarak okur; geri bağlanan bir anahtar da benzer görünümlü başka bir satırla eşleşir. Hata mesajı bulunan değerleri belirtir:

failed to connect to databases: failed to connect to source database: source: SESSION_CHARSET_CHECK: db1:3306: the session is client=latin1 connection=latin1 results=latin1 collation=latin1_swedish_ci, not utf8mb4 with utf8mb4_general_ci, so text would read back changed. GoArchive sets it with SET NAMES at connect; an init_connect or a proxy on this server changes it after

Çözüm: GoArchive oturumu ayarladıktan sonra oturumu yeniden yazan bileşeni (genellikle bir proxy) bulun ve istemcinin karakter setini korumasını sağlayın. Sunucunun init_connect ayarı GoArchive’ın ayarından önce çalışır ve değişiklik gerektirmez. Kontrol, oturumu bağlantı anında ve her bağlantı için ayrı ayrı kanıtlar; oturumu sorgular arasında değiştiren çoklayıcı (multiplexing) bir proxy bu kontrolün kapsamında değildir.