实验环境
1、克隆机master与slave
2、IP地址
master:192.168.75.130
slave:192.168.75.129
3、mysql版本:mysql-5.1.73-7.el6.x86_64
复制的原理
将master的DML操作通过日志复制到slave中,然后slave执行这些日志,达到与master同步的过程,可作为master的备份,减轻用户对master访问的压力,然而,这是一个异步复制过程。
复制机制的过程
1、slave的io_thread连接上master,并向master请求指定日志文件中的指定位置之后的信息。
2、master的io进程接收到请求之后,就会将结果返回给slave,结果除了日志内容外,还包含bin-log-file与bin-log-pos。
3、slave的io_thread接收到结果,将结果添加到relay-log的末端,并将bin-log-file与bin-log-pos的信息添加到master.info,便于找到下次复制指定的文件位置信息
4、slave的sql_thread检测到relay-log有新的内容添加,就会执行新的日志内容
实验操作
master端的设置
1、修改/etc/my.cnf
2、关闭防火墙
3、开启mysql
[root@creep ~]# service mysqld start
4、登入mysql,并创建复制用户
5、锁表
mysql>flush tables with read lock;
6、查看master信息
slave端的设置
1、修改/etc/my.cnf
2、启动mysql
[root@creep ~]# service mysqld start
3、建立同步
4、开启slave
mysql> start slave;
5、查看slave状态
我·只截取了一部分,其中最重要的是Slave_IO_Running与Slave_sql_Running这两个参数,一定要同时为yes,才能复制成功,我之前就试过Slave_IO_Running为no,说明slave的io_thread连不上master,我只能将master端的防火墙关闭,然后在slave端执行start slave,再查看slave状态,就ok了
6、在master端,释放读锁
mysql> unlock tables;
测试
在master端创建一个replication的数据库
查看slave端的数据库
说明master-slave搭建成功
总结
在搭建过程中,slave的io_thread连不上master,后来发现是master的防火墙问题,其次slave的sql_thread在执行过程中可能出现错误,但是,我在配置过程中没有遇到,往后的学习中,如果遇到,才再次总结。