利用Spark把數據寫進mysql數據庫時候遇到的問題

寫入數據庫的方式是:

df2.write.mode(SaveMode.Append).jdbc(url,"student",properties)

impossible to write to binary log since BINLOG_FORMAT = STATEMENT

這是因爲,mysql默認的binlog_format是STATEMENT。

從 MySQL 5.1.12 開始,可以用以下三種模式來實現:基於SQL語句的複製(statement-based replication, SBR),基於行的複製(row-based replication, RBR),混合模式複製(mixed-based replication, MBR)。相應地,binlog的格式也有三種:STATEMENT,ROW,MIXED。

如果你採用默認隔離級別REPEATABLE-READ,那麼建議binlog_format=ROW。如果你是READ-COMMITTED隔離級別,binlog_format=MIXED和binlog_format=ROW效果是一樣的,binlog記錄的格式都是ROW,對主從複製來說是很安全的參數。

方法一

mysql> STOP SLAVE;
Query OK, 0 rows affected (0.02 sec)

 mysql>  SET GLOBAL binlog_format=ROW;
Query OK, 0 rows affected (0.00 sec)

 mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)

但是這樣只是一次性的,重啓後失效。


永久生效,需要修改my.ini

# binary logging format - ROW
binlog_format=ROW
修改後,記得右擊我的電腦-》管理-》服務和應用程序-》mysql 把服務停掉再重啓
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章