主从复制主库的操作
1 2 3 4 |
1.主库配置server_id 2.主库开启binlog 3.授权主从用户 4.主库查看binlog信息 |
主从复制从库的操作
1 2 3 4 5 6 7 8 9 10 11 |
1.配置server_id,与主库不同 2.先同步主库数据 3.配置主从 change master to master_host=172.16.1.51, master_user=rep, master_password=123, master_port=3306, master_log_file=mysql-bin.000001, master_log_pos=120; 4.开启主从 |

文字描述
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
1.主库配置server_id和binlog 2.主库授权主从用户 3.主库查看binlog信息 4.从库配置server_id,只要跟主库不同就可以(只做主从的情况下) 5.从库执行change master to语句 6.从库开启IO和sql线程(start slave) 7.从库的IO线程会去连接主库的dump线程,问问是否有比从库中master.info记录的更新的位置点 8.主库dump线程被询问,dump线程会去查询binlog 9.dump线程会将查到的新数据从binlog中截取出来交给从库的IO线程 10.IO线程拿到新的binlog数据,会将内容存储到TCP/IP缓存中 11.TCP/IP缓存会返回给IO线程一个ACK 12.IO线程会更新master.info,将新的位置点更新到文件中,然后继续去主库获取数据 13.SQL线程会去读取relay-log.info中的位置点,去对比relay-log的数据,如果有比relay-log.info中的位置点新的数据,则取出并执行,如果没有则不执行 14.SQL线程执行完操作,会将新的位置点更新到relay-log.info中 |
主从复制涉及到的文件
主库
1 2 |
1.主库的binlog:记录的是数据库的操作 2.dump线程:对比binlog,取出新binlog中的数据,并将数据给到IO线程 |
从库
1 2 3 4 5 |
1.IO线程:连接主库,接收主发送过来的新binlog数据 2.sql线程:执行relay-log中主库传过来的新数据 3.relay-log(中继日志):存储所有主库传过来的新数据 4.master.info:记录上一次请求到主库返回的binlog信息,下一才从该位置点读取对比数据 5.relay-log.info:记录上一次sql线程执行到relay-log中的位置点,下一次从该位置点执行 |