mysql5.7 主从复制

1.为什么要主从复制

  • 读写分离:主服务器负责写,从服务器负责读
  • 缓解了锁的争用,即使主服务器中加了锁,依然可以进行读操作;
  • 从服务器可以使用 MyISAM,提升查询性能以及节约系统开销;
  • 增加冗余,提高可用性
  • 数据实时备份,当系统中某个节点发生故障时,可以方便的故障切换
  • 降低单个服务器磁盘I/O访问的频率,提高单个机器的I/O性能

2、环境准备

两台服务器或者虚拟机(centos7)
下载mysql5.7版本的数据库

3、主机配置文件修改

vim /etc/my.cnf
在mysqld模块下添加
log-bin=master-bin #二进制文件名称
binlog-format=ROW  #二进制日志格式,有row、statement、mixed三种格式,row指的是把改变的内容复制过去,而不是把命令在从服务器上执行一遍,statement指的是在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。mixed指的是默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
server-id=1		   #id必须不能重复
binlog-do-db=mydbs  #同步的数据库名称

4、从机配置

#修改配置文件,执行以下命令打开mysql配置文件
vi /etc/my.cnf
#在mysqld模块中添加如下配置信息
log-bin=master-bin	#二进制文件的名称
binlog-format=ROW	#二进制文件的格式
server-id=2			#服务器的id

5、重启主机服务

systemctl restart mysqld.service

6、登录主服务器查看状态

#登录mysql数据库
mysql -uroot -p
#查看master的状态
show master status;

7、重启从服务器并进行相关配置

#重启mysql服务
systemctl restart mysqld.service
#登录mysql
mysql -uroot -p
#连接主服务器
change master to master_host='主机ip',master_user='root',master_password='123456',master_port=3306,master_log_file='master-bin.000001',master_log_pos=154;//master-bin.000001',master_log_pos=154;都是从主机show master status中查看的
#启动slave mysql中
start slave
#查看slave的状态 mysql中
show slave status\G(注意没有分号)

然后在主机上创建在配置中配置的数据库,从机中就会数据同步,也就是上边配置的mydbs

你可能感兴趣的:(mysql,服务器,数据库)