一、主从复制的工作原理
mysql在master与slave之间实现整个复制的过程是由3个线程来完成的,其中两个线程(SQL线程和IO线程)在slave端,另外一个线程(IO线程)在master端
注:要实现mysql的复制必须首先打开master端的binary log(也就是二进制日志),否则无法实现
mysql复制的基本过程如下:
(1)slave上面的IO线程发起连接,并请求指定日志文件的位置
(2)master接收到来自slaveIO线程的请求后,通过负责复制的IO线程(即masterIO线程)根据这个请求信息指定日志的位置,把这个信息返回给slave的IO线程(返回信息)
(3)slave的IO线程接收到master端的返回信息之后,将日志内容依次写入slave端的relay log文件(mysql-relay-bin.xxx)当中,并且读取到master端的bin-log文件和位置,记录到master=info文件中,以便下一次能够清楚地告诉master从哪个位置开始传bin-log的内容
(4)slave的SQL线程检测:relay log增加内容后,马上解析master二进制文件中的内容,并且执行里面的query语句
二、具体操作
(1)在Master上操作 首先将bin-log日志打开 其次将server-id设置为1 将log-slave-updates给关闭掉 建立一个内部复制通信用户 grant replication slave on *.* to ‘admin‘@‘10.0.0.202‘ identified by ‘123456‘; flush privileges; (2)在Slave上操作 首先将bin-log日志打开 其次将server-id设置为2 将log-slave-updates打开 >stop slave; >change master to master_host=‘10.0.0.201‘, master_user=‘admin‘, master_password=‘123456‘, master_log_file=‘mysql-bin.000005‘, master_log_pos=578; >start slave; >show slave status\G;