报错如下
#####mycat连接MySQL8.0数据库启动报错,报错如下:
org.xml.sax.SAXParseException; lineNumber: 355; columnNumber: 67; The reference to entity "serverTimezone" must end with the ';' delimiter.
####schema.xml中datahost配置如下
schema.xml配置文件如下
<dataNode name="dn1" dataHost="db1" database="invoice"/>
<dataNode name="dn2" dataHost="db2" database="invoice"/>
<dataNode name="dx1" dataHost="dxdb1" database="sales_order"/>
<dataNode name="dx2" dataHost="dxdb2" database="sales_order"/>
<dataHost name="db1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="mycat-1.itax.local"
url="jdbc:mysql://10.6.8.48:36000?useSSL=false&allowPublicKeyRetrieval=true&&serverTimezone=GMT%2B8;"
user="sales_manager"
password="ueHjqtam%zB^WqW5">
</writeHost>
</dataHost>
<dataHost name="db2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="mycat-2.itax.local"
url="jdbc:mysql://10.6.8.49:36000?useSSL=false&allowPublicKeyRetrieval=true&&serverTimezone=GMT%2B8;"
user="sales_manager"
password="ueHjqtam%zB^WqW5">
</writeHost>
</dataHost>
<dataHost name="dxdb1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="mycat-1.itax.local"
url="jdbc:mysql://10.6.8.48:36000?useSSL=false&allowPublicKeyRetrieval=true&&serverTimezone=GMT%2B8;"
user="sales_manager"
password="ueHjqtam%zB^WqW5">
</writeHost>
</dataHost>
<dataHost name="dxdb2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="mycat-2.itax.local"
url="jdbc:mysql://10.6.8.49:36000?useSSL=false&allowPublicKeyRetrieval=true&&serverTimezone=GMT%2B8;"
user="sales_manager"
password="ueHjqtam%zB^WqW5">
</writeHost>
</dataHost>
根据日志报错查询度娘后,发现需要使用mycat8.0的驱动
‘Mycat1.6.7.6对Mysql8支持使用配置-腾讯云开发者社区-腾讯云’
###修改驱动包
rm -rf mycat/lib/mysql-connector-java-5.1.5.jar
mv mysql-connector-java-8.0.18.jar mycat/lib/
chmod +x -R mycat/lib/
(重新启动后发现,还有新的报错)
JDBCHeartBeat error
java.sql.SQLException: No timezone mapping entry for 'GMT+8;'
查看配置文件后发现时区格式不对,索性我就直接干掉时区
schema.xml配置文件修改如下:
<dataNode name="dn1" dataHost="db1" database="invoice"/>
<dataNode name="dn2" dataHost="db2" database="invoice"/>
<dataNode name="dx1" dataHost="dxdb1" database="sales_order"/>
<dataNode name="dx2" dataHost="dxdb2" database="sales_order"/>
<dataHost name="db1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="mycat-1.itax.local"
url="jdbc:mysql://10.6.8.48:36000?useSSL=false&allowPublicKeyRetrieval=true&"
user="sales_manager"
password="ueHjqtam%zB^WqW5">
</writeHost>
</dataHost>
<dataHost name="db2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="mycat-2.itax.local"
url="jdbc:mysql://10.6.8.49:36000?useSSL=false&allowPublicKeyRetrieval=true&"
user="sales_manager"
password="ueHjqtam%zB^WqW5">
</writeHost>
</dataHost>
<dataHost name="dxdb1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="mycat-1.itax.local"
url="jdbc:mysql://10.6.8.48:36000?useSSL=false&allowPublicKeyRetrieval=true&"
user="sales_manager"
password="ueHjqtam%zB^WqW5">
</writeHost>
</dataHost>
<dataHost name="dxdb2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="mycat-2.itax.local"
url="jdbc:mysql://10.6.8.49:36000?useSSL=false&allowPublicKeyRetrieval=true&"
user="sales_manager"
password="ueHjqtam%zB^WqW5">
</writeHost>
</dataHost>
重启MyCat后,进入发现正常了!!