一、MySQL主从复制
1、概述
- 在企业应用中,成熟的业务通常数据量都比较大
- 单台MySQL在安全性、高可用性和高并发方面都无法满足实际的需求
- 配置多台主从数据库服务器以实现读写分离
2、主从复制原理
-
主从复制核心:
①2个日志:二进制日志和中继日志
②3个线程:master的dump线程
slave上的IO线程、SQL线程 -
目的:slave的中继日志实时同步master二进制日志;并使dump线程监控二进制日志的更新,更新时通知slave的IO线程
-
原理过程:
①首先,slave上的IO线程请求master,申请同步二进制日志的更新内容;
②dump线程把同步的SQL日志的内容发送slave服务器上,slave的IO线程将会将更新内容写入中继日志
③slave上的SQL线程把日志中更新语句同步执行到数据库中,以达到和master数据库趋近一致
3、支持的复制类型
- 基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高
- 基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍
- 混合类型的复制:默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制
二、搭建MySQL主从复制
1、master主服务配置
1.1 首先在主服务上安装ntp,使时间同步
1.2 安装环境依赖包
1.3 安装mysql数据库,并初始化
1.4 进入/etc/init.d/mysqld配置文件修改配置
1.5 当创建完成后,并给mysql新建密码,并重启服务
1.6 进入mysql数据库给从服务器提权
1.7 在主服务查看end_log_pos值
2、slave从服务器配置
2.1 前面mysql安装的步骤与master步骤一样
2.2 安装完成后,编辑配置文件/etc/my.cnf,并给数据库设置密码
2.3 进入从服务器slave的mysql数据库
3、测试
3.1 在主服务器master上mysql数据库上创建新的数据库
3.2 在slave上mysql数据库查看
3.3 在slave2的数据库mysql查看