java canal對於資料庫配置

2021-09-12 15:39:10 字數 1423 閱讀 4895

現場部署專案時候出現問題,排查時候發現是canal啟動失敗:

2019-03-15 11:47:38.486 [destination = example , address = /127.0.0.1:3306 , eventparser] error c.a.o.c.p.inbound.mysql.rds.rdsbinlogeventparserproxy - dump address /127.0.0.1:3306 has an error, retrying. caused by 

com.alibaba.otter.canal.parse.exception.canalparseexception: command : 'show master status' has an error! pls check. you need (at least one of) the super,replication client privilege(s) for this operation

看報錯的主要意思是許可權不足,網上搜了一下,很多都是要加許可權的。但是我的canal使用的是root使用者啊,這肯定許可權夠的啊。

接著排查問題,終於發現:原來是mysql配置時候出現問題:

因為我做的是中介軟體,會和其他專案部署要一台伺服器,所以一般伺服器上已經存在mysql,我是通過指令碼配的的mysql,指令碼如下:

####為canal做準備

if test -r /etc/my.cnf

then

grep -q "log-bin=mysql-bin" /etc/my.cnf

if [[ $? -eq 0 ]]

then

echo "canal對於mysql已經配置過了"

else

echo "為mysql開啟 log-bin"

echo "log-bin=mysql-bin" >> /etc/my.cnf

echo "binlog-format=row" >> /etc/my.cnf

echo "server_id=77" >> /etc/my.cnf

fielse

echo "my.cnf 不存在!!!!請安裝mysql或者將 my.cnf 複製到目錄 /etc/下"

fi

首先會判斷 log-bin=mysql-bin在my.cnf中有沒有,如果沒有,就配置,如果有我就認為已經配置完成了。

問題就出現在這,坑爹的mysql5.5中已經有這個配置,但是他是預設注釋掉的。。。

然後就把canal的配置加進去,重啟mysql、和專案之後,還是出現上邊錯誤。直接一臉懵逼。。。。

終於發現,這個配置必須放到mysqld下邊,才可以好使。又將配置放到了mysqld下,重啟mysql、重啟專案。

到這終於好使了。

重點:開啟資料庫日誌的配置必須在mysqld下邊,配置到其他下邊不好使。

SequoiaDB 巨杉資料庫 資料庫引數配置

引數配置 sequoiadb 支援命令列方式及配置檔案方式進行引數配置。命令列方式配置 在啟動 sequoiadb 時傳入配置引數值 sequoiadb businessname yyy catalogaddr ubuntu wjm 30003,ubuntu wjm 30013,ubuntu wjm...

oracle 資料庫 對於時間操作

在系統時間基礎上延遲5秒 select sysdate 5 24 60 60 from dual 在系統時間基礎上延遲5分鐘 select sysdate 5 24 60 from dual 在系統時間基礎上延遲5小時 select sysdate 5 24 from dual 在系統時間基礎上延遲...

oracle 資料庫 對於時間操作

在系統時間基礎上延遲5秒 select sysdate 5 24 60 60 from dual 在系統時間基礎上延遲5分鐘 select sysdate 5 24 60 from dual 在系統時間基礎上延遲5小時 select sysdate 5 24 from dual 在系統時間基礎上延遲...