|
利益
- bin-log日记包括了描写数据库操纵的变乱,可是这些变乱包括的环境只是对数据库举办改变的操纵,譬喻 insert、update、create、delete等操纵。相阻挡付select、desc等相同的操纵并不会去记录,而且它记录的是语句,以是相对付Row-Based来嗣魅这样会占用更少的存储空间。
- 由于bin-log日记文件记录了全部的改变数据库的语句,以是此文件可以作为往后的数据库的考核依据
弱点
- 不安详,并不是全部的改变数据的语句城市被记录复制。任何的非确定性的举动都是很难被记录复制的。
- 譬喻:对付delete 可能update语句,假如行使了limit可是并没有 order by ,这就属于非确定性的语句,就不会被记录
- 对付没有索引前提的update语句,必需锁定更多的数据,低落了数据库的机能。
- insert……select 语句同样也必要锁定大量的数据,对数据库的机能有所消费。
- 获取更具体的信息可以参考官方文档——Statement-Based的利益和弱点。
4.2、Row-Based利益和弱点说明
利益
- 全部的改变城市被复制,这是最安详的复制方法
- 对付 update、insert……select等语句锁定更少的行
- 此种方法和大大都的数据库系同一样,以是相识其他的体系的职员可以很轻易的转到mysql
弱点
- 行使不利便,我们不能通过bin-log日记文件查察什么语句执行了,也无从知道在从处事器上吸取到什么语句,我们只能看到什么数据改变了
- 由于记录的是数据,以是说bin-log日记文件占用的存储空间要比Statement-based大。
- 对付数据量大的操纵其耗费的时刻有更长
获取更具体的信息可以参考官方文档——Row-Based的利益和弱点
bin-log日记文件默认的名目为Statement-Based,假如想改变其名目在开启处事的时辰行使—binlog-format选项,其详细呼吁如下
mysqld_safe –user=msyql –binlog-format=名目 &
四、主处事器流程说明
4.1、主处事器线程 Binlog dump thread
Binlog dump 线程是当有从处事器毗连的时辰由主处事器建设,其大抵事变进程经验如下几个阶段:

起首bin-log日记文件加锁,然后读取更新的操纵,读取完毕往后将锁开释掉,最后将读取的记录发送给从处事器。
我们可以行使如下的呼吁来查察该线程的信息
- mysql> SHOW PROCESSLISTG
以我的体系为例,由于我这体系中是一台主处事器和两台从处事器,以是会列出两条Binlog dump线程的信息
- *************************** 1. row ***************************
- Id: 2
- User: repuser
- Host: 192.168.144.131:41544
- db: NULL
- Command: Binlog Dump
- Time: 54
- State: Master has sent all binlog to slave; waiting for binlog to be updated
- Info: NULL
- *************************** 2. row ***************************
- Id: 3
- User: repuser
- Host: 192.168.144.132:40888
- db: NULL
- Command: Binlog Dump
- Time: 31
- State: Master has sent all binlog to slave; waiting for binlog to be updated
- Info: NULL
上述字段中的state字段会有以下几种状态:
1. Sending binlog event to slave
暗示Binlog dump 线程已经读取完binlog日记中更新的event,此刻正在发送给从处事器
2. Finished reading one binlog; switching to next binlog
暗示Binlog dump 线程已经读取完一个binlog日记,此刻正在打开下一个binlog日记读取来发送给从处事器
3. Master has sent all binlog to slave; waiting for binlog to be updated
这就是上面我们看到的state的值,暗示Binlog dump 线程已经读取完全部的binlog日记文件,而且将其发送给了从处事器。此刻处于空闲状态,正在守候读取有新的操纵的binlog日记文件
4. Waiting to finalize termination
这个状态一连的很短暂,我们险些看不到。当线程遏制的时辰表现此状态。
上述几个状态就是一次主从复制进程中Binlog dump 线程所经验的状态,假如我们是在测试的情形中,上述1、2、4状态我们险些是看不到的,由于它执行的很快。 (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|