一. 主从复制
1.1 主从复制原理
主从复制的前提是:
- 主库开启binlog(二进制日志)
- 主库和从库的server_id要不一样
- 主库要有复制用户
- 从库开启复制前需要获得主库之前的数据
主库将更新的数据写入到binlog中,然后通过dump线程发送binlog给从库。
从库可以通过IO线程接受主库TP(传送)过来的binlog,然后将其存入到relay log(中继日志)中,然后从库通过sql线程从relay log拿数据并回放到从库里。
主库设置完不同的server id然后开启binlog之后即可
从库通过change master to命令知道主库的ip,复制用户,密码和binlog的postion位点。
从库有哪些东西:1.IO线程 2.SQL线程 3.relay log 4.master.info 5.relay-log.info
change master to
master_host='192.168.208.10',
master_user='slave',
master_password='123456',
master_log_file='mysql-bin.000001',
master_log_pos=120;
注意:比如复制用户信息,binlog的pos都会存储在从库的master.info中。
其中relay-log.info中记录上次回放的数据的位点
在从库change master to之后start slave开启复制必要的IO线程和SQL线程。
1.2 主从复制的底层运行过程:
从库开启之后会根据binlog的pos位点去问主库,有没有比这个pos更新的数据。主库接收到请求,会比较当前的binlog的信息,如果有了新的数据更新,会把当前的数据binlog通过dump线程发送给从库的IO线程。
1.3 主从复制实验
机器准备:
机器 | 配置 |
192.168.208.10 | master server_id=1 binlog |
192.168.208.20 | slave1 server_id=2 |
192.168.208.30 | slave2 server_id=3 |
三个机器的mysql版本是5.6.40 使用的是二进制安装
二进制安装