binlogAL (binlog analysis)
Используя время, потраченное на изучение Rust, были переработаны некоторые инструменты, ранее написанные на Python.
Функции:
Использование: Можно использовать ключ --help для просмотра всех параметров. В релизной версии можно получить исполняемый файл для Linux или скачать исходный код для самостоятельной компиляции.
Обязательные параметры:
Режим репликации (--runtype=repl):
mm:debug xxxxx$ ./mytest -uroot -proot -h 127.0.0.1:3306 --runtype repl --gtid '1886928a-ce21-11e9-bee2-50edb3ba887e:1-11' RotateLog { binlog_file: "bin.000001" }
GtidEvent gtid:1886928a-ce21-11e9-bee2-50edb3ba887e, gno_id:12, last_committed:2818, sequence_number:3072
QueryEvent thread_id:1511, database:xz_test, command:BEGIN
TableMap database_name:xz_test, table_name:t8
ROW_VALUE
id: 1, id1: 3, a: b, b: 2, c: 0x36333633,XidEvent xid:3089
GtidEvent gtid:1886928a-ce21-11e9-bee2-50edb3ba887e, gno_id:13, last_committed:3074, sequence_number:3328
QueryEvent thread_id:1519, database:xz_test, command:BEGIN
TableMap database_name:xz_test, table_name:t8
ROW_VALUE
id: 1, id1: 4, a: bb, b: 2, c: 0x36333634,
XidEvent xid:3114
GtidEvent gtid:1886928a-ce21-11e9-bee2-50edb3ba887e, gno_id:14, last_committed:3330, sequence_number:3584
QueryEvent thread_id:1511, database:xz_test, command:BEGIN
TableMap database_name:xz_test, table_name:t6
ROW_VALUE
id: 1, a: a, b: 2, c: 1, d: 0x3742,e: abc,
XidEvent xid:3116
Пример использования режима репликации с указанием thread_id и greptbl для получения SQL:
mm:debug xxxxx$ ./mytest -uroot -proot -h 127.0.0.1:3306 --runtype repl --gtid '1886928a-ce21-11e9-bee2-50edb3ba887e:1-11' --threadid 1511 --greptbl '{"xz_test":["t8"]}' --getsql
-- GTID: 1886928a-ce21-11e9-bee2-50edb3ba887e:12
use xz_test;
BEGIN;
-- Insert Row Value
INSERT INTO xz_test.t8(id,id1,a,b,c) VALUES(1,3,'b',2,0x36333633);
COMMIT;
Чтение binlog-файла (--runtype=file):
mm:debug xxxxx$ ./mytest -uroot -proot -h 127.0.0.1:3306 --runtype file --file 'bin.000001' --startposition 3636 --threadid 1511 --greptbl '{"xz_test":"all"}'
从binlog文件提取数据
GtidEvent gtid:1886928a-ce21-11e9-bee2-50edb3ba887e, gno_id:12, last_committed:2818, sequence_number:3072
QueryEvent thread_id:1511, database:xz_test, command:BEGIN
TableMap database_name:xz_test, table_name:t8
ROW_VALUE
id: 1, id1: 3, a: b, b: 2, c: 0x36333633,
XidEvent xid:3089
GtidEvent gtid:1886928a-ce21-11e9-bee2-50edb3ba887e, gno_id:14, last_committed:3330, sequence_number:3584
QueryEvent thread_id:1511, database:xz_test, command:BEGIN
TableMap database_name:xz_test, table_name:t6
ROW_VALUE
id: 1, a: a, b: 2, c: 1, d: 0x3742,e: abc,
XidEvent xid:3116
Откат:
Как выполнить откат: Параметры можно комбинировать так же, как и при чтении из файла, например, для выполнения отката данных из предыдущего примера:
mm:debug xxxxx$ ./mytest -uroot -proot -h 127.0.0.1:3306 --runtype file --file 'bin.000001' --startposition 3636 --threadid 1511 --greptbl '{"xz_test":"all"}' --rollback
从binlog文件提取数据
failed to fill whole buffer
mm:debug xxxxx$ ./mytest -uroot -proot -h 127.0.0.1:3306 --runtype file --file 'rollback-1.log' --getsql
从binlog文件提取数据
-- GTID:
``` 1886928a-ce21-11e9-bee2-50edb3ba887e:14
use xz_test;
BEGIN;
— Insert Row Value
INSERT INTO xz_test.t6(id, a, b, c, d, e) VALUES (1, 'a', 2, 1, 0x3742, 'abc');
COMMIT;
— GTID: 1886928a-ce21-11e9-bee2-50edb3ba887e:12
use xz_test;
BEGIN;
— Delete Row Value
DELETE FROM xz_test.t8 WHERE id=1 AND id1=3;
COMMIT;
Можно увидеть, что данные были преобразованы в соответствующие откатные операторы. Можно напрямую использовать mysqlbinlog для выполнения операций или напрямую выполнить извлечённый SQL. Если используется метод операции mysqlbinlog, то:
bin/mysqlbinlog rollback-1.log --skip-gtids | bin/mysql -uroot -proot -h 127.0.0.1
## Выполнение оператора (--runtype=command):
Соединение с MySQL не использует открытый исходный код, а реализуется непосредственно через сокетное соединение для реализации протокола MySQL. Поэтому здесь был разработан режим выполнения оператора для проверки. Через параметр -c можно напрямую указать оператор SQL. Можно использовать -D для указания библиотеки по умолчанию. Если не указано, необходимо указать в SQL:
./mytest -uroot -proot -h 127.0.0.1:3306 --runtype command -D information_schema -c 'select * from tables'
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )