浅析MySQL复制
MySQL的复制是基于binlog来实现的。 流程如下 涉及到三个线程,主库的DUMP线程,从库的IO线程和SQL线程。 1. 主库将所有操作都记录到binlog中。当复制开启时,主库的DUMP线程根据从库IO线程的请求将binlog中的内容发送到从库。 2. 从库的IO线程接受到主库DUMP线程发送的binlog事件后,将其写到本地的relay-log。 3. 从库的SQL线程重放relay-log中的事件。 实际上,在MySQL 4.0之前,复制只有两个线程,master和slave端各一个。在Slave端,该线程同时负责接收主库发来的binlog事件,也负责事件的重放,所以没有使用relay-log,这样容易导致,当binlog事件的重放速度较慢时,会影响binlog事件的接受。 复制的搭建 基本步骤如下: 1. 配置主库和从库 2. 创建复制的账号 3. 创建主库一致性快照 4. 根据主库的快照,建立从库 5. 开启复制 详细步骤如下 1. 配置主库和从库 主库 开启binlog并设置server-id [mysqld] log-bin=mysql-bin server-id=1 在一组复制结构中,每个服务器必须配置一个唯一的server-id。该值的有效范围为1~2 32 -1。 如果server-id设置为0的话,则MySQL会自动将它更改为1。此时,对复制没有影响。