针对自己在搭建完mysql主从复制遇到的一些小问题的总结。
1.表名库名大小写问题
首先是show slave status \G检查从库状态的时候,发现报错插入数据的时候,说少了tUser表,这个表是从主库下dump下来的按理说没有问题,我查了一下从库是有tuser表的,我以为没啥问题,就把这个表删了,重建一遍,又导入数据之后,就把这个错误跳过了(set global sql_slave_skip_counter=1;)结果没过几天,又发现了这个问题,我就觉得不对劲了,然后我查了一下主库从库都没有tUser表,有的只是tuser表,既然主库能插入,按理说从库也应该能插入啊,我就感觉应该是表名大小写应该是又问题,果然比对了一下主从库的my.cnf文件,发现主库有my.cnf文件中设置了lower_case_table_names=1(表名不区分大小写),而从库没有,然后我就stop slave,在从库的my.cnf中添加了lower_case_table_names=1,然后service mysqld restart就ok了
小结:
lower_case_table_names=0,表名存储在磁盘为给定大小写,插入数据的时候严格区分大小写
lower_case_table_names=1,表名存储在磁盘为小写,且插入数据时不区分大小写
lower_case_table_names=2,表名存储在磁盘为给定大小写,插入数据时为小写
2.开启bin-log,创建function失败,报错 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
https://blog.csdn.net/topasstem8/article/details/8216740
3.The user specified as a definer ('root'@'%') does not exist' on query.
具体原因还不清楚,应该是缺少权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'apexsoft' WITH GRANT OPTION;
flush privileges;