一、何为主从复制
1、在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。
2、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
二、主从复制的原理
用户在master上执行一段操作,这段操作会存在他的binlog日志里面,也就是二进制文件里,而从库呢会生成两个线程,一个I/O,一个SQL线程,
然后这个I/O线程会去主上的binlog日志里面获取用户执行的操作,将其存入slave里的relay-log里面,也就是中继日志里,而另外的一个sql线程,会将刚刚存入的操作在slave上从新执行一遍,从而得到主从复制。
三、主从复制的优点
健壮性:主服务器出现故障时,可以切到从服务器作为备份
速度快:更新操作在主服务器端,查询操作在从服务器端,可以加快用户的响应时间
环境准备
准备两台Centos6服务器
系统: Centos6.8
内存:1G
cpu: 2核
IP地址: 10.0.0.21 10.0.0.22

修改两台服务器的主机名


# 两台服务器都安装数据库服务
yum -y install mysql mysql-server
# 关闭防火墙
service iptables stop
# 关闭Selinux安全策略机制
setenforce 0


10.0.0.21上操作
# 编辑mysql配置文件,添加完如下保存退出
vim /etc/my.cnf
# 添加如下两行

# 修改完配置文件,重启mysql服务
service mysqld restart


# 登陆至数据库
mysql
# 查看正在使用哪一个日志
show master status;
10.0.0.22上操作
# 编辑mysql配置文件,添加完如下保存退出
vim /etc/my.cnf

# 修改完配置文件,重启mysql服务
service mysqld restart


# 查看中继日志
show variables like '%relay%';

10.0.0.21上操作
# 登陆数据库,执行授权操作
grant replication slave on *.* to 'slave'@'10.0.0.22' identified by '123';
# 刷新权限
flush privileges;

10.0.0.22上操作
# 关闭从服务器的复制功能
stop slave;
# 配置从服务器
change master to
# 对应主的IP地址
master_host='10.0.0.21',
# 对应主授权时的用户
master_user='slave',
# 对应主授权时的密码
master_password='123',
# 对应主的二进制日志文件
master_log_file='mysql-bin.000003',
# 对应二进制日志文件的位置
master_log_pos=329;
# 开启从服务器的复制功能
start slave;


# 查看主从同步的状态
show slave status \G;
查看到IO和SQL线程都为Yes说明已经成功,下面可以在Master主机上创建一个数据库测试,slave是否同步;

查看主从服务器上的数据库


在主上操作
# 创建数据库
create database szm;
# 进入数据库
use szm;
# 创建表
create table skj(ID int);
# 随便在表中插入一条数据
insert into skj values(1);
在从上查看

到此,主从配置同步搭建部署完毕。
838

被折叠的 条评论
为什么被折叠?



