Giới hạn bảng mysql
Công cụ này làm thay đổi dữ liệu nên để đảm bảo an toàn tối đa bạn nên sao lưu dữ liệu trước khi sử dụng. Khi đồng bộ hóa một máy chủ là một máy chủ sao chép với các phương thức hoặc, nó luôn thực hiện các thay đổi trên máy chủ sao chép, không bao giờ trực tiếp trên máy chủ sao chép. Nói chung, đây là cách an toàn duy nhất để đưa một bản sao trở lại đồng bộ với chủ của nó; . Tuy nhiên, những thay đổi mà nó thực hiện trên bản gốc phải là những thay đổi không hoạt động đặt dữ liệu về giá trị hiện tại của chúng và thực sự chỉ ảnh hưởng đến bản sao Show đồng bộ hóa db. tbl trên host1 đến host2 pt-table-sync --execute h=host1,D=db,t=tbl h=host2 Đồng bộ hóa tất cả các bảng trên host1 với host2 và host3 pt-table-sync --execute host1 host2 host3 Làm cho nô lệ1 có cùng dữ liệu với bản sao chính của nó pt-table-sync --execute --sync-to-master slave1 Giải quyết sự khác biệt mà pt-table-checksum tìm thấy trên tất cả các nô lệ của master1 pt-table-sync --execute --replicate test.checksum master1 Tương tự như trên nhưng chỉ giải quyết sự khác biệt trên Slave1 pt-table-sync --execute --replicate test.checksum \ --sync-to-master slave1 Đồng bộ hóa master2 trong cấu hình sao chép chính-chính, trong đó bản sao db của master2. tbl được biết hoặc nghi ngờ là không chính xác pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl Lưu ý rằng trong cấu hình master-master, phần sau sẽ KHÔNG làm những gì bạn muốn, bởi vì nó sẽ thực hiện các thay đổi trực tiếp trên master2, sau đó sẽ chuyển qua sao chép và thay đổi dữ liệu của master1 # Don't do this in a master-master setup! pt-table-sync --execute h=master1,D=db,t=tbl master2 RỦI ROCẢNH BÁO. pt-table-sync thay đổi dữ liệu. Trước khi sử dụng công cụ này, vui lòng
SỰ MIÊU TẢpt-table-sync thực hiện đồng bộ hóa dữ liệu bảng một chiều và hai chiều. Nó không đồng bộ hóa cấu trúc bảng, chỉ mục hoặc bất kỳ đối tượng lược đồ nào khác. Phần sau đây mô tả đồng bộ hóa một chiều. “Đồng bộ hóa hai hướng” được mô tả sau Công cụ này phức tạp và hoạt động theo nhiều cách khác nhau. Để sử dụng nó một cách an toàn và hiệu quả, bạn nên hiểu ba điều. mục đích, tìm sự khác biệt và chỉ định máy chủ. Ba khái niệm này có liên quan chặt chẽ với nhau và xác định cách công cụ sẽ chạy. Sau đây là logic viết tắt if DSN has a t part, sync only that table: if 1 DSN: if --sync-to-master: The DSN is a slave. Connect to its master and sync. if more than 1 DSN: The first DSN is the source. Sync each DSN in turn. else if --replicate: if --sync-to-master: The DSN is a slave. Connect to its master, find records of differences, and fix. else: The DSN is the master. Find slaves and connect to each, find records of differences, and fix. else: if only 1 DSN and --sync-to-master: The DSN is a slave. Connect to its master, find tables and filter with --databases etc, and sync each table to the master. else: find tables, filtering with --databases etc, and sync each DSN to the first. pt-table-sync có thể chạy theo một trong hai cách. có hay không. Mặc định là chạy mà không có khiến pt-table-sync tự động tìm thấy sự khác biệt một cách hiệu quả với một trong số các thuật toán (xem “ALGORITHMS”). Ngoài ra, giá trị của , nếu được chỉ định, sẽ khiến pt-table-sync sử dụng các khác biệt đã tìm thấy bằng cách chạy pt-table-checksum trước đó với tùy chọn pt-table-sync --execute host1 host2 host36 của chính nó. Nói một cách chính xác, bạn không cần sử dụng vì pt-table-sync có thể tìm thấy sự khác biệt, nhưng nhiều người sử dụng, ví dụ: nếu họ kiểm tra tổng thường xuyên bằng pt-table-checksum, sau đó sửa các khác biệt nếu cần với pt-table-sync. Nếu bạn không chắc chắn, hãy đọc kỹ tài liệu của từng công cụ và tự quyết định hoặc tham khảo ý kiến của chuyên gia Bất kể có được sử dụng hay không, bạn cần chỉ định máy chủ nào sẽ đồng bộ hóa. Có hai cách. có hay không. Việc chỉ định làm cho pt-table-sync mong đợi một và duy nhất DSN nô lệ trên dòng lệnh. Công cụ sẽ tự động phát hiện chủ của nô lệ và đồng bộ hóa nó để dữ liệu của nó giống với chủ của nó. Điều này được thực hiện bằng cách thực hiện các thay đổi trên bản chính, sau đó chuyển qua sao chép và cập nhật bản phụ để giải quyết sự khác biệt của nó. Hãy cẩn thận mặc dù. mặc dù tùy chọn này chỉ định và đồng bộ hóa một nô lệ duy nhất, nhưng nếu có các nô lệ khác trên cùng một chủ, chúng sẽ nhận được thông qua sao chép các thay đổi dành cho nô lệ mà bạn đang cố gắng đồng bộ hóa Ngoài ra, nếu bạn không chỉ định , DSN đầu tiên được cung cấp trên dòng lệnh là máy chủ nguồn. Chỉ có một máy chủ nguồn. Nếu bạn cũng không chỉ định , thì bạn phải chỉ định ít nhất một DSN khác làm máy chủ đích. Có thể có một hoặc nhiều máy chủ đích. Máy chủ nguồn và đích phải độc lập; . pt-table-sync sẽ chết do lỗi nếu nó phát hiện ra rằng máy chủ đích là máy chủ phụ vì các thay đổi được ghi trực tiếp vào máy chủ đích (và không an toàn khi ghi trực tiếp vào máy chủ phụ). Hoặc, nếu bạn chỉ định (nhưng không phải ) thì pt-table-sync sẽ yêu cầu một và chỉ một DSN chính trên dòng lệnh. Công cụ sẽ tự động khám phá tất cả các nô lệ của chủ và đồng bộ hóa chúng với chủ. Đây là cách duy nhất để đồng bộ một số (tất cả) nô lệ cùng một lúc (vì chỉ chỉ định một nô lệ) Mỗi máy chủ trên dòng lệnh được chỉ định làm DSN. DSN đầu tiên (hoặc chỉ DSN cho các trường hợp như ) cung cấp các giá trị mặc định cho các DSN khác, cho dù các DSN đó được chỉ định trên dòng lệnh hay được công cụ tự động phát hiện. Vì vậy, trong ví dụ này, pt-table-sync --execute h=host1,u=msandbox,p=msandbox h=host2 DSN host2 kế thừa các phần DSN pt-table-sync --execute --replicate test.checksum master16 và pt-table-sync --execute --replicate test.checksum master17 từ DSN host1. Sử dụng tùy chọn để xem cách pt-table-sync sẽ diễn giải các DSN được cung cấp trên dòng lệnh HẠN CHẾBản sao sử dụng bản sao dựa trên hàng
ĐẦU RANếu bạn chỉ định tùy chọn, bạn sẽ thấy thông tin về sự khác biệt giữa các bảng. Có một hàng trên mỗi bảng. Mỗi máy chủ được in riêng. Ví dụ, pt-table-sync --execute h=host1,D=db,t=tbl h=host20 kiểm tra bảng. test1 trên host1 yêu cầu 3 câu lệnh pt-table-sync --execute --replicate test.checksum \ --sync-to-master slave14 để đồng bộ hóa và nó đã sử dụng thuật toán Chunk (xem “ALGORITHMS”). Hoạt động đồng bộ hóa cho bảng này bắt đầu lúc 13. 00. 00 và kết thúc sau 17 giây (thời gian lấy từ pt-table-sync --execute --replicate test.checksum \ --sync-to-master slave15 trên máy chủ nguồn). Bởi vì sự khác biệt đã được tìm thấy, "EXIT STATUS" của nó là 2 Nếu bạn chỉ định tùy chọn này, bạn sẽ thấy các câu lệnh SQL thực tế mà tập lệnh sử dụng để đồng bộ hóa bảng nếu cũng được chỉ định Nếu bạn muốn xem các câu lệnh SQL mà pt-table-sync đang sử dụng để chọn khối, đoạn, hàng, v.v. , sau đó chỉ định một lần và hai lần. Hãy cẩn thận mặc dù. điều này có thể in rất nhiều câu lệnh SQL Có những trường hợp không có sự kết hợp nào của các câu lệnh pt-table-sync --execute --replicate test.checksum \ --sync-to-master slave14, pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl1 hoặc pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl2 có thể giải quyết sự khác biệt mà không vi phạm một số khóa duy nhất. Ví dụ: giả sử có một khóa chính trên cột a và một khóa duy nhất trên cột b. Sau đó, không có cách nào để đồng bộ hóa hai bảng này với các câu lệnh CẬP NHẬT đơn giản pt-table-sync --execute h=host1,D=db,t=tbl h=host21 Công cụ viết lại các truy vấn thành pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl2 và pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl4 trong trường hợp này. Điều này sẽ tự động được xử lý sau lần vi phạm chỉ mục đầu tiên, vì vậy bạn không phải lo lắng về điều đó Hãy cẩn thận khi sử dụng pt-table-sync trong mọi thiết lập master-master. Sao chép chính chủ vốn đã phức tạp và rất dễ mắc lỗi. Bạn cần chắc chắn rằng bạn đang sử dụng công cụ chính xác để sao chép chính-chính. Xem “SYNOPSIS” để biết tổng quan về cách sử dụng đúng Ngoài ra, hãy cẩn thận với các bảng có ràng buộc khóa ngoại với các định nghĩa pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl5 hoặc pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl6 vì những điều này có thể gây ra những thay đổi ngoài ý muốn trên các bảng con. Thấy Nói chung, công cụ này phù hợp nhất khi các bảng của bạn có khóa chính hoặc chỉ mục duy nhất. Mặc dù nó có thể đồng bộ hóa dữ liệu trong các bảng thiếu khóa chính hoặc chỉ mục duy nhất, nhưng tốt nhất nên đồng bộ hóa dữ liệu đó bằng một cách khác SAO CHÉP AN TOÀNNói chung, đồng bộ hóa bản sao chính và phụ một cách an toàn là một vấn đề không hề nhỏ. Có tất cả các loại vấn đề cần suy nghĩ, chẳng hạn như các quy trình khác thay đổi dữ liệu, cố gắng thay đổi dữ liệu trên máy con, liệu đích và nguồn có phải là một cặp chủ-chủ hay không, v.v. Nói chung, cách an toàn để làm điều đó là thay đổi dữ liệu trên bản gốc và để các thay đổi chuyển qua bản sao sang phụ giống như bất kỳ thay đổi nào khác. Tuy nhiên, điều này chỉ hoạt động nếu có thể THAY THẾ vào bảng trên máy chủ. REPLACE chỉ hoạt động nếu có một chỉ mục duy nhất trên bảng (nếu không, nó chỉ hoạt động như một INSERT thông thường) Nếu bảng của bạn có các khóa duy nhất, bạn nên sử dụng và/hoặc các tùy chọn để đồng bộ một nô lệ với chủ của nó. Điều này nói chung sẽ làm điều đúng đắn. Khi không có khóa duy nhất trên bảng, không có lựa chọn nào khác ngoài việc thay đổi dữ liệu trên nô lệ và pt-table-sync sẽ phát hiện ra rằng bạn đang cố làm như vậy. Nó sẽ phàn nàn và chết trừ khi bạn chỉ định # Don't do this in a master-master setup! pt-table-sync --execute h=master1,D=db,t=tbl master20 (xem ) Nếu bạn đang đồng bộ một bảng không có khóa chính hoặc khóa duy nhất trên cặp chính-chính, thì bạn phải thay đổi dữ liệu trên máy chủ đích. Do đó, bạn cần chỉ định # Don't do this in a master-master setup! pt-table-sync --execute h=master1,D=db,t=tbl master22 để đảm bảo an toàn (xem phần ). Nếu không, những thay đổi bạn thực hiện trên máy chủ đích sẽ sao chép trở lại máy chủ nguồn và thay đổi dữ liệu ở đó Điều an toàn nói chung để thực hiện trên một cặp chủ-chính là sử dụng tùy chọn để bạn không thay đổi dữ liệu trên máy chủ đích. Bạn cũng sẽ cần chỉ định # Don't do this in a master-master setup! pt-table-sync --execute h=master1,D=db,t=tbl master20 để ngăn pt-table-sync phàn nàn rằng nó đang thay đổi dữ liệu trên một nô lệ THUẬT TOÁNpt-table-sync có khung đồng bộ hóa dữ liệu chung sử dụng các thuật toán khác nhau để tìm sự khác biệt. Công cụ tự động chọn thuật toán tốt nhất cho mỗi bảng dựa trên các chỉ mục, loại cột và tùy chọn thuật toán được chỉ định bởi. Các thuật toán sau đây khả dụng, được liệt kê theo thứ tự ưu tiên mặc định của chúng đoạn
nhấm nháp
NhómBy
Suối
Các kế hoạch trong tương lai
ĐỒNG BỘ SONG HƯỚNGĐồng bộ hóa hai chiều là một tính năng thử nghiệm mới. Để làm cho nó hoạt động đáng tin cậy, có một số hạn chế nghiêm ngặt pt-table-sync --execute h=host1,D=db,t=tbl h=host22 Ví dụ: giả sử chúng tôi có ba máy chủ. c1, r1, r2. c1 là máy chủ trung tâm, một máy chủ giả cho các máy chủ khác (viz. r1 và r2 không phải là nô lệ của c1). r1 và r2 là các máy chủ từ xa. Các hàng trong bảng foo được cập nhật và chèn trên cả ba máy chủ và chúng tôi muốn đồng bộ hóa tất cả các thay đổi giữa tất cả các máy chủ. Bảng foo có các cột pt-table-sync --execute h=host1,D=db,t=tbl h=host23 Độ lệch tăng tự động được sử dụng để các hàng mới từ bất kỳ máy chủ nào không tạo ra các giá trị khóa chính (id) xung đột. Nói chung, các hàng mới hơn, như được xác định bởi cột ts, được ưu tiên khi tìm thấy một hàng giống nhau nhưng khác nhau trong quá trình đồng bộ hóa hai chiều. "Giống nhưng khác" có nghĩa là hai hàng có cùng giá trị khóa chính (id) nhưng khác giá trị đối với một số cột khác, chẳng hạn như cột tên trong ví dụ này. Các xung đột giống nhau nhưng khác nhau được giải quyết bằng một “xung đột”. Xung đột so sánh một số cột của các hàng cạnh tranh để xác định "người chiến thắng". Hàng chiến thắng trở thành nguồn và các giá trị của nó được sử dụng để cập nhật hàng khác Có sự khác biệt tinh tế giữa ba cột được sử dụng để đạt được đồng bộ hóa hai chiều mà bạn nên làm quen. cột đoạn (), (các) cột so sánh () và cột xung đột (). Cột chunk chỉ được sử dụng để chunk bảng; . g. “Ở ĐÂU >= 5 VÀ icd < 10”. Các đoạn được kiểm tra tổng và khi tổng kiểm tra các đoạn cho thấy sự khác biệt, công cụ sẽ chọn các hàng trong đoạn đó và tổng kiểm tra cho từng hàng. Nếu tổng kiểm tra cột khác nhau, các hàng có một hoặc nhiều giá trị cột xung đột. Trong đồng bộ một chiều truyền thống, xung đột là vấn đề cần tranh luận vì nó có thể được giải quyết đơn giản bằng cách cập nhật toàn bộ hàng đích bằng các giá trị của hàng nguồn. Tuy nhiên, trong đồng bộ hóa hai chiều, (theo danh sách tùy chọn if DSN has a t part, sync only that table: if 1 DSN: if --sync-to-master: The DSN is a slave. Connect to its master and sync. if more than 1 DSN: The first DSN is the source. Sync each DSN in turn. else if --replicate: if --sync-to-master: The DSN is a slave. Connect to its master, find records of differences, and fix. else: The DSN is the master. Find slaves and connect to each, find records of differences, and fix. else: if only 1 DSN and --sync-to-master: The DSN is a slave. Connect to its master, find tables and filter with --databases etc, and sync each table to the master. else: find tables, filtering with --databases etc, and sync each DSN to the first.5 khác bên dưới) được so sánh để xác định hàng nào là “chính xác” hoặc “có thẩm quyền”; Để đồng bộ hóa hoàn toàn cả ba máy chủ, cần có hai lần chạy pt-table-sync. Lần chạy đầu tiên đồng bộ hóa c1 và r1, sau đó đồng bộ hóa c1 và r2 bao gồm mọi thay đổi từ r1. Tại thời điểm này, c1 và r2 hoàn toàn đồng bộ, nhưng r1 thiếu bất kỳ thay đổi nào từ r2 vì c1 không có những thay đổi này khi nó và r1 được đồng bộ hóa. Vì vậy, lần chạy thứ hai là cần thiết để đồng bộ hóa các máy chủ theo cùng một thứ tự, nhưng lần này khi c1 và r1 được đồng bộ hóa, r1 sẽ nhận được các thay đổi của r2 Công cụ này không đồng bộ hóa N-cách, chỉ theo hai chiều giữa DSN đầu tiên được cung cấp trên dòng lệnh và lần lượt từng DSN tiếp theo. Vì vậy, công cụ trong ví dụ này sẽ được chạy hai lần như pt-table-sync --execute h=host1,D=db,t=tbl h=host24 Tùy chọn kích hoạt tính năng này và thực hiện nhiều kiểm tra tình trạng khác nhau. Bạn phải chỉ định các tùy chọn khác cho pt-table-sync biết cách giải quyết xung đột cho các hàng giống nhau nhưng khác nhau. Các tùy chọn này là pt-table-sync --execute h=host1,D=db,t=tbl h=host25 Sử dụng để kiểm tra tùy chọn này trước. Các câu lệnh SQL được in sẽ có các nhận xét cho biết câu lệnh sẽ được thực thi trên máy chủ nào nếu bạn sử dụng Lưu ý bên kỹ thuật. DSN đầu tiên luôn là máy chủ “trái” và các DSN khác luôn là máy chủ “phải”. Vì một trong hai máy chủ có thể trở thành nguồn hoặc đích nên thật khó hiểu khi nghĩ chúng là “src” và “dst”. Do đó, chúng thường được gọi là trái và phải. Thật dễ nhớ điều này vì DSN đầu tiên luôn ở bên trái của các DSN máy chủ khác trên dòng lệnh TRẠNG THÁI THOÁTSau đây là các trạng thái thoát (còn được gọi là giá trị trả về hoặc mã trả về) khi pt-table-sync kết thúc và thoát pt-table-sync --execute h=host1,D=db,t=tbl h=host26 TÙY CHỌNChỉ định ít nhất một trong , , hoặc và loại trừ lẫn nhau Công cụ này chấp nhận các đối số dòng lệnh bổ sung. Tham khảo “SYNOPSIS” và thông tin sử dụng để biết chi tiết --thuật toánloại. chuỗi; . Chunk, Nibble, GroupBy, Stream Thuật toán sử dụng khi so sánh các bảng, theo thứ tự ưu tiên Đối với mỗi bảng, pt-table-sync sẽ kiểm tra xem bảng có thể được đồng bộ hóa với các thuật toán đã cho theo thứ tự chúng được cung cấp hay không. Thuật toán đầu tiên có thể đồng bộ hóa bảng được sử dụng. Xem “ THUẬT TOÁN” --hỏi-vượt quaNhắc nhập mật khẩu khi kết nối với MySQL --hai chiềuBật đồng bộ hóa hai chiều giữa máy chủ đầu tiên và máy chủ tiếp theo Xem “ĐỒNG BỘ LƯỚI HƯỚNG” để biết thêm thông tin --[no]bin-logvỡ nợ. Vâng Đăng nhập nhật ký nhị phân ( pt-table-sync --execute h=host1,u=msandbox,p=msandbox h=host25) Chỉ định # Don't do this in a master-master setup! pt-table-sync --execute h=master1,D=db,t=tbl master22 sẽ pt-table-sync --execute h=host1,u=msandbox,p=msandbox h=host27--buffer-in-mysql Hướng dẫn MySQL đệm các truy vấn trong bộ nhớ của nó Tùy chọn này thêm tùy chọn pt-table-sync --execute h=host1,u=msandbox,p=msandbox h=host28 vào các truy vấn so sánh. Điều này khiến MySQL thực thi các truy vấn và đặt chúng vào một bảng tạm thời bên trong trước khi gửi kết quả trở lại pt-table-sync. Ưu điểm của chiến lược này là pt-table-sync có thể tìm nạp các hàng như mong muốn mà không cần sử dụng nhiều bộ nhớ bên trong quy trình Perl, đồng thời giải phóng các khóa trên bảng MySQL (để giảm sự tranh chấp với các truy vấn khác). Nhược điểm là nó sử dụng nhiều bộ nhớ hơn trên máy chủ MySQL Có thể bạn cũng muốn để chế độ kích hoạt, bởi vì đệm vào một bảng tạm thời và sau đó tìm nạp tất cả vào bộ nhớ của Perl có lẽ là một việc ngớ ngẩn. Tùy chọn này hữu ích nhất cho các thuật toán GroupBy và Stream, có thể lấy nhiều dữ liệu từ máy chủ --[no]buffer-to-clientvỡ nợ. Vâng Tìm nạp từng hàng một từ MySQL trong khi so sánh Tùy chọn này cho phép pt-table-sync --execute h=host1,D=db,t=tbl h=host200 khiến MySQL giữ các hàng đã chọn trên máy chủ cho đến khi công cụ tìm nạp chúng. Điều này cho phép công cụ sử dụng ít bộ nhớ hơn nhưng có thể khiến các hàng bị khóa trên máy chủ lâu hơn Nếu tùy chọn này bị vô hiệu hóa bằng cách chỉ định pt-table-sync --execute h=host1,D=db,t=tbl h=host201 thì pt-table-sync --execute h=host1,D=db,t=tbl h=host202 được sử dụng khiến MySQL gửi tất cả các hàng đã chọn tới công cụ cùng một lúc. Điều này có thể dẫn đến kết quả "con trỏ" được giữ mở trong thời gian ngắn hơn trên máy chủ, nhưng nếu các bảng lớn, thì có thể mất nhiều thời gian và sử dụng hết bộ nhớ của bạn Đối với hầu hết các kích thước dữ liệu không tầm thường, bạn muốn bật tùy chọn này Tùy chọn này bị tắt khi được sử dụng --kênh truyền hìnhloại. chuỗi Tên kênh được sử dụng khi kết nối với máy chủ bằng các kênh sao chép. Giả sử bạn có hai chủ, master_a ở cổng 12345, master_b ở cổng 1236 và một nô lệ được kết nối với cả hai chủ bằng các kênh chan_master_a và chan_master_b. Nếu bạn muốn chạy pt-table-sync để đồng bộ hóa nô lệ với master_a, pt-table-sync sẽ không thể xác định đâu là chủ chính xác vì SHOW SLAVE STATUS sẽ trả về 2 hàng. Trong trường hợp này, bạn có thể sử dụng –channel=chan_master_a để chỉ định tên kênh sẽ sử dụng trong lệnh SHOW SLAVE STATUS --charsethình thức ngắn. -MỘT; . chuỗi Bộ ký tự mặc định. Nếu giá trị là utf8, đặt chế độ binmode của Perl trên STDOUT thành utf8, chuyển tùy chọn mysql_enable_utf8 cho DBD. mysql và chạy SET NAMES UTF8 sau khi kết nối với MySQL. Bất kỳ giá trị nào khác đặt binmode trên STDOUT mà không có lớp utf8 và chạy SET NAMES sau khi kết nối với MySQL --[no]check-con-tablesvỡ nợ. Vâng Kiểm tra xem có ảnh hưởng xấu đến bảng con không. Khi , , hoặc được chỉ định, công cụ có thể đồng bộ hóa bảng bằng cách sử dụng câu lệnh pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl4. Nếu một bảng đang được đồng bộ hóa có các bảng con chứa pt-table-sync --execute h=host1,D=db,t=tbl h=host209, pt-table-sync --execute h=host1,D=db,t=tbl h=host210 hoặc pt-table-sync --execute h=host1,D=db,t=tbl h=host211, thì công cụ sẽ in lỗi và bỏ qua bảng vì pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl4 trở thành pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl2 rồi đến pt-table-sync --execute --replicate test.checksum \ --sync-to-master slave14, do đó, pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl2 sẽ xếp tầng vào bảng con và xóa các hàng của nó. Trong trường hợp xấu nhất, điều này có thể xóa tất cả các hàng trong bảng con Chỉ định pt-table-sync --execute h=host1,D=db,t=tbl h=host216 để tắt kiểm tra này. Để hoàn toàn tránh ảnh hưởng đến các bảng con, cũng chỉ định ____0_______17 để MySQL sẽ không xếp tầng bất kỳ thao tác nào từ bảng mẹ sang bảng con Kiểm tra này chỉ được định dạng trước nếu và một trong , , hoặc được chỉ định. không kiểm tra bảng con Thông báo lỗi chỉ in bảng con đầu tiên được tìm thấy với ràng buộc khóa ngoại pt-table-sync --execute h=host1,D=db,t=tbl h=host209, pt-table-sync --execute h=host1,D=db,t=tbl h=host210 hoặc pt-table-sync --execute h=host1,D=db,t=tbl h=host211. Có thể có các bảng con bị ảnh hưởng khác--[no]check-master vỡ nợ. Vâng Với , hãy thử xác minh xem chủ được phát hiện có phải là chủ thực sự không --[no]check-nô lệvỡ nợ. Vâng Kiểm tra xem máy chủ đích có phải là nô lệ không Nếu máy chủ đích là máy chủ phụ, thì việc thực hiện các thay đổi trên máy chủ đó thường không an toàn. Tuy nhiên, đôi khi bạn phải; . Theo mặc định, pt-table-sync sẽ khiếu nại nếu bạn cố thay đổi dữ liệu trên một nô lệ. Chỉ định # Don't do this in a master-master setup! pt-table-sync --execute h=master1,D=db,t=tbl master20 để tắt kiểm tra này. Sử dụng nó có nguy cơ của riêng bạn--[no]check-kích hoạt vỡ nợ. Vâng Kiểm tra xem không có trình kích hoạt nào được xác định trên bảng đích Trình kích hoạt đã được giới thiệu trong MySQL v5. 0. 2, vì vậy đối với các phiên bản cũ hơn, tùy chọn này không có tác dụng vì trình kích hoạt sẽ không được kiểm tra --chunk-columnloại. chuỗi Chia nhỏ bảng trên cột này --chunk-indexloại. chuỗi Chia nhỏ bảng bằng cách sử dụng chỉ mục này --chunk-sizeloại. chuỗi; . 1000 Số lượng hàng hoặc kích thước dữ liệu trên mỗi đoạn Kích thước của mỗi đoạn hàng cho thuật toán “Chunk” và “Nibble”. Kích thước có thể là một số hàng hoặc kích thước dữ liệu. Kích thước dữ liệu được chỉ định với hậu tố k=kibibytes, M=mebibytes, G=gibibytes. Kích thước dữ liệu được chuyển đổi thành một số hàng bằng cách chia cho độ dài trung bình của hàng --cộthình thức ngắn. -c; . mảng So sánh danh sách các cột được phân tách bằng dấu phẩy này --configloại. Mảng Đọc danh sách các tệp cấu hình được phân tách bằng dấu phẩy này; --xung đột-cộtloại. chuỗi So sánh cột này khi các hàng xung đột trong quá trình đồng bộ hóa Khi tìm thấy một hàng giống nhau nhưng khác nhau, giá trị của cột này từ mỗi hàng được so sánh theo và để xác định hàng nào có dữ liệu chính xác và trở thành nguồn. Cột có thể là bất kỳ loại nào phù hợp (đây là hầu hết tất cả các loại, ngoại trừ, ví dụ: các đốm màu) Tùy chọn này chỉ hoạt động với. Xem “ĐỒNG BỘ LƯỚI HƯỚNG” để biết thêm thông tin --xung đột-so sánhloại. chuỗi Chọn thuộc tính này làm nguồn Tùy chọn này ảnh hưởng đến cách so sánh các giá trị từ các hàng xung đột. Các so sánh có thể là một trong những MAGIC_comparisons này pt-table-sync --execute h=host1,D=db,t=tbl h=host27 Tùy chọn này chỉ hoạt động với. Xem “ĐỒNG BỘ LƯỚI HƯỚNG” để biết thêm thông tin --conflict-lỗiloại. chuỗi; . cảnh báo Cách báo cáo xung đột không thể giải quyết và lỗi xung đột Tùy chọn này thay đổi cách người dùng được thông báo khi không thể giải quyết xung đột hoặc gây ra một số loại lỗi. giá trị có thể là pt-table-sync --execute h=host1,D=db,t=tbl h=host28 Tùy chọn này chỉ hoạt động với. Xem “ĐỒNG BỘ LƯỚI HƯỚNG” để biết thêm thông tin --ngưỡng xung độtloại. chuỗi Số tiền mà cái này phải vượt quá cái kia Điều này ngăn xung đột được giải quyết nếu chênh lệch tuyệt đối giữa hai giá trị nhỏ hơn số tiền này. Ví dụ: nếu hai có giá trị dấu thời gian “2009-12-01 12. 00. 00” và “2009-12-01 12. 05. 00” sự khác biệt là 5 phút. Nếu được đặt thành “5m” xung đột sẽ được giải quyết, nhưng nếu được đặt thành “6m” xung đột sẽ không giải quyết được do chênh lệch không lớn hơn hoặc bằng 6 phút. Trong trường hợp sau này, sẽ báo lỗi Tùy chọn này chỉ hoạt động với. Xem “ĐỒNG BỘ LƯỚI HƯỚNG” để biết thêm thông tin --conflict-valueloại. chuỗi Sử dụng giá trị này cho một số Tùy chọn này cung cấp giá trị cho pt-table-sync --execute h=host1,D=db,t=tbl h=host248 và pt-table-sync --execute h=host1,D=db,t=tbl h=host249 Tùy chọn này chỉ hoạt động với. Xem “ĐỒNG BỘ LƯỚI HƯỚNG” để biết thêm thông tin --cơ sở dữ liệuhình thức ngắn. -d; . băm Chỉ đồng bộ hóa danh sách cơ sở dữ liệu được phân tách bằng dấu phẩy này Một yêu cầu phổ biến là đồng bộ các bảng từ một cơ sở dữ liệu với các bảng từ cơ sở dữ liệu khác trên cùng một máy chủ hoặc máy chủ khác. Điều này vẫn chưa thể. sẽ không làm điều đó và bạn cũng không thể làm điều đó với phần D của DSN vì không có tên bảng, nó cho rằng toàn bộ máy chủ phải được đồng bộ hóa và phần D chỉ kiểm soát cơ sở dữ liệu mặc định của kết nối --defaults-filehình thức ngắn. -F; . chuỗi Chỉ đọc các tùy chọn mysql từ tệp đã cho. Bạn phải cung cấp một tên đường dẫn tuyệt đối --chạy khôPhân tích, quyết định thuật toán đồng bộ sẽ sử dụng, in và thoát Ngụ ý để bạn có thể xem kết quả. Kết quả có cùng định dạng đầu ra mà bạn sẽ thấy khi thực sự chạy công cụ, nhưng sẽ có số 0 đối với các hàng bị ảnh hưởng. Điều này là do công cụ thực sự thực thi, nhưng dừng lại trước khi nó so sánh bất kỳ dữ liệu nào và chỉ trả về số không. Số không không có nghĩa là không có thay đổi nào được thực hiện --động cơhình thức ngắn. -e; . băm Chỉ đồng bộ hóa danh sách các công cụ lưu trữ được phân tách bằng dấu phẩy này --hành hìnhThực hiện các truy vấn để làm cho các bảng có dữ liệu giống hệt nhau Tùy chọn này làm cho pt-table-sync thực sự đồng bộ hóa dữ liệu bảng bằng cách thực hiện tất cả các truy vấn mà nó đã tạo để giải quyết sự khác biệt của bảng. Do đó, các bảng sẽ được thay đổi. Và trừ khi bạn cũng chỉ định, các thay đổi sẽ được thực hiện một cách âm thầm. Nếu đây không phải là điều bạn muốn, hãy xem hoặc --explain-hostsIn thông tin kết nối và thoát In ra danh sách các máy chủ mà pt-table-sync sẽ kết nối với tất cả các tùy chọn kết nối khác nhau và thoát --float-chính xácloại. int Độ chính xác cho chuyển đổi số thành chuỗi pt-table-sync --execute h=host1,D=db,t=tbl h=host257 và pt-table-sync --execute h=host1,D=db,t=tbl h=host258. Làm cho các giá trị FLOAT và DOUBLE được làm tròn thành số chữ số được chỉ định sau dấu thập phân, với hàm ROUND() trong MySQL. Điều này có thể giúp tránh sự không khớp tổng kiểm tra do các biểu diễn dấu phẩy động khác nhau của cùng một giá trị trên các phiên bản và phần cứng MySQL khác nhau. Giá trị mặc định là không làm tròn số; . Ví dụ: nếu bạn chỉ định giá trị là 2, thì giá trị 1. 008 và 1. 009 sẽ được làm tròn thành 1. 01 và sẽ tổng kiểm tra bằng nhau--[no]foreign-key-checks vỡ nợ. Vâng Cho phép kiểm tra khóa ngoại ( pt-table-sync --execute h=host1,D=db,t=tbl h=host259) Chỉ định pt-table-sync --execute h=host1,D=db,t=tbl h=host217 sẽ pt-table-sync --execute h=host1,D=db,t=tbl h=host261--hàm số loại. chuỗi Hàm băm nào bạn muốn sử dụng cho tổng kiểm tra Mặc định là pt-table-sync --execute h=host1,D=db,t=tbl h=host262. Các lựa chọn tốt khác bao gồm pt-table-sync --execute h=host1,D=db,t=tbl h=host263 và pt-table-sync --execute h=host1,D=db,t=tbl h=host264. Nếu bạn đã cài đặt hàm pt-table-sync --execute h=host1,D=db,t=tbl h=host265 do người dùng định nghĩa, pt-table-sync sẽ phát hiện ra nó và thích sử dụng nó hơn, vì nó nhanh hơn nhiều so với hàm tích hợp sẵn. Bạn cũng có thể sử dụng MURMUR_HASH nếu bạn đã cài đặt chức năng do người dùng xác định đó. Cả hai thứ này đều được phân phối với Percona Server. Xem pt-table-checksum để biết thêm thông tin và điểm chuẩn--Cứu giúp Hiển thị trợ giúp và thoát --[no]hex-blobvỡ nợ. Vâng Các cột pt-table-sync --execute h=host1,D=db,t=tbl h=host266 pt-table-sync --execute h=host1,D=db,t=tbl h=host267, pt-table-sync --execute h=host1,D=db,t=tbl h=host268 và pt-table-sync --execute h=host1,D=db,t=tbl h=host269 Khi dữ liệu hàng từ nguồn được tìm nạp để tạo truy vấn để đồng bộ hóa dữ liệu (i. e. các truy vấn được nhìn thấy và được thực hiện bởi ), các cột nhị phân được gói trong HEX() để dữ liệu nhị phân không tạo ra câu lệnh SQL không hợp lệ. Bạn có thể tắt tùy chọn này nhưng có lẽ bạn không nên --chủ nhàhình thức ngắn. -h; . chuỗi Kết nối với máy chủ --ignore-columnsloại. Băm Bỏ qua danh sách tên cột được phân tách bằng dấu phẩy này khi so sánh Tùy chọn này khiến các cột không được so sánh. Tuy nhiên, nếu một hàng được xác định là khác nhau giữa các bảng, thì tất cả các cột trong hàng đó sẽ được đồng bộ hóa, bất kể. (Hiện tại không thể loại trừ các cột khỏi quá trình đồng bộ hóa, chỉ từ so sánh. ) --ignore-cơ sở dữ liệuloại. Băm Bỏ qua danh sách cơ sở dữ liệu được phân tách bằng dấu phẩy này (cơ sở dữ liệu hệ thống như information_schema và performance_schema được bỏ qua theo mặc định) --ignore-enginesloại. Băm; . LIÊN BANG,MRG_MyISAM Bỏ qua danh sách các công cụ lưu trữ được phân tách bằng dấu phẩy này --ignore-bảngloại. Băm Bỏ qua danh sách các bảng được phân tách bằng dấu phẩy này Tên bảng có thể đủ điều kiện với tên cơ sở dữ liệu --ignore-bảng-regexloại. chuỗi; . Lọc Bỏ qua các bảng có tên khớp với biểu thức chính quy Perl --[không]gợi ý chỉ mụcvỡ nợ. Vâng Thêm gợi ý FORCE/USE INDEX vào truy vấn đoạn và hàng Theo mặc định, pt-table-sync thêm gợi ý FORCE/USE INDEX cho mỗi câu lệnh SQL để buộc MySQL sử dụng chỉ mục được chọn bởi thuật toán đồng bộ hóa hoặc được chỉ định bởi. Đây thường là một điều tốt, nhưng trong một số ít trường hợp, chỉ mục có thể không phải là tốt nhất cho truy vấn, vì vậy bạn có thể loại bỏ gợi ý chỉ mục bằng cách chỉ định pt-table-sync --execute h=host1,D=db,t=tbl h=host273 và để MySQL chọn chỉ mục Điều này không ảnh hưởng đến các truy vấn được in bởi ; --Khóaloại. int Khóa bảng. 0=không, 1=mỗi chu kỳ đồng bộ hóa, 2=mỗi bảng hoặc 3=toàn cầu Điều này sử dụng pt-table-sync --execute h=host1,D=db,t=tbl h=host275. Điều này có thể giúp ngăn các bảng bị thay đổi trong khi bạn đang kiểm tra chúng. Các giá trị có thể như sau pt-table-sync --execute h=host1,D=db,t=tbl h=host29 Một nô lệ sao chép không bao giờ bị khóa nếu hoặc được chỉ định, vì theo lý thuyết, việc khóa bảng trên bản gốc sẽ ngăn mọi thay đổi diễn ra. (Bạn không thay đổi dữ liệu trên nô lệ của mình, phải không?) Nếu được cung cấp, chủ (nguồn) bị khóa và sau đó công cụ đợi nô lệ bắt kịp chủ trước khi tiếp tục Nếu pt-table-sync --execute h=host1,D=db,t=tbl h=host279 được chỉ định, thì pt-table-sync --execute h=host1,D=db,t=tbl h=host275 không được sử dụng. Thay vào đó, khóa và mở khóa được thực hiện bằng cách bắt đầu và thực hiện các giao dịch. Ngoại lệ là nếu là 3 Nếu pt-table-sync --execute h=host1,D=db,t=tbl h=host282 được chỉ định, thì pt-table-sync --execute h=host1,D=db,t=tbl h=host275 được sử dụng cho bất kỳ giá trị nào của. Thấy--lock-and-rename Khóa bảng nguồn và đích, đồng bộ hóa, sau đó hoán đổi tên. Điều này hữu ích dưới dạng BẢNG THAY ĐỔI ít chặn hơn, khi các bảng được đồng bộ hóa hợp lý với nhau (bạn có thể chọn thực hiện thông qua bất kỳ số phương tiện nào, bao gồm kết xuất và tải lại hoặc thậm chí một cái gì đó như trình lưu trữ pt). Nó yêu cầu chính xác hai DSN và giả định rằng chúng nằm trên cùng một máy chủ, do đó, nó không phải chờ sao chép hoặc tương tự. Bàn bị khóa với LOCK TABLES --mật khẩu mở khóahình thức ngắn. -P; . chuỗi Mật khẩu sử dụng khi kết nối. Nếu mật khẩu chứa dấu phẩy, chúng phải được thoát bằng dấu gạch chéo ngược. "thí dụ" --pidloại. chuỗi Tạo tệp PID đã cho. Công cụ sẽ không khởi động nếu tệp PID đã tồn tại và PID chứa trong đó khác với PID hiện tại. Tuy nhiên, nếu tệp PID tồn tại và PID chứa trong đó không còn chạy nữa, công cụ sẽ ghi đè lên tệp PID bằng PID hiện tại. Tệp PID sẽ tự động bị xóa khi công cụ thoát --Hải cảnghình thức ngắn. -P; . int Số cổng sử dụng để kết nối --inTruy vấn in sẽ giải quyết sự khác biệt Nếu bạn không tin tưởng pt-table-sync, hoặc chỉ muốn xem nó sẽ làm gì, thì đây là một cách tốt để đảm bảo an toàn. Các truy vấn này là SQL hợp lệ và bạn có thể tự chạy chúng nếu muốn đồng bộ các bảng theo cách thủ công --recursion-phương pháploại. mảng; . danh sách quy trình, máy chủ Phương pháp đệ quy ưa thích được sử dụng để tìm nô lệ phương pháp có thể là pt-table-sync --execute host1 host2 host30 Phương pháp danh sách quy trình được ưu tiên vì SHOW SLAVE HOSTS không đáng tin cậy. Tuy nhiên, phương thức hosts là bắt buộc nếu máy chủ sử dụng cổng không chuẩn (không phải 3306). Thông thường pt-table-sync thực hiện đúng và tìm thấy các nô lệ, nhưng bạn có thể đưa ra một phương thức ưa thích và nó sẽ được sử dụng trước. Nếu nó không tìm thấy bất kỳ nô lệ nào, các phương pháp khác sẽ được thử --thay thếViết tất cả các câu lệnh pt-table-sync --execute --replicate test.checksum \ --sync-to-master slave14 và pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl1 thành pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl4 Điều này được tự động bật khi cần khi có vi phạm chỉ mục duy nhất --sao chéploại. chuỗi Đồng bộ hóa các bảng được liệt kê là khác nhau trong bảng này Chỉ định rằng pt-table-sync sẽ kiểm tra bảng đã chỉ định để tìm dữ liệu khác. Bảng hoàn toàn giống với đối số cùng tên của pt-table-checksum. Nghĩa là, nó chứa các bản ghi về các bảng (và phạm vi giá trị) khác nhau giữa chính và phụ Đối với mỗi bảng và phạm vi giá trị thể hiện sự khác biệt giữa chính và phụ, pt-table-sync --execute h=host1,D=db,t=tbl h=host289 sẽ đồng bộ bảng đó, với mệnh đề pt-table-sync --execute h=host1,D=db,t=tbl h=host290 thích hợp, với chủ của nó Điều này tự động đặt thành 60 và khiến các thay đổi được thực hiện trên bản chính thay vì phụ Nếu được chỉ định, công cụ sẽ coi máy chủ bạn đã chỉ định là máy phụ và kết nối với máy chủ như bình thường để đồng bộ hóa Nếu không, nó sẽ cố gắng sử dụng pt-table-sync --execute h=host1,D=db,t=tbl h=host293 để tìm nô lệ của máy chủ mà bạn đã chỉ định. Nếu nó không thể tìm thấy bất kỳ nô lệ nào thông qua pt-table-sync --execute h=host1,D=db,t=tbl h=host293, nó sẽ kiểm tra pt-table-sync --execute h=host1,D=db,t=tbl h=host295 để thay thế. Bạn phải định cấu hình pt-table-sync --execute h=host1,D=db,t=tbl h=host296, pt-table-sync --execute h=host1,D=db,t=tbl h=host297 và các tùy chọn khác của từng nô lệ để điều này hoạt động bình thường. Sau khi tìm thấy các nô lệ, nó sẽ kiểm tra bảng được chỉ định trên mỗi nô lệ để tìm dữ liệu cần được đồng bộ hóa và đồng bộ hóa nó Công cụ kiểm tra bản sao bảng của chủ trước, giả sử rằng chủ cũng có khả năng là nô lệ. Bất kỳ bảng nào cho thấy sự khác biệt sẽ KHÔNG được đồng bộ hóa trên (các) nô lệ. Ví dụ: giả sử bản sao của bạn được thiết lập là A->B, B->C, B->D. Giả sử bạn sử dụng đối số này và chỉ định máy chủ B. Công cụ sẽ kiểm tra bản sao bảng của máy chủ B. Nếu có vẻ như dữ liệu của máy chủ B trong bảng pt-table-sync --execute h=host1,D=db,t=tbl h=host298 khác với bản sao của máy chủ A, thì công cụ sẽ không đồng bộ hóa bảng đó trên máy chủ C và D--slave-người dùng loại. chuỗi Đặt người dùng được sử dụng để kết nối với các nô lệ. Tham số này cho phép bạn có một người dùng khác với ít đặc quyền hơn trên các nô lệ nhưng người dùng đó phải tồn tại trên tất cả các nô lệ --slave-mật khẩuloại. chuỗi Đặt mật khẩu được sử dụng để kết nối với các nô lệ. Nó có thể được sử dụng với –slave-user và mật khẩu cho người dùng phải giống nhau trên tất cả các nô lệ --set-varsloại. Mảng Đặt các biến MySQL trong danh sách các cặp pt-table-sync --execute h=host1,D=db,t=tbl h=host299 được phân tách bằng dấu phẩy này Theo mặc định, bộ công cụ pt-table-sync --execute host1 host2 host31 Các biến được chỉ định trên dòng lệnh sẽ ghi đè các giá trị mặc định này. Ví dụ: chỉ định pt-table-sync --execute host1 host2 host300 sẽ ghi đè giá trị mặc định của pt-table-sync --execute host1 host2 host301 Công cụ in cảnh báo và tiếp tục nếu không thể đặt biến --ổ cắmhình thức ngắn. -S; . chuỗi Tập tin ổ cắm để sử dụng cho kết nối --sync-to-masterCoi DSN là nô lệ và đồng bộ hóa nó với chủ của nó Đối xử với máy chủ bạn đã chỉ định là nô lệ. Kiểm tra pt-table-sync --execute host1 host2 host302, kết nối với chủ của máy chủ và coi chủ là nguồn và nô lệ là đích. Nguyên nhân thay đổi được thực hiện trên master. Đặt thành 60 theo mặc định, đặt thành 1 theo mặc định và tắt theo mặc định. Xem thêm , thay đổi hành vi của tùy chọn này--những cái bàn hình thức ngắn. -t; . băm Chỉ đồng bộ hóa danh sách bảng được phân tách bằng dấu phẩy này Tên bảng có thể đủ điều kiện với tên cơ sở dữ liệu --timeout-okTiếp tục nếu thất bại Nếu bạn chỉ định và nô lệ không bắt kịp vị trí của chủ trước khi hết thời gian chờ, hành vi mặc định là hủy bỏ. Tùy chọn này làm cho công cụ tiếp tục hoạt động. Cảnh báo. nếu bạn đang cố gắng so sánh nhất quán giữa hai máy chủ, có thể bạn không muốn tiếp tục sau khi hết thời gian chờ --[không] giao dịchSử dụng giao dịch thay vì pt-table-sync --execute h=host1,D=db,t=tbl h=host275 Mức độ chi tiết của các giao dịch bắt đầu và thực hiện được kiểm soát bởi. Tính năng này được bật theo mặc định, nhưng vì bị tắt theo mặc định nên nó không có tác dụng Hầu hết các tùy chọn kích hoạt khóa cũng vô hiệu hóa giao dịch theo mặc định, vì vậy nếu bạn muốn sử dụng khóa giao dịch (thông qua pt-table-sync --execute host1 host2 host312 và pt-table-sync --execute host1 host2 host313, bạn phải chỉ định rõ ràng pt-table-sync --execute h=host1,D=db,t=tbl h=host279 Nếu bạn không chỉ định rõ ràng pt-table-sync --execute h=host1,D=db,t=tbl h=host279 pt-table-sync sẽ quyết định trên cơ sở mỗi bảng xem nên sử dụng giao dịch hay khóa bảng. Nó hiện đang sử dụng các giao dịch trên các bảng InnoDB và khóa bảng trên tất cả các bảng khác Nếu pt-table-sync --execute h=host1,D=db,t=tbl h=host282 được chỉ định, thì pt-table-sync sẽ hoàn toàn không sử dụng các giao dịch (ngay cả đối với các bảng InnoDB) và việc khóa được kiểm soát bởi Khi được bật, rõ ràng hoặc ngầm định, mức cô lập giao dịch được đặt pt-table-sync --execute host1 host2 host318 và các giao dịch được bắt đầu pt-table-sync --execute host1 host2 host319--trim pt-table-sync --execute host1 host2 host320 pt-table-sync --execute host1 host2 host321 cột ở chế độ pt-table-sync --execute host1 host2 host322 và pt-table-sync --execute host1 host2 host323. Trợ giúp khi so sánh MySQL 4. 1 đến >= 5. 0 Điều này hữu ích khi bạn không quan tâm đến sự khác biệt về dấu cách giữa các phiên bản MySQL khác nhau trong cách xử lý dấu cách của chúng. mysql 5. 0 trở về sau đều giữ lại khoảng trắng ở cuối trong pt-table-sync --execute host1 host2 host321, trong khi các phiên bản trước sẽ loại bỏ chúng--[no]unique-checks vỡ nợ. Vâng Cho phép kiểm tra khóa duy nhất ( pt-table-sync --execute host1 host2 host325) Chỉ định pt-table-sync --execute host1 host2 host326 sẽ pt-table-sync --execute host1 host2 host327 hình thức ngắn. -ư; . chuỗi Người dùng để đăng nhập nếu không phải là người dùng hiện tại --verbosehình thức ngắn. -v; . Vâng In kết quả của hoạt động đồng bộ hóa Xem “OUTPUT” để biết thêm chi tiết về đầu ra --phiên bảnHiển thị phiên bản và thoát --[no]kiểm tra phiên bảnvỡ nợ. Vâng Kiểm tra phiên bản mới nhất của Bộ công cụ Percona, MySQL và các chương trình khác Đây là tính năng "tự động kiểm tra các bản cập nhật" tiêu chuẩn, với hai tính năng bổ sung. Đầu tiên, công cụ kiểm tra phiên bản của chính nó và cả các phiên bản của phần mềm sau. hệ điều hành, Giám sát và quản lý Percona (PMM), MySQL, Perl, trình điều khiển MySQL cho Perl (DBD. mysql) và Bộ công cụ Percona. Thứ hai, nó kiểm tra và cảnh báo về các phiên bản có vấn đề đã biết. Ví dụ: MySQL5. 5. 25 có một lỗi nghiêm trọng và được phát hành lại thành 5. 5. 25a Một kết nối an toàn đến máy chủ cơ sở dữ liệu Kiểm tra phiên bản của Percona được thực hiện để thực hiện các kiểm tra này. Mỗi yêu cầu được máy chủ ghi lại, bao gồm số phiên bản phần mềm và ID duy nhất của hệ thống được kiểm tra. ID được tạo bởi tập lệnh cài đặt Bộ công cụ Percona hoặc khi lệnh gọi cơ sở dữ liệu Kiểm tra phiên bản được thực hiện lần đầu tiên Mọi cập nhật hoặc sự cố đã biết đều được in ra STDOUT trước khi công cụ xuất bình thường. Tính năng này sẽ không bao giờ can thiệp vào hoạt động bình thường của công cụ Để biết thêm thông tin, hãy truy cập https. //www. percona. com/doc/percona-toolkit/MỚI NHẤT/kiểm tra phiên bản. html --Chờ đãhình thức ngắn. -w; . thời gian Chờ đợi bao lâu để nô lệ đuổi kịp chủ nhân Làm cho chủ đợi nô lệ bắt kịp sao chép trước khi so sánh các bảng. Giá trị là số giây phải đợi trước khi hết thời gian (xem thêm ). Đặt thành 1 và 0 theo mặc định. Nếu bạn thấy một lỗi như sau, pt-table-sync --execute host1 host2 host32 Điều đó có nghĩa là đã hết thời gian chờ và bạn cần tăng thời gian chờ Giá trị mặc định của tùy chọn này bị ảnh hưởng bởi các tùy chọn khác. Để xem giá trị nào có hiệu lực, hãy chạy với Để tắt hoàn toàn chế độ chờ (ngoại trừ khóa), hãy chỉ định 0. Điều này hữu ích khi nô lệ bị chậm trên các bảng không được đồng bộ hóa --ở đâuloại. chuỗi Mệnh đề pt-table-sync --execute h=host1,D=db,t=tbl h=host290 để hạn chế đồng bộ hóa với một phần của bảng--[no]zero-chunk vỡ nợ. Vâng Thêm một đoạn cho các hàng có giá trị bằng không hoặc bằng không. Chỉ có tác dụng khi được chỉ định. Mục đích của đoạn 0 là để nắm bắt một số lượng lớn các giá trị 0 có thể làm mất cân bằng kích thước của đoạn đầu tiên. Ví dụ: nếu nhiều số âm được chèn vào một cột số nguyên không dấu khiến chúng được lưu dưới dạng số không, thì các giá trị bằng không này được ghi lại bởi đoạn số 0 thay vì đoạn đầu tiên và tất cả các giá trị khác không của nó TÙY CHỌN DSNCác tùy chọn DSN này được sử dụng để tạo DSN. Mỗi tùy chọn được đưa ra như pt-table-sync --execute host1 host2 host335. Các tùy chọn phân biệt chữ hoa chữ thường, vì vậy P và p không phải là cùng một tùy chọn. Không thể có khoảng trắng trước hoặc sau pt-table-sync --execute host1 host2 host336 và nếu giá trị chứa khoảng trắng thì giá trị đó phải được trích dẫn. Các tùy chọn DSN được phân tách bằng dấu phẩy. Xem trang chủ bộ công cụ percona để biết chi tiết đầy đủ
MÔI TRƯỜNGBiến môi trường pt-table-sync --execute host1 host2 host337 cho phép đầu ra gỡ lỗi chi tiết thành STDERR. Để bật gỡ lỗi và ghi tất cả đầu ra vào một tệp, hãy chạy công cụ như pt-table-sync --execute host1 host2 host33 Hãy cẩn thận. đầu ra gỡ lỗi rất lớn và có thể tạo ra vài megabyte đầu ra CHÚ ÝUsing YÊU CẦU HỆ THỐNGBạn cần Perl, DBI, DBD. mysql và một số gói cốt lõi phải được cài đặt trong bất kỳ phiên bản Perl mới hợp lý nào LỖIĐể biết danh sách các lỗi đã biết, hãy xem http. //www. percona. com/bugs/pt-table-sync Vui lòng báo cáo lỗi tại https. //jira. percona. com/dự án/PT. Bao gồm các thông tin sau trong báo cáo lỗi của bạn
Nếu có thể, hãy bao gồm đầu ra gỡ lỗi bằng cách chạy công cụ với pt-table-sync --execute host1 host2 host337; TẢI XUỐNGTruy cập http. //www. percona. com/software/percona-toolkit/ để tải xuống bản phát hành mới nhất của Bộ công cụ Percona. Hoặc, tải bản phát hành mới nhất từ dòng lệnh pt-table-sync --execute host1 host2 host34 Bạn cũng có thể nhận các công cụ riêng lẻ từ bản phát hành mới nhất pt-table-sync --execute host1 host2 host35 Thay thế pt-table-sync --execute host1 host2 host340 bằng tên của bất kỳ công cụ nào TÁC GIẢNam tước Schwartz SỰ NHÌN NHẬNCông việc của tôi một phần dựa trên công việc của Giuseppe Maxia trên cơ sở dữ liệu phân tán, http. //www. sysadminmag. com/articles/2004/0408/ và mã bắt nguồn từ bài viết đó. Có thêm lời giải thích và liên kết tới mã tại http. //www. các môn đệ. org/?node_id=381053 Một lập trình viên khác đã mở rộng công việc của Maxia hơn nữa. Fabien Coelho đã thay đổi và tổng quát hóa kỹ thuật của Maxia, giới thiệu tính đối xứng và tránh một số vấn đề có thể gây ra xung đột tổng kiểm tra quá thường xuyên. Công việc này đã phát triển thành pg_comparator, http. //www. coelho. mạng/pg_comparator/. Coelho cũng giải thích thêm về kỹ thuật này trong một bài báo có tiêu đề “So sánh từ xa các bảng cơ sở dữ liệu” (http. //cri. ensmp. fr/classement/doc/A-375. pdf) Tài liệu hiện có này chủ yếu đề cập đến cách tìm sự khác biệt giữa các bảng, chứ không phải cách giải quyết chúng sau khi tìm thấy. Tôi cần một công cụ không chỉ tìm thấy chúng một cách hiệu quả mà sau đó sẽ giải quyết chúng. Lần đầu tiên tôi bắt đầu nghĩ về cách cải thiện kỹ thuật hơn nữa với bài viết của mình http. //tinyurl. com/mysql-data-diff-algorithm, nơi tôi đã thảo luận về một số vấn đề với thuật toán “từ dưới lên” của Maxia/Coelho. Sau khi viết bài báo đó, tôi bắt đầu viết công cụ này. Tôi muốn thực sự triển khai thuật toán của họ với một số cải tiến để tôi chắc chắn rằng mình đã hiểu nó hoàn toàn. Tôi phát hiện ra rằng nó không như tôi nghĩ, và nó phức tạp hơn nhiều so với những gì tôi thấy lúc đầu. Fabien Coelho đã rất tử tế khi trả lời một số câu hỏi qua email Các phiên bản đầu tiên của công cụ này đã triển khai một phiên bản của thuật toán Coelho/Maxia mà tôi gọi là “từ dưới lên” và của riêng tôi, mà tôi gọi là “từ trên xuống”. ” Các thuật toán đó phức tạp hơn đáng kể so với các thuật toán hiện tại và tôi đã xóa chúng khỏi công cụ này và có thể bổ sung lại sau. Những cải tiến đối với thuật toán từ dưới lên là công việc ban đầu của tôi, cũng như thuật toán từ trên xuống. Các kỹ thuật để thực sự giải quyết sự khác biệt cũng là công việc của riêng tôi Một công cụ khác có thể đồng bộ hóa các bảng là SQLyog Job Agent từ webyog. Cảm ơn Rohit Nadhani, tác giả của SJA, về những cuộc trò chuyện về các kỹ thuật chung. Có so sánh pt-table-sync và SJA tại http. //tinyurl. com/maatkit-vs-sqlyog Cảm ơn những người và tổ chức sau đây đã giúp đỡ bằng nhiều cách Tập đoàn Rimm-Kaufman http. //www. rimmkaufman. com/, MySQL AB http. //www. mysql. com/, Blue Ridge InternetWorks http. //www. công trình gạch. com/, Percona http. //www. percona. com/, Fabien Coelho, Giuseppe Maxia và những người khác tại MySQL AB, Kristian Koehntopp (MySQL AB), Rohit Nadhani (WebYog), Các nhà sư hữu ích tại Perlmonks, Và những người khác quá nhiều để đề cập đến GIỚI THIỆU BỘ CÔNG CỤ PERCONACông cụ này là một phần của Bộ công cụ Percona, một tập hợp các công cụ dòng lệnh nâng cao dành cho MySQL do Percona phát triển. Bộ công cụ Percona được tách ra từ hai dự án vào tháng 6 năm 2011. Maatkit và Aspersa. Những dự án đó được tạo ra bởi Nam tước Schwartz và được phát triển chủ yếu bởi ông và Daniel Nichter. Truy cập http. //www. percona. com/software/ để tìm hiểu về phần mềm mã nguồn mở, miễn phí khác từ Percona BẢN QUYỀN, GIẤY PHÉP VÀ BẢO HÀNHChương trình này có bản quyền 2011-2021 Percona LLC và/hoặc các chi nhánh của nó, 2007-2011 Baron Schwartz CHƯƠNG TRÌNH NÀY ĐƯỢC CUNG CẤP “NGUYÊN TRẠNG” VÀ KHÔNG CÓ BẤT KỲ BẢO ĐẢM RÕ RÀNG HAY NGỤ Ý NÀO, BAO GỒM, KHÔNG GIỚI HẠN, CÁC BẢO ĐẢM NGỤ Ý VỀ KHẢ NĂNG BÁN ĐƯỢC VÀ SỰ PHÙ HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ Chương trình này là phần mềm miễn phí; . Trên UNIX và các hệ thống tương tự, bạn có thể cấp `man perlgpl' hoặc `man perlartistic' để đọc các giấy phép này Bạn đã nhận được một bản sao Giấy phép Công cộng GNU cùng với chương trình này; . , 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |