MySQLのbinlogのROWモード分析
mysql5.6 以降、マスターとスレーブのデータの一貫性の要件は次のとおりです。ステートメントの形式が徐々にビジネス ニーズに適さなくなるため、本番環境のすべてのユーザーが行モードを採用し、バイナリ ログでマスター/スレーブ データを送信するための最小限のデータ変更を送信します。ステートメントモードの違いは何ですか?元の SQL ステートメントが見えますか?
mysql> create table test1(id int,c1 varchar(20),type int,address varchar(20),create_time datetime); Query OK, 0 rows affected (0.00 sec) mysql> insert into test1 select 1,'zhangsan','1','zhangsan road No 870,floor 602',now(); ERROR 1406 (22001): Data too long for column 'address' at row 1 mysql> mysql> show create table test1; +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | test1 | CREATE TABLE `test1` ( `id` int(11) DEFAULT NULL, `c1` varchar(20) DEFAULT NULL, `type` int(11) DEFAULT NULL, `address` varchar(20) DEFAULT NULL, `create_time` datetime DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> alter table test1 modify `address` varchar(200) DEFAULT NULL; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> insert into test1 select 1,'zhangsan','1','zhangsan road No 870,floor 602',now(); Query OK, 1 row affected (0.00 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> insert into test1 select 2,'lisi','1','zhangsan road No 870,floor 602',now(); Query OK, 1 row affected (0.01 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql>
を入力する準備ができています2、Rowmodebinlogは文字化けしたコードですRow In binlog の ddl ステートメントは正常に表示されますが、dml以下に示すように、文字化けしたコードです:
3、--base64-output=decode-rows -vを介してdmlステートメントを表示します
実行コマンドは次のとおりです。 /usr /local/mysql/bin/mysqlbinlog --base64-output=decode-rows -v mysql-bin.000215
次の効果が確認できますが、これらはすべて元の DML ブロック SQL ステートメントです。
|