如果目前的应用在mysql5.7上开发,当需要升级的时候,即主库直接复制到mysql8的库,sql语句可能会失败,或者产生不同的执行结果。所以在升级之前,需要检查应用是否用了一些mysql5特有的功能,使用的话,需要先删除或者替换到8的新功能。
缓存
(1)删除的语句命令:FLUSH QUERY CACHE 和 RESET QUERY CACHE。
(2)删除的系统变量:
query_cache_limit、query_cache_min_res_unit、query_cache_size、query_cache_type,query_cache_wlock_invalidate。
(3)删除的状态变量:qcache_free_blocks,qcache_free_memory,qcache_hits,qcache_inserts,qcache_lowmem_prunes,qcache_not_cached,qcache_queries_in_cache,qcache_total_blocks
(4) 删除的线程状态变量:checking privileges on cache query,checking query cache for query,invalidating query cache for query ,invalidating query cache entries,sending cached resultto client,storing result in query cache,waiting for query lock。
加密函数
已经删除的加密函数有以下几种:
ENCODE(),DECODE(),ENCRYPT(),DES_ENCRYPT(),DES_DECRYPT()
对于ENCRYPT()函数,可以使用SHA2()替代,其它的函数使用AES_ENCRYPT()和AES_DECRYPT()替代。
空间函数
在mysql5.7 版本中,有很多空间函数标记为过时,这些过时的函数在8中就已经删除了,只保留了对应的ST_和MBR函数。
NULL
在SQL语句中,新的解析器不再将N解析为NULL。所以SQL语句应使用NULL代替N。注意的是如果使用load data infile 或者使用 select into out file操作文件导入导出,还是可以用N,这里等同为NULL。
数据库初始化安装
旧有的安装方式使用: mysql_install_db程序,8使用参数 --initialize,另外选项--bootstrap 和 INStALL_SCRIPTDIRCMake 也删除。
通用分区处理程序
通用分区处理已经在mysql服务中删除,为了实现给定表分区,需要使用存储引擎自己的分区处理程序,mysql8只支持InnoDB。
系统和状态相关变量
在information_schema数据库中,有些系统和状态变量不再维护。例如:global_ariables,session_variables,global_status,session_status表都已经删除,另外系统变量:show_compatibility_56也被删除,还有一些状态变量已经删除:slave_heartbeat_period,slave_last_heartbeat,slave_received_heartbeats,slave_retried_transactions。
mysql_plugin工具
该工具用来配置mysql服务器插件,现在已经删除,可以使用--plugin-load选项在服务器启动时候加载进来。
总结,以上就是5.7以前的旧有特性,这里做个参考,升级真遇到相应问题,再查资料进行替换。