原标题:MySQL主从复制虽好,能完美解决数据库单点问题吗?
一、单个数据库服务器的缺点
数据库服务器存在单点问题;
数据库服务器资源无法满足增长的读写请求;
高峰时数据库连接数经常超过上限。
二、如何解决单点问题
增加额外的数据库服务器,组建数据库集群;
同一集群中的数据库服务器需要具有相同的数据;
集群中的任一服务器宕机后,其它服务器可以取代宕机服务器。
三、MySQL主从复制架构
1、主库将变更写入到主库的binlog中
一些MySQL版本并不会开启二进制日志,所以一定要检查是否开启;
如果刚开始没有开启,后面再进行开启的话,需要重启数据库才能生效,而且数据库的重启往往会对业务造成很大的影响;
尽管二进制日志对性能有稍许的影响,所以还是建议大家无论是否使用复制功能,都要开启MySQL二进制日志,因为增量备份也需要二进制日志。
2、从库的IO线程在指定位置读取主库binlog内容存储到本地的中继日志(Relay Log)中
要完成二进制日志的传输过程,MySQL会在从服务器上启动一个工作线程,称为IO线程,这个IO线程会跟主数据库建立一个普通的客户端连接,然后在主服务器上启动一个特殊的二进制转储线程称为binlogdown线程。
从库上的IO线程通过这个二进制转储线程来读取主库上的二进制事件,如果该事件追赶上主库,则会进入sleep状态,直到主库发起信号通知有新事件产生时,才会被唤醒,relay log的格式和binlog格式是完全相同的,
可以使用mysqlbinlog来读取relay log中的内容。
3、从库的SQL线程读取Relay Log日志中的内容,并在从库中重放
SQL线程所执行的事件,我们可以通过配置选项来决定是否要写入到从服务器的二进制日志中。
目前MySQL支持两种复制类型:
基于二进制日志点的复制
基于GTID的复制(MySQL>=5.7推荐使用)
四、MySQL主从配置步骤
1、配置主从数据库服务器参数
有些参数配置后需要数据库重启才能生效,为了不影