1.mysql的主从复制是异步的io操作会存在一定的延时,需要确保数据的实时性还是需要在主机操作,从机的目的主要还是容灾
2.mysql从机slave的复制是从建立主从连接后开始的
binlog的三种格式(不同事务隔离级别下可能存在配置无效情况)
1.statement
记录写操作语句
有数据不一致的问题,update xxx set time=now() where id =1,由于延时问题导致数据不一致
2.row
行模式
记录每一行的变化,全表操作时会导致大量的性能浪费,假设现在有十万条记录更新,就会造成十万条记录被写入binary.log日志,slave从机就会
执行十万次,效率太低,新版本的中对于row模式下更改了表结构的操作也只会写入操作语句,不会记录行变化
3.mixed
混合模式
解决了一部分数据不一致的问题,他会自动进行选择,如果sql语句中有可能会造成主从数据不一致的函数时,他会切换到row模式,保存行的变化,
否则使用statement模式记录写操作,混合模式的缺点:他识别不了系统变量 @@ ,如 @@host name 获取当前主机名称,每台Linux机器主机
名称都不一致,所以也会造成数据不一致,就有了开头的解决了一部分数据不一致的问题
1.stop slave; 停止从机复制 2.reset master; 重置从机连接的主机
mysql双主双从中配置自动增量和步长是为了避免同时更新冲突问题,因为备选写主机也能进行写操作,并且记录到binlog日志中(同时写的情况)
垂直分库的划分准则,首先需要知道不同机器上的不同库是无法进行关联查询的,所以分库中的表,每一个库存储的都是相关联的一类表,不能存在
划分A库的表和B库表有关联