Đây là lệnh pt-online-schema-changep có thể được chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
pt-online-schema-change - ALTER bảng mà không cần khóa chúng.
SYNOPSIS
Cách sử dụng: pt-online-schema-change [OPTIONS] DSN
pt-online-schema-change thay đổi cấu trúc của bảng mà không chặn đọc hoặc ghi.
Chỉ định cơ sở dữ liệu và bảng trong DSN. Không sử dụng công cụ này trước khi đọc
tài liệu và kiểm tra các bản sao lưu của bạn một cách cẩn thận.
Thêm một cột vào sakila.actor:
pt-online-schema-change --alter "ADD COLUMN c1 INT" D = sakila, t = Actor
Thay đổi sakila.actor thành InnoDB, thực hiện hiệu quả BẢNG TỐI ƯU HÓA trong chế độ không chặn
thời trang vì nó đã là một bảng InnoDB:
pt-online-schema-change --alter "ENGINE = InnoDB" D = sakila, t = diễn viên
RỦI RO
Bộ công cụ Percona đã hoàn thiện, được chứng minh trong thế giới thực và được thử nghiệm tốt, nhưng tất cả cơ sở dữ liệu
các công cụ có thể gây rủi ro cho hệ thống và máy chủ cơ sở dữ liệu. Trước khi sử dụng công cụ này,
xin vui lòng:
· Đọc tài liệu của công cụ
· Xem lại "BUGS" đã biết của công cụ
· Kiểm tra công cụ trên một máy chủ không sản xuất
· Sao lưu máy chủ sản xuất của bạn và xác minh các bản sao lưu
MÔ TẢ
pt-online-schema-change mô phỏng cách mà MySQL thay đổi các bảng trong nội bộ, nhưng nó hoạt động
trên một bản sao của bảng mà bạn muốn thay đổi. Điều này có nghĩa là bảng gốc không
bị khóa và máy khách có thể tiếp tục đọc và thay đổi dữ liệu trong đó.
pt-online-schema-change hoạt động bằng cách tạo một bản sao trống của bảng để thay đổi, sửa đổi
nó như mong muốn, và sau đó sao chép các hàng từ bảng gốc vào bảng mới. Khi mà
sao chép hoàn tất, nó di chuyển khỏi bảng gốc và thay thế bằng bảng mới. Qua
mặc định, nó cũng giảm bảng gốc.
Quá trình sao chép dữ liệu được thực hiện trong các phần nhỏ dữ liệu, rất đa dạng để cố gắng
làm cho chúng thực thi trong một khoảng thời gian cụ thể (xem "--chunk-time"). Quá trình này rất
tương tự như cách các công cụ khác, chẳng hạn như pt-table-checksum, hoạt động. Bất kỳ sửa đổi nào đối với dữ liệu trong
các bảng gốc trong quá trình sao chép sẽ được phản ánh trong bảng mới, vì công cụ
tạo trình kích hoạt trên bảng gốc để cập nhật các hàng tương ứng trong bảng mới.
Việc sử dụng trình kích hoạt có nghĩa là công cụ sẽ không hoạt động nếu bất kỳ trình kích hoạt nào đã được xác định
trên bàn.
Khi công cụ hoàn tất việc sao chép dữ liệu vào bảng mới, nó sử dụng một "BẢNG RENAME" nguyên tử
hoạt động để đổi tên đồng thời bảng gốc và bảng mới. Sau khi hoàn tất,
công cụ này giảm bảng gốc.
Các khóa ngoại làm phức tạp hoạt động của công cụ và gây thêm rủi ro. Kỹ thuật
đổi tên nguyên tử bảng gốc và bảng mới không hoạt động khi các khóa ngoại tham chiếu
để bàn. Công cụ phải cập nhật các khóa ngoại để tham chiếu đến bảng mới sau lược đồ
thay đổi hoàn tất. Công cụ này hỗ trợ hai phương pháp để thực hiện điều này. Bạn có thể đọc
thêm về điều này trong tài liệu cho "--alter-ngoại-khóa-phương pháp".
Phím ngoại cũng gây ra một số tác dụng phụ. Bảng cuối cùng sẽ có cùng các khóa ngoại
và lập chỉ mục dưới dạng bảng gốc (trừ khi bạn chỉ định khác trong ALTER của mình
câu lệnh), nhưng tên của các đối tượng có thể được thay đổi một chút để tránh tên đối tượng
xung đột trong MySQL và InnoDB.
Để an toàn, công cụ không sửa đổi bảng trừ khi bạn chỉ định tùy chọn "--execute",
mà không được bật theo mặc định. Công cụ hỗ trợ nhiều biện pháp khác để ngăn chặn
tải không mong muốn hoặc các sự cố khác, bao gồm tự động phát hiện bản sao, kết nối với
và sử dụng các kiểm tra an toàn sau:
· Trong hầu hết các trường hợp, công cụ sẽ từ chối hoạt động trừ khi một KHÓA CHÍNH hoặc CHỈ SỐ DUY NHẤT là
hiện trong bảng. Xem "--alter" để biết chi tiết.
· Công cụ từ chối hoạt động nếu nó phát hiện thấy các bộ lọc sao chép. Nhìn thấy
"- [no] check-replication-filter" để biết chi tiết.
· Công cụ tạm dừng hoạt động sao chép dữ liệu nếu nó quan sát thấy bất kỳ bản sao nào bị trì hoãn
trong nhân rộng. Xem "--max-lag" để biết chi tiết.
· Công cụ tạm dừng hoặc ngừng hoạt động nếu phát hiện thấy quá nhiều tải trên máy chủ. Nhìn thấy
"- max-load" và "- tới hạn-tải" để biết chi tiết.
· Công cụ đặt "innodb_lock_wait_timeout = 1" và (cho MySQL 5.5 và mới hơn)
"lock_wait_timeout = 60" để nó có nhiều khả năng là nạn nhân của bất kỳ khóa nào
tranh chấp và ít có khả năng làm gián đoạn các giao dịch khác. Những giá trị này có thể là
đã thay đổi bằng cách chỉ định "--set-vars".
· Công cụ từ chối thay đổi bảng nếu các ràng buộc khóa ngoại tham chiếu đến nó, trừ khi
bạn chỉ định "--alter-ngoại-khóa-phương thức".
· Công cụ không thể thay đổi bảng MyISAM trên các nút "Percona XtraDB Cluster".
percona XtraDB cụm
pt-online-schema-change hoạt động với Percona XtraDB Cluster (PXC) 5.5.28-23.7 và mới hơn, nhưng
có hai hạn chế: chỉ có thể thay đổi bảng InnoDB và "wsrep_OSU_method" phải
được đặt thành "TOI" (hoàn toàn cách ly thứ tự). Công cụ thoát ra với một lỗi nếu máy chủ là
nút cụm và bảng là MyISAM hoặc đang được chuyển đổi thành MyISAM ("ENGINE = MyISAM") hoặc
nếu "wsrep_OSU_method" không phải là "TOI". Không có cách nào để vô hiệu hóa các kiểm tra này.
OUTPUT
Công cụ in thông tin về các hoạt động của nó lên STDOUT để bạn có thể xem nó là gì
đang làm. Trong giai đoạn sao chép dữ liệu, nó in các báo cáo "--progress" tới STDERR. Bạn có thể làm được
thông tin bổ sung bằng cách chỉ định "--print".
Nếu "--st Statistics" được chỉ định, một báo cáo về số lượng sự kiện nội bộ khác nhau sẽ được in tại
phần cuối, như:
# Số sự kiện
# ====== =====
# CHÈN 1
LỰA CHỌN
"--dry-run" và "--execute" 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à cách sử dụng
thông tin để biết chi tiết.
--thay đổi
loại: chuỗi
Sửa đổi giản đồ, không có từ khóa ALTER TABLE. Bạn có thể thực hiện nhiều
sửa đổi đối với bảng bằng cách chỉ định chúng bằng dấu phẩy. Vui lòng tham khảo MySQL
hướng dẫn sử dụng cho cú pháp của ALTER TABLE.
Các giới hạn sau được áp dụng, nếu cố gắng, sẽ khiến công cụ không thành công
những cách không thể đoán trước:
· Trong hầu hết các trường hợp, KHÓA CHÍNH hoặc CHỈ SỐ DUY NHẤT cần phải có trong
bàn. Điều này là cần thiết vì công cụ tạo ra một trình kích hoạt XÓA để giữ
bảng mới được cập nhật trong khi quá trình đang chạy.
Một ngoại lệ đáng chú ý là khi KHÓA CHÍNH hoặc CHỈ SỐ DUY NHẤT được tạo từ
hiện tại cột như một phần của mệnh đề ALTER; trong trường hợp đó nó sẽ sử dụng những
(các) cột cho trình kích hoạt XÓA.
· Mệnh đề "RENAME" không thể được sử dụng để đổi tên bảng.
· Không thể đổi tên các cột bằng cách thả và thêm lại bằng tên mới. Công cụ
sẽ không sao chép dữ liệu của cột gốc sang cột mới.
· Nếu bạn thêm một cột mà không có giá trị mặc định và làm cho nó KHÔNG ĐẦY ĐỦ, công cụ sẽ
thất bại, vì nó sẽ không cố gắng đoán một giá trị mặc định cho bạn; Bạn phải chỉ định
mặc định.
· "DROP FOREIGN KEY binding_name" yêu cầu chỉ định "_constraint_name" thay vì
hơn so với "tên_người_kết_thức" thực. Do hạn chế trong MySQL, pt-online-schema-
thay đổi thêm dấu gạch dưới ở đầu vào tên ràng buộc khóa ngoại khi tạo
bảng mới. Ví dụ, để loại bỏ ràng buộc này:
CONSTRAINT `fk_foo` NGOẠI KHÓA (` foo_id`) TÀI LIỆU THAM KHẢO `bar` (` foo_id`)
Bạn phải chỉ định "--alter" DROP NGOẠI KHÓA _fk_foo "".
· Công cụ không sử dụng "LOCK IN SHARE MODE" với MySQL 5.0 vì nó có thể gây ra
lỗi nô lệ phá vỡ sao chép:
Truy vấn gây ra các lỗi khác nhau trên master và slave. Lỗi trên trang cái:
'Bế tắc được tìm thấy khi cố gắng mở khóa; thử khởi động lại giao dịch '(1213),
Lỗi trên nô lệ: 'không có lỗi' (0). Cơ sở dữ liệu mặc định: 'pt_osc'.
Truy vấn: 'CHÈN VÀO pt_osc.t (id, c) VALUES (' 730 ',' hàng mới ')'
Lỗi xảy ra khi chuyển đổi bảng MyISAM thành InnoDB vì MyISAM không phải
giao dịch nhưng InnoDB là giao dịch. MySQL 5.1 và mới hơn xử lý trường hợp này
chính xác, nhưng thử nghiệm tái tạo lỗi 5% thời gian với MySQL 5.0.
Đây là một lỗi MySQL, tương tự nhưhttp://bugs.mysql.com/bug.php? id = 45694>, nhưng
không có bản sửa lỗi hoặc cách giải quyết nào trong MySQL 5.0. Không có "KHÓA CHẾ ĐỘ CHIA SẺ", các bài kiểm tra
vượt qua 100% thời gian, vì vậy nguy cơ mất dữ liệu hoặc phá vỡ bản sao sẽ là
không đáng kể
Be chắc chắn đến xác minh các người mới bàn if sử dụng MySQL 5.0 và chuyển đổi từ MyISAM đến
InnoDB!
--alter-ngoại-khóa-phương thức
loại: chuỗi
Cách sửa đổi các khóa ngoại để chúng tham chiếu đến bảng mới. Các khóa ngoại
tham chiếu bảng được thay đổi phải được xử lý đặc biệt để đảm bảo rằng chúng
tiếp tục tham khảo bảng chính xác. Khi công cụ đổi tên bảng gốc thành
hãy để cái mới vào vị trí của nó, các khóa ngoại "theo" bảng đã đổi tên và phải
được thay đổi để tham chiếu bảng mới thay thế.
Công cụ này hỗ trợ hai kỹ thuật để đạt được điều này. Nó tự động tìm thấy "con
bảng "tham chiếu đến bảng được thay đổi.
tự động
Tự động xác định phương pháp nào là tốt nhất. Công cụ sử dụng "Build_constraints"
nếu có thể (xem mô tả của phương pháp đó để biết chi tiết), và nếu không, thì
sử dụng "drop_swap".
Build_constraints
Phương pháp này sử dụng "ALTER TABLE" để loại bỏ và thêm lại các ràng buộc khóa ngoại
tham chiếu bảng mới. Đây là kỹ thuật được ưu tiên, trừ khi một hoặc nhiều
bảng "con" quá lớn nên "ALTER" sẽ mất quá nhiều thời gian. Công cụ
xác định điều đó bằng cách so sánh số hàng trong bảng con với tỷ lệ ở
mà công cụ có thể sao chép các hàng từ bảng cũ sang bảng mới. Nếu
công cụ ước tính rằng bảng con có thể được thay đổi trong thời gian ngắn hơn
"--chunk-time", thì nó sẽ sử dụng kỹ thuật này. Với mục đích ước tính
thời gian cần thiết để thay đổi bảng con, công cụ nhân tốc độ sao chép hàng
bởi "--chunk-size-limit", vì "ALTER TABLE" của MySQL thường nhanh hơn nhiều
hơn quá trình sao chép hàng bên ngoài.
Do một hạn chế trong MySQL, các khóa ngoại sẽ không có cùng tên sau
TUYỆT VỜI rằng họ đã làm trước đó. Công cụ phải đổi tên khóa ngoại khi nó
định nghĩa lại nó, thêm dấu gạch dưới ở đầu vào tên. Trong một số trường hợp, MySQL
cũng tự động đổi tên các chỉ mục cần thiết cho khóa ngoại.
thả_swap
Tắt kiểm tra khóa ngoại (FOREIGN_KEY_CHECKS = 0), sau đó thả bảng gốc
trước khi đổi tên bảng mới vào vị trí của nó. Điều này khác với bình thường
phương pháp hoán đổi bảng cũ và bảng mới, sử dụng "RENAME" nguyên tử
không thể phát hiện đối với các ứng dụng khách.
Phương pháp này nhanh hơn và không gây tắc nghẽn, nhưng nó rủi ro hơn vì hai lý do.
Đầu tiên, trong một khoảng thời gian ngắn giữa việc bỏ bảng gốc và đổi tên
bảng tạm thời, bảng cần thay đổi đơn giản là không tồn tại và các truy vấn
chống lại nó sẽ dẫn đến một lỗi. Thứ hai, nếu có lỗi và mới
Bảng không thể được đổi tên thành vị trí của bảng cũ, khi đó đã quá muộn để
hủy bỏ, vì bảng cũ đã biến mất vĩnh viễn.
Phương thức này buộc "--no-swap-table" và "--no-drop-old-table".
không ai
Phương pháp này giống như "drop_swap" mà không có "swap". Bất kỳ khóa ngoại nào
đã tham chiếu đến bảng gốc bây giờ sẽ tham chiếu đến một bảng không tồn tại. Điều này sẽ
thường gây ra các vi phạm khóa ngoại có thể nhìn thấy trong "SHOW ENGINE INNODB
STATUS ", tương tự như sau:
Đang cố gắng thêm vào chỉ mục `idx_fk_staff_id` tuple:
DATA TUPLE: 2 trường;
0: len 1; hệ số 05; Tăng dần ;;
1: len 4; hệ số 80000001; Tăng dần ;;
Nhưng bảng mẹ `sakila`.`staff_old`
hoặc tệp .ibd của nó hiện không tồn tại!
Điều này là do bảng gốc (trong trường hợp này là sakila.staff) đã được đổi tên thành
sakila.staff_old và sau đó giảm xuống. Phương pháp xử lý các ràng buộc khóa ngoại này
được cung cấp để người quản trị cơ sở dữ liệu có thể tắt tính năng tích hợp của công cụ
chức năng nếu muốn.
- [không] phân tích trước khi hoán đổi
mặc định: có
Thực thi BẢNG PHÂN TÍCH trên bảng mới trước khi hoán đổi với bảng cũ. Theo mặc định,
điều này chỉ xảy ra khi chạy MySQL 5.6 trở lên và "innodb_stats_persists" là
đã được kích hoạt. Chỉ định tùy chọn một cách rõ ràng để bật hoặc tắt nó bất kể MySQL
phiên bản và "innodb_stats_persists".
Điều này đã tránh được một vấn đề nghiêm trọng có thể xảy ra liên quan đến số liệu thống kê của trình tối ưu hóa InnoDB.
Nếu bảng đang được cảnh báo đang bận và công cụ hoàn thành nhanh chóng, bảng mới sẽ
không có thống kê trình tối ưu hóa sau khi được hoán đổi. Điều này có thể gây ra nhanh chóng, sử dụng chỉ mục
các truy vấn để thực hiện quét toàn bộ bảng cho đến khi số liệu thống kê của trình tối ưu hóa được cập nhật (thường là sau
10 giây). Nếu bàn lớn và máy chủ rất bận, điều này có thể gây ra sự cố.
--hỏi-vượt qua
Nhắc nhập mật khẩu khi kết nối với MySQL.
--bộ ký tự
dạng rút gọn: -A; loại: chuỗi
Bộ ký tự mặc định. Nếu giá trị là utf8, hãy đặt mã bin của Perl trên STDOUT thành utf8,
chuyển tùy chọn mysql_enable_utf8 tới DBD :: mysql và chạy SET NAMES UTF8 sau
kết nối với MySQL. Bất kỳ giá trị nào khác đặt mã 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.
- [không] kiểm tra thay đổi
mặc định: có
Phân tích cú pháp "--alter" được chỉ định và cố gắng cảnh báo về hành vi có thể xảy ra ngoài ý muốn.
Hiện tại, nó kiểm tra:
Đổi tên cột
Trong các phiên bản trước của công cụ này, đổi tên cột bằng "CHANGE COLUMN name
new_name "sẽ dẫn đến dữ liệu của cột đó bị mất. Công cụ hiện phân tích cú pháp
câu lệnh thay đổi và cố gắng nắm bắt những trường hợp này, vì vậy các cột được đổi tên phải có
dữ liệu giống như bản gốc. Tuy nhiên, mã thực hiện điều này không phải là mã đầy đủ-
đã làm hỏng trình phân tích cú pháp SQL, vì vậy trước tiên bạn nên chạy công cụ với "--dry-run" và "--print"
và xác minh rằng nó phát hiện các cột được đổi tên một cách chính xác.
DROP KEY CHÍNH
Nếu "--alter" chứa "DROP PRIMARY KEY" (phân biệt chữ hoa chữ thường và dấu cách), một cảnh báo
được in và công cụ thoát trừ khi "--dry-run" được chỉ định. Thay đổi
khóa chính có thể nguy hiểm, nhưng công cụ có thể xử lý nó. Các trình kích hoạt của công cụ,
đặc biệt là trình kích hoạt XÓA, bị ảnh hưởng nhiều nhất bởi việc thay đổi khóa chính
vì công cụ thích sử dụng khóa chính cho các trình kích hoạt của nó. Bạn nên
trước tiên hãy chạy công cụ với "--dry-run" và "--print" và xác minh rằng các trình kích hoạt là
chính xác.
- khoảng thời gian kiểm tra
loại: thời gian; mặc định: 1
Thời gian ngủ giữa các lần kiểm tra "--max-lag".
- [không] kế hoạch kiểm tra
mặc định: có
Kiểm tra các kế hoạch thực hiện truy vấn để đảm bảo an toàn. Theo mặc định, tùy chọn này làm cho công cụ chạy
GIẢI THÍCH trước khi chạy các truy vấn nhằm truy cập một lượng nhỏ dữ liệu, nhưng
có thể truy cập nhiều hàng nếu MySQL chọn một kế hoạch thực thi không tốt. Chúng bao gồm
truy vấn để xác định ranh giới phân đoạn và chính các truy vấn phân đoạn. Nếu nó xuất hiện
rằng MySQL sẽ sử dụng một kế hoạch thực thi truy vấn kém, công cụ sẽ bỏ qua phần
bảng.
Công cụ này sử dụng một số phương pháp heuristics để xác định xem liệu một kế hoạch thực thi có tệ hay không. Các
đầu tiên là liệu EXPLAIN có báo cáo rằng MySQL dự định sử dụng chỉ mục mong muốn để truy cập hay không
các hàng. Nếu MySQL chọn một chỉ mục khác, công cụ sẽ coi truy vấn không an toàn.
Công cụ này cũng kiểm tra lượng chỉ mục MySQL báo cáo rằng nó sẽ sử dụng cho
truy vấn. Đầu ra EXPLAIN hiển thị điều này trong cột key_len. Công cụ ghi nhớ
key_len lớn nhất được nhìn thấy và bỏ qua các phần mà MySQL báo cáo rằng nó sẽ sử dụng
tiền tố của chỉ mục. Heuristic này có thể được hiểu là các phần bỏ qua có
kế hoạch thực hiện tệ hơn các phần khác.
Công cụ in cảnh báo lần đầu tiên một đoạn bị bỏ qua do thực thi không tốt
kế hoạch trong mỗi bảng. Các phần tiếp theo được bỏ qua một cách âm thầm, mặc dù bạn có thể thấy
số lượng các phần bị bỏ qua trong cột SKIPPED trong đầu ra của công cụ.
Tùy chọn này thêm một số công việc thiết lập cho mỗi bảng và phân đoạn. Mặc dù công việc không
xâm nhập đối với MySQL, nó dẫn đến nhiều chuyến đi vòng đến máy chủ hơn, tiêu tốn
thời gian. Tạo các khối quá nhỏ sẽ khiến chi phí trở nên tương đối lớn hơn. Nó
do đó chúng tôi khuyến nghị rằng bạn không nên tạo các khối quá nhỏ, vì công cụ có thể mất
một thời gian rất dài để hoàn thành nếu bạn làm.
- [không] kiểm tra-sao chép-bộ lọc
mặc định: có
Hủy bỏ nếu có bất kỳ bộ lọc sao chép nào được đặt trên bất kỳ máy chủ nào. Công cụ tìm kiếm máy chủ
các tùy chọn lọc sao chép, chẳng hạn như binlog_ignore_db và replicate_do_db. Nếu nó
tìm thấy bất kỳ bộ lọc nào như vậy, nó sẽ hủy bỏ do lỗi.
Nếu các bản sao được định cấu hình với bất kỳ tùy chọn lọc nào, bạn nên cẩn thận không
để sửa đổi bất kỳ cơ sở dữ liệu hoặc bảng nào tồn tại trên bản chính chứ không phải bản sao,
bởi vì nó có thể gây ra sự sao chép không thành công. Để biết thêm thông tin về nhân rộng
quy tắc, hãy xemhttp://dev.mysql.com/doc/en/replication-rules.html>.
--check-nô lệ-lag
loại: chuỗi
Tạm dừng sao chép dữ liệu cho đến khi độ trễ của bản sao này nhỏ hơn "--max-lag". Giá trị là một
DSN kế thừa các thuộc tính từ các tùy chọn kết nối ("--port", "--user",
Vân vân.). Tùy chọn này ghi đè hành vi bình thường của việc tìm kiếm và liên tục
giám sát độ trễ sao chép trên TẤT CẢ các bản sao được kết nối. Nếu bạn không muốn giám sát
TẤT CẢ các bản sao, nhưng bạn muốn nhiều hơn chỉ một bản sao được giám sát, thì hãy sử dụng
Tùy chọn DSN cho tùy chọn "--recursion-method" thay vì tùy chọn này.
--chunk-index
loại: chuỗi
Ưu tiên chỉ số này cho các bảng phân khúc. Theo mặc định, công cụ này chọn nhiều nhất
chỉ số thích hợp để phân khúc. Tùy chọn này cho phép bạn chỉ định chỉ mục mà bạn
thích hơn. Nếu chỉ mục không tồn tại, thì công cụ sẽ trở lại mặc định của nó
hành vi chọn một chỉ mục. Công cụ này thêm chỉ mục vào các câu lệnh SQL trong một
Mệnh đề "FORCE INDEX". Hãy cẩn thận khi sử dụng tùy chọn này; một sự lựa chọn chỉ mục kém có thể
gây ra hiệu suất xấu.
--chunk-index-cột
kiểu: int
Chỉ sử dụng nhiều cột ngoài cùng bên trái này của "--chunk-index". Điều này chỉ hoạt động cho
chỉ mục phức hợp và hữu ích trong trường hợp có lỗi trong trình tối ưu hóa truy vấn MySQL
(planner) khiến nó quét một loạt các hàng thay vì sử dụng chỉ mục để định vị
điểm bắt đầu và điểm kết thúc một cách chính xác. Sự cố này đôi khi xảy ra trên các chỉ mục có
nhiều cột, chẳng hạn như 4 hoặc nhiều hơn. Nếu điều này xảy ra, công cụ có thể in cảnh báo
liên quan đến tùy chọn "- [không] kế hoạch kiểm tra". Hướng dẫn công cụ chỉ sử dụng công cụ đầu tiên
N cột của chỉ mục là một giải pháp thay thế cho lỗi trong một số trường hợp.
--kích thước chunk
Loại kích thước; mặc định: 1000
Số hàng để chọn cho mỗi đoạn được sao chép. Các hậu tố được phép là k, M, G.
Tùy chọn này có thể ghi đè hành vi mặc định, đó là điều chỉnh kích thước chunk
động để cố gắng làm cho các phần chạy chính xác trong giây "--chunk-time". Khi này
tùy chọn không được đặt rõ ràng, giá trị mặc định của nó được sử dụng làm điểm bắt đầu, nhưng sau
điều đó, công cụ bỏ qua giá trị của tùy chọn này. Nếu bạn đặt tùy chọn này một cách rõ ràng,
tuy nhiên, sau đó nó vô hiệu hóa hành vi điều chỉnh động và cố gắng tạo ra tất cả các phần
chính xác số hàng được chỉ định.
Có một điều tinh tế: nếu chỉ số chunk không phải là duy nhất, thì có thể là chunks
sẽ lớn hơn mong muốn. Ví dụ: nếu một bảng được phân chia bởi một chỉ mục
chứa 10,000 giá trị đã cho, không có cách nào để viết mệnh đề WHERE phù hợp
chỉ 1,000 trong số các giá trị và đoạn đó sẽ lớn ít nhất 10,000 hàng. Như một
chunk có thể sẽ bị bỏ qua vì "--chunk-size-limit".
--chunk-kích thước-giới hạn
loại: float; mặc định: 4.0
Không sao chép các đoạn này lớn hơn nhiều so với kích thước khối mong muốn.
Khi một bảng không có chỉ mục duy nhất, kích thước phân đoạn có thể không chính xác. Tùy chọn này
chỉ định giới hạn tối đa có thể chấp nhận được đối với độ không chính xác. Công cụ sử dụng đến
ước tính có bao nhiêu hàng trong đoạn. Nếu ước tính đó vượt quá đoạn mong muốn
kích thước nhân với giới hạn, sau đó công cụ bỏ qua đoạn.
Giá trị tối thiểu cho tùy chọn này là 1, có nghĩa là không có đoạn nào có thể lớn hơn
"--chunk-size". Bạn có thể không muốn chỉ định 1, bởi vì các hàng được báo cáo bởi
GIẢI THÍCH là các ước tính, có thể khác với số hàng thực trong
khúc gỗ. Bạn có thể tắt tính năng kiểm tra phân đoạn quá khổ bằng cách chỉ định giá trị 0.
Công cụ cũng sử dụng tùy chọn này để xác định cách xử lý các khóa ngoại tham chiếu
bảng sẽ được thay đổi. Xem "--alter-ngoại-khóa-phương pháp" để biết chi tiết.
--chunk-thời gian
loại: float; mặc định: 0.5
Điều chỉnh động kích thước phân đoạn để mỗi truy vấn sao chép dữ liệu mất nhiều thời gian để thực thi.
Công cụ theo dõi tốc độ sao chép (hàng trên giây) và điều chỉnh kích thước phân đoạn sau mỗi
truy vấn sao chép dữ liệu, để truy vấn tiếp theo mất khoảng thời gian này (tính bằng giây) để
hành hình. Nó giữ mức trung bình động giảm dần theo cấp số nhân của các truy vấn mỗi giây, vì vậy
rằng nếu hiệu suất của máy chủ thay đổi do những thay đổi về tải của máy chủ, thì công cụ
thích ứng nhanh chóng.
Nếu tùy chọn này được đặt thành XNUMX, kích thước phân đoạn không tự động điều chỉnh, vì vậy thời gian truy vấn sẽ
khác nhau, nhưng kích thước đoạn truy vấn sẽ không. Một cách khác để làm điều tương tự là chỉ định
giá trị cho "--chunk-size" một cách rõ ràng, thay vì để nó ở giá trị mặc định.
--config
kiểu: 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; nếu được chỉ định, đây phải là lần đầu tiên
tùy chọn trên dòng lệnh.
- tải trọng tới hạn
kiểu: Mảng; mặc định: Threads_running = 50
Kiểm tra HIỂN THỊ TRẠNG THÁI TOÀN CẦU sau mỗi đoạn và hủy bỏ nếu tải quá cao. Các
tùy chọn chấp nhận danh sách các biến và ngưỡng trạng thái MySQL được phân tách bằng dấu phẩy. Một
tùy chọn "= MAX_VALUE" (hoặc ": MAX_VALUE") có thể theo sau từng biến. Nếu không được đưa ra,
công cụ xác định ngưỡng bằng cách kiểm tra giá trị hiện tại khi khởi động và nhân đôi nó.
Xem "- max-load" để biết thêm chi tiết. Các tùy chọn này hoạt động tương tự, ngoại trừ điều này
tùy chọn sẽ hủy bỏ hoạt động của công cụ thay vì tạm dừng nó và giá trị mặc định là
được tính theo cách khác nếu bạn không chỉ định ngưỡng. Lý do cho tùy chọn này là
kiểm tra an toàn trong trường hợp trình kích hoạt trên bảng gốc thêm quá nhiều tải vào máy chủ
rằng nó gây ra thời gian chết. Có lẽ không có giá trị nào của Threads_running là
sai đối với mọi máy chủ, nhưng mặc định là 50 dường như là cao không thể chấp nhận được đối với
hầu hết các máy chủ, cho biết rằng hoạt động phải được hủy bỏ ngay lập tức.
- cơ sở dữ liệu
dạng rút gọn: -D; loại: chuỗi
Kết nối với cơ sở dữ liệu này.
--công cụ mặc định
Xóa "ENGINE" khỏi bảng mới.
Theo mặc định, bảng mới được tạo với các tùy chọn bảng giống như bảng gốc,
vì vậy nếu bảng gốc sử dụng InnoDB, thì bảng mới sẽ sử dụng InnoDB. Chắc chắn
các trường hợp liên quan đến sao chép, điều này có thể gây ra những thay đổi ngoài ý muốn trên các bản sao sử dụng
động cơ khác nhau cho cùng một bảng. Việc chỉ định tùy chọn này khiến bảng mới
được tạo bằng engine mặc định của hệ thống.
--defaults-file
dạng rút gọn: -F; loại: 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.
- [no] drop-new-table
mặc định: có
Bỏ bảng mới nếu sao chép bảng gốc không thành công.
Việc chỉ định "--no-drop-new-table" và "--no-swap-table" sẽ tạo ra bản sao mới, đã thay đổi
của bảng mà không sửa đổi bảng gốc. Xem "--new-table-name".
--no-drop-new-table không hoạt động với "thay đổi-ngoại-khóa-method drop_swap".
- [no] drop-old-table
mặc định: có
Bỏ bảng gốc sau khi đổi tên. Sau khi bảng gốc đã được
đã đổi tên thành công để bảng mới vào vị trí của nó và nếu không có lỗi,
công cụ này giảm bảng gốc theo mặc định. Nếu có bất kỳ lỗi nào, công cụ để lại
bảng gốc tại chỗ.
Nếu "--no-swap-table" được chỉ định, thì sẽ không có bảng cũ nào bị loại bỏ.
- [không] trình kích hoạt thả
mặc định: có
Thả kích hoạt trên bàn cũ. "--no-drop-trigger" lực lượng "--no-drop-old-table".
- chạy thử
Tạo và thay đổi bảng mới, nhưng không tạo trình kích hoạt, sao chép dữ liệu hoặc thay thế
bảng gốc.
--hành hình
Cho biết rằng bạn đã đọc tài liệu và muốn thay đổi bảng. Bạn phải
chỉ định tùy chọn này để thay đổi bảng. Nếu bạn không, thì công cụ sẽ chỉ thực hiện
một số kiểm tra an toàn và thoát ra. Điều này giúp đảm bảo rằng bạn đã đọc tài liệu
và hiểu cách sử dụng công cụ này. Nếu bạn chưa đọc tài liệu, thì hãy
không chỉ định tùy chọn này.
--lực lượng
Tùy chọn này bỏ qua xác nhận trong trường hợp sử dụng phương pháp thay đổi khóa ngoại-khóa = không có,
mà có thể phá vỡ các ràng buộc khóa ngoại.
--Cứu giúp
Hiển thị trợ giúp và thoát.
--tổ chức
dạng rút gọn: -h; loại: chuỗi
Kết nối với máy chủ.
--max-flow-ctl
loại: float
Hơi giống với --max-lag nhưng đối với các cụm PXC. Kiểm tra cụm thời gian trung bình đã sử dụng
tạm dừng để Kiểm soát luồng và tạm dừng công cụ nếu nó vượt quá tỷ lệ phần trăm được chỉ định
trong tùy chọn. Giá trị 0 sẽ làm cho công cụ tạm dừng khi * bất kỳ * Điều khiển luồng
hoạt động được phát hiện. Mặc định là không có kiểm tra Kiểm soát luồng. Tùy chọn này có sẵn
dành cho phiên bản PXC 5.6 trở lên.
- max-lag
loại: thời gian; mặc định: 1 giây
Tạm dừng sao chép dữ liệu cho đến khi độ trễ của tất cả các bản sao nhỏ hơn giá trị này. Sau mỗi dữ liệu-
sao chép truy vấn (từng đoạn), công cụ xem xét độ trễ sao chép của tất cả các bản sao để
mà nó kết nối, sử dụng Seconds_Behind_Master. Nếu bất kỳ bản sao nào bị trễ hơn
giá trị của tùy chọn này, sau đó công cụ sẽ ở chế độ ngủ trong "--khoảng thời gian" giây,
sau đó kiểm tra lại tất cả các bản sao. Nếu bạn chỉ định "--check-slave-lag", thì công cụ chỉ
kiểm tra máy chủ đó xem có bị lag, không phải tất cả các máy chủ. Nếu bạn muốn kiểm soát chính xác
máy chủ mà công cụ giám sát, sử dụng giá trị DSN thành "--recursion-method".
Công cụ chờ đợi mãi mãi cho các bản sao ngừng tụt hậu. Nếu bất kỳ bản sao nào bị dừng,
công cụ đợi mãi mãi cho đến khi bản sao được bắt đầu. Việc sao chép dữ liệu tiếp tục khi tất cả
bản sao đang chạy và không bị trễ quá nhiều.
Công cụ in báo cáo tiến độ trong khi chờ đợi. Nếu một bản sao bị dừng, nó sẽ in
báo cáo tiến độ ngay lập tức, sau đó lặp lại ở mỗi khoảng thời gian báo cáo tiến độ.
- tải tối đa
kiểu: Mảng; mặc định: Threads_running = 25
Kiểm tra HIỂN THỊ TRẠNG THÁI TOÀN CẦU sau mỗi đoạn và tạm dừng nếu có bất kỳ biến trạng thái nào
cao hơn ngưỡng của họ. Tùy chọn chấp nhận danh sách MySQL được phân tách bằng dấu phẩy
các biến trạng thái. Tùy chọn "= MAX_VALUE" (hoặc ": MAX_VALUE") có thể theo sau mỗi
Biến đổi. Nếu không được đưa ra, công cụ xác định ngưỡng bằng cách kiểm tra dòng điện
giá trị và tăng nó lên 20%.
Ví dụ: nếu bạn muốn công cụ tạm dừng khi Threads_connected quá cao, bạn
có thể chỉ định "Threads_connected" và công cụ sẽ kiểm tra giá trị hiện tại khi nó
bắt đầu hoạt động và thêm 20% vào giá trị đó. Nếu giá trị hiện tại là 100, thì công cụ
sẽ tạm dừng khi Threads_connected vượt quá 120 và tiếp tục hoạt động khi dưới 120
lần nữa. Nếu bạn muốn chỉ định một ngưỡng rõ ràng, chẳng hạn như 110, bạn có thể sử dụng
"Threads_connected: 110" hoặc "Threads_connected = 110".
Mục đích của tùy chọn này là để ngăn công cụ thêm quá nhiều tải vào
người phục vụ. Nếu các truy vấn sao chép dữ liệu là xâm nhập hoặc nếu chúng gây ra các đợt chờ khóa, thì
các truy vấn khác trên máy chủ sẽ có xu hướng chặn và xếp hàng. Điều này thường sẽ gây ra
Threads_running để tăng và công cụ có thể phát hiện điều đó bằng cách chạy SHOW GLOBAL
TRẠNG THÁI ngay sau khi mỗi truy vấn kết thúc. Nếu bạn chỉ định một ngưỡng cho điều này
biến, sau đó bạn có thể hướng dẫn công cụ đợi cho đến khi các truy vấn chạy bình thường
lần nữa. Tuy nhiên, điều này sẽ không ngăn cản việc xếp hàng; nó sẽ chỉ cho máy chủ một cơ hội
để phục hồi sau khi xếp hàng. Nếu bạn nhận thấy hàng đợi, tốt nhất là giảm
thời gian chunk.
--tên bảng mới
type: string; mặc định:% T_new
Tên bảng mới trước khi nó được hoán đổi. % T được thay thế bằng tên bảng gốc.
Khi mặc định được sử dụng, công cụ đặt tiền tố tên với tối đa 10 "_" (dấu gạch dưới) để
tìm một tên bảng duy nhất. Nếu một tên bảng được chỉ định, công cụ không đặt tiền tố cho nó
với "_", vì vậy bảng không được tồn tại.
--mật khẩu mở khóa
dạng rút gọn: -p; loại: 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 thì chúng phải được thoát
có dấu gạch chéo ngược: "exam \, ple"
- lipid
loạ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 mà nó chứa khác với PID hiện tại. Tuy nhiên, nếu tệp PID
tồn tại và PID mà nó chứa không còn chạy nữa, công cụ sẽ ghi đè lên PID
tệp với PID hiện tại. Tệp PID sẽ tự động bị xóa khi công cụ thoát.
--cắm vào
loại: chuỗi
Tệp mô-đun Perl xác định lớp "pt_online_schema_change_plugin". Một cục sạc
cho phép bạn viết một mô-đun Perl có thể kết nối vào nhiều phần của pt-online-schema-
thay đổi. Điều này đòi hỏi bạn phải có kiến thức tốt về các quy ước của Bộ công cụ Perl và Percona,
nằm ngoài phạm vi này của tài liệu này. Vui lòng liên hệ với Percona nếu bạn có
câu hỏi hoặc cần trợ giúp.
Xem "PLUGIN" để biết thêm thông tin.
--Hải cảng
dạng viết tắt: -P; kiểu: int
Số cổng sử dụng để kết nối.
--in
In câu lệnh SQL thành STDOUT. Chỉ định tùy chọn này cho phép bạn xem hầu hết các
các câu lệnh mà công cụ thực thi. Bạn có thể sử dụng tùy chọn này với "--dry-run", cho
thí dụ.
--phát triển
kiểu: mảng; mặc định: thời gian, 30
In báo cáo tiến độ sang STDERR trong khi sao chép hàng. Giá trị được phân tách bằng dấu phẩy
danh sách gồm hai phần. Phần đầu tiên có thể là tỷ lệ phần trăm, thời gian hoặc số lần lặp lại; NS
phần thứ hai chỉ định tần suất một bản cập nhật sẽ được in, tính bằng phần trăm, giây,
hoặc số lần lặp lại.
--Yên lặng
dạng ngắn: -q
Không in tin nhắn thành STDOUT (vô hiệu hóa "--progress"). Lỗi và cảnh báo là
vẫn được in sang STDERR.
--recurse
kiểu: int
Số cấp độ cần đệ quy trong hệ thống phân cấp khi phát hiện ra các bản sao. Mặc định là
vô hạn. Xem thêm "--recursion-method".
--recursion-phương pháp
kiểu: mảng; default: danh sách xử lý, máy chủ
Phương pháp đệ quy ưu tiên để khám phá các bản sao. Các phương pháp có thể là:
PHƯƠNG PHÁP SỬ DỤNG
==================================
danh sách xử lý HIỂN THỊ DANH SÁCH TIẾN TRÌNH
máy chủ HIỂN THỊ TRANG TRÌNH BÀY CHẬM
dsn = DSN DSN từ một bảng
không Không tìm thấy nô lệ
Phương thức danh sách xử lý là mặc định, vì SHOW SLAVE HOSTS không đáng tin cậy.
Tuy nhiên, phương thức máy chủ có thể hoạt động tốt hơn nếu máy chủ sử dụng cổng không chuẩn (không phải
3306). Công cụ này thường làm đúng và tìm thấy tất cả các bản sao, nhưng bạn có thể
một phương pháp ưu tiên và nó sẽ được sử dụng đầu tiên.
Phương thức máy chủ yêu cầu các bản sao phải được định cấu hình với report_host, report_port,
và vv
Phương thức dsn rất đặc biệt: nó chỉ định một bảng mà từ đó các chuỗi DSN khác được đọc.
DSN được chỉ định phải chỉ định D và t, hoặc t đủ điều kiện cơ sở dữ liệu. Bảng DSN
nên có cấu trúc sau:
TẠO BẢNG `dsns` (
`id` int(11) KHÔNG TỰ ĐỘNG ĐẦY ĐỦ,
`id_cha` int(11) NULL MẶC ĐỊNH,
`dsn` vecni(255) KHÔNG ĐẦY ĐỦ,
KHÓA CHÍNH (`id`)
);
Để làm cho công cụ chỉ giám sát các máy chủ 10.10.1.16 và 10.10.1.17 về độ trễ sao chép,
chèn các giá trị "h = 10.10.1.16" và "h = 10.10.1.17" vào bảng. Hiện tại,
DSN được sắp xếp theo id, nhưng id và parent_id bị bỏ qua.
--set-vars
kiểu: Mảng
Đặt các biến MySQL trong danh sách các cặp "biến = giá trị" được phân tách bằng dấu phẩy này.
Theo mặc định, công cụ đặt:
wait_timeout = 10000
innodb_lock_wait_timeout = 1
lock_wait_timeout = 60
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 "--set-vars wait_timeout = 500" ghi đè giá trị mặc định là 10000.
Công cụ sẽ in một cảnh báo và tiếp tục nếu một biến không thể được thiết lập.
--ngủ
loại: float; mặc định: 0
Thời gian ngủ (tính bằng giây) sau khi sao chép từng đoạn. Tùy chọn này hữu ích khi
không thể điều chỉnh bằng "--max-lag" và "--max-load". Một giây nhỏ
nên sử dụng giá trị, chẳng hạn như 0.1, nếu không, công cụ này có thể mất rất nhiều thời gian để sao chép
bàn lớn.
--ổ cắm
các hình thức ngắn; loại: chuỗi
Tập tin ổ cắm để sử dụng cho kết nối.
--số liệu thống kê
In thống kê về quầy nội bộ. Điều này rất hữu ích để xem có bao nhiêu cảnh báo
đã bị triệt tiêu so với số lượng INSERT.
- [không] bảng hoán đổi
mặc định: có
Hoán đổi bảng ban đầu và bảng mới, đã thay đổi. Bước này hoàn thành việc trực tuyến
quy trình thay đổi giản đồ bằng cách đặt bảng với lược đồ mới thay thế cho
bảng gốc. Bảng ban đầu trở thành "bảng cũ" và công cụ này sẽ loại bỏ nó
trừ khi bạn tắt "- [no] drop-old-table".
--cries
kiểu: mảng
Bao nhiêu lần để thử các hoạt động quan trọng. Nếu một số hoạt động không thành công do không
lỗi nghiêm trọng, có thể phục hồi, công cụ chờ và thử hoạt động lại. đó là
các hoạt động được thử lại, với số lần thử mặc định và thời gian chờ
giữa các lần thử (tính bằng giây):
CHUYẾN HOẠT ĐỘNG CHỜ ĐỢI
==================================
tạo_triggers 10 1
drop_triggers 10 1
copy_rows 10 0.25
trao đổi_bảng 10 1
update_foreign_keys 10 1
phân tích_bảng 10 1
Để thay đổi các giá trị mặc định, hãy chỉ định các giá trị mới như:
--tries create_triggers: 5: 0.5, drop_triggers: 5: 0.5
Điều đó khiến công cụ thử "create_triggers" và "drop_triggers" 5 lần với 0.5
lần chờ thứ hai giữa các lần thử. Vì vậy, định dạng là:
hoạt động: cố gắng: chờ đợi [, hoạt động: cố gắng: chờ đợi]
Tất cả ba giá trị phải được chỉ định.
Lưu ý rằng hầu hết các hoạt động chỉ bị ảnh hưởng trong MySQL 5.5 và mới hơn bởi
"lock_wait_timeout" (xem "--set-vars") do khóa siêu dữ liệu. "Copy_rows"
hoạt động bị ảnh hưởng trong bất kỳ phiên bản nào của MySQL bởi "innodb_lock_wait_timeout".
Đối với việc tạo và loại bỏ trình kích hoạt, số lần thử áp dụng cho mỗi "CREATE
Câu lệnh TRIGGER "và" DROP TRIGGER "cho mỗi trình kích hoạt. Để sao chép các hàng, số
số lần thử áp dụng cho từng đoạn, không phải toàn bộ bảng. Để hoán đổi bảng, số
trong tổng số lần thử thường áp dụng một lần vì thường chỉ có một "BẢNG RENAME"
tuyên bố. Để xây dựng lại các ràng buộc khóa ngoại, số lần thử áp dụng cho
mỗi câu lệnh (câu lệnh "ALTER" cho "construct_constraints"
"--alter-ngoại-khóa-phương thức"; các câu lệnh khác cho phương thức "drop_swap").
Công cụ sẽ thử lại từng thao tác nếu những lỗi này xảy ra:
Khóa thời gian chờ (innodb_lock_wait_timeout và lock_wait_timeout)
Đã tìm thấy bế tắc
Truy vấn bị hủy (KILL QUERY )
Kết nối bị ngắt (GIẾT KẾT NỐI )
Mất kết nối với MySQL
Trong trường hợp kết nối bị mất và bị giết, công cụ sẽ tự động kết nối lại.
Các lỗi và lần thử lại được ghi lại trong "--st Statistics".
--người sử dụng
dạng rút gọn: -u; loại: chuỗi
Người dùng để đăng nhập nếu không phải là người dùng hiện tại.
--phiên bản
Hiển thị phiên bản và thoát.
- [không] kiểm tra phiên bản
mặc định: có
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
Tính năng, đặc điểm. Đầu tiên, công cụ kiểm tra phiên bản của các chương trình khác trên hệ thống cục bộ trong
bổ sung cho phiên bản riêng của nó. Ví dụ: nó kiểm tra phiên bản của mọi máy chủ MySQL
nó kết nối với, Perl và mô-đun Perl DBD :: mysql. Thứ hai, nó kiểm tra và cảnh báo
về các phiên bản có sự cố đã biết. Ví dụ: MySQL 5.5.25 có một lỗi nghiêm trọng và
đã được phát hành lại dưới dạng 5.5.25a.
Mọi cập nhật hoặc sự cố đã biết đều được in ra STDOUT trước khi xuất ra bình thường của công cụ.
Tính năng này không bao giờ được 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 .
CẮM VÀO
Tệp được chỉ định bởi "--plugin" phải xác định một lớp (tức là một gói) được gọi là
"pt_online_schema_change_plugin" với chương trình con "new ()". Công cụ này sẽ tạo ra một
thể hiện của lớp này và gọi bất kỳ hook nào mà nó định nghĩa. Không cần móc, nhưng một
plugin sẽ không hữu ích nếu không có chúng.
Các móc này, theo thứ tự này, được gọi nếu được định nghĩa:
trong đó
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_forign_keys
after_update_forign_keys
before_drop_old_table
after_drop_old_table
before_drop_triggers
before_exit
get_slave_lag
Mỗi hook được truyền các đối số khác nhau. Để xem những đối số nào được chuyển đến một hook,
tìm kiếm tên của hook trong mã nguồn của công cụ, như:
# - móc ký quỹ
if ($ plugin && $ plugin-> can ('init')) {
$ plugin-> init (
orig_tbl => $ orig_tbl,
child_tables => $ child_tables,
đã đổi tên_cols => $ đã đổi tên_cols,
nô lệ => $ nô lệ,
slave_lag_cxns => $ slave_lag_cxns,
);
}
Nhận xét "# --plugin hook" đứng trước mỗi lệnh hook.
Vui lòng liên hệ với Percona nếu bạn có thắc mắc hoặc cần trợ giúp.
DSN LỰA CHỌN
Cá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ư "option = value".
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 "=" và nếu giá trị chứa khoảng trắng thì nó 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 web bộ công cụ percona để biết đầy đủ chi tiết.
· MỘT
dsn: bộ ký tự; copy: vâng
Bộ ký tự mặc định.
· NS
dsn: cơ sở dữ liệu; copy: vâng
Cơ sở dữ liệu cho bảng cũ và mới.
· NS
dsn: mysql_read_default_file; copy: vâng
Chỉ đọc các tùy chọn mặc định từ tệp đã cho
· H
dsn: máy chủ; copy: vâng
Kết nối với máy chủ.
· P
dsn: mật khẩu; copy: vâng
Mật khẩu sử dụng khi kết nối. Nếu mật khẩu chứa dấu phẩy thì chúng phải được thoát
có dấu gạch chéo ngược: "exam \, ple"
· P
dsn: cổng; copy: vâng
Số cổng sử dụng để kết nối.
· NS
dsn: mysql_socket; copy: vâng
Tập tin ổ cắm để sử dụng cho kết nối.
· NS
dsn: bảng; copy: không
Bảng để thay đổi.
· U
dsn: người dùng; copy: vâng
Người dùng để đăng nhập nếu không phải là người dùng hiện tại.
MÔI TRƯỜNG
Biến môi trường "PTDEBUG" cho phép đầu ra gỡ lỗi chi tiết thành STDERR. Để kích hoạt
gỡ lỗi và chụp tất cả đầu ra vào một tệp, chạy công cụ như:
PTDEBUG = 1 pt-online-schema-change ...> FILE 2> & 1
Hãy cẩn thận: đầu ra gỡ lỗi rất lớn và có thể tạo ra vài MB đầu ra.
WELFARE YÊU CẦU
Bạ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 mới hợp lý của Perl.
Công cụ này chỉ hoạt động trên MySQL 5.0.2 và các phiên bản mới hơn, vì các phiên bản trước đó không
hỗ trợ kích hoạt.
Sử dụng pt-online-schema-changep trực tuyến bằng các dịch vụ onworks.net