在中国银联的开源数据库实践中,他们选择了MySQL作为基础,并在其之上进行了定制开发,形成了名为UPSQL的产品。这个过程涉及到了多个关键知识点,包括但不限于数据库选型、并发控制、安全性、运维自动化以及性能优化。
中国银联在2011年完成了二代系统的建设,使用的是DB2数据库,随后在2012年开始尝试MySQL,并逐步将其应用于实际业务。这表明他们在数据库选型上注重技术的适应性和成本效益,选择开源的MySQL来满足业务需求。
在面临不同场景下的并发问题时,中国银联采取了多种策略。他们构建了自动化运维平台,以提高系统的稳定性和效率。在并发控制方面,他们设计了一个多队列并发控制系统,能够对简单查询、复杂查询、简单事务和复杂事务进行分类,并设置最大并发数,超出阈值的请求会被放入等待队列,支持等待超时和不受限用户白名单,以确保系统的高效运行。
在安全性方面,中国银联开发了DBPM认证插件,实现了应用程序和数据库的无密码保存,密码统一存储在DBPM服务器上,增强了密码管理的安全性。同时,他们还引入了国密SM3算法,提升认证的安全性。此外,UPSQL还支持MySQL的线程池功能,通过调整线程池大小,优化了并发连接性能,减少了主库dump线程对binlog文件的锁竞争。
在复制性能方面,中国银联对MySQL的复制机制进行了优化,包括基于组提交的多线程复制(MTS)、半同步复制的异步ACK接收线程,以及多源复制(MSR)的默认线程调度方式。这些改进显著提升了不同复制架构下的性能,例如在主从异步、主从半同步和主主半同步模式下的TPS(事务处理速度)。
在读写分离和数据拆分上,中国银联使用了UPSQL-Proxy,这是一个透明的数据库代理,用于实现高可用、读写分离和数据的分布式处理。UPSQL-Proxy支持连接池,处理Prepare语句,具备分布式事务能力,并且能进行负载均衡,有效解决了大数据量下的性能问题。
此外,UPSQL还提供了其他功能,如复制容错处理、表碎片的统计和自动整理,以及热点数据更新的自动提交等,这些都增强了系统的稳定性和数据一致性。未来,中国银联计划继续优化和扩展UPSQL的功能,以适应不断变化的业务需求。
中国银联的开源数据库实践展示了他们在数据库选型、并发控制、安全性、性能优化和高可用性等方面的深入理解和实践,这些经验对于其他企业进行数据库管理和架构设计具有很高的参考价值。