MySQL集群-主从复制配置(详细介绍)亲测可用

   之前是有一篇主从复制的博客,写到最后可能好像是一个服务器只能内网访问导致最后没有搭建成功,所以在这里还是要提醒一下,需要两个服务器都能互相访问哦!那么现在逆袭了哦!有两台自己外网的linux随便玩了

   为什么mysql要做主从复制呢,是这样的,数据库放在一个服务器性能总归是有限的,如果系统是特别高的并发量下会有瓶颈,mysql本身就会存在锁,高并发量就会导致写瓶颈,那么就会想出来一个办法就是主从复制,一个主服务器放一个数据库,一个从服务器放入另一个数据库,从服务器同步主服务器的数据。接着程序就可以做读写分离业务了。这样做主要还是提高并发量的。

那么接下来就讲一下MySQL主从复制的配置。

首先我有两台服务器:主服务器49.235.87.27    从服务器:49.235.212.228  都是外网能访问的。

1.主服务器的数据库添加配置

以下都是在49.235.87.27服务器配置

1.1 找到mysql配置文件my.cnf,我的在/etc/my.cnf 目录下,执行编辑命令

vim /etc/my.cnf

1.2 加入如下两个属性

#当前MySQL唯一标识
server-id=1
#开启binlog日志
log-bin=mysql-bin

1.3 重启MySQL

service mysql restart

1.4 重启成功

接下来注意我一直在Navicat配置,给从服务器配置用户就是没有权限,最后分配权限也不可,我看了Navicat用户权限发现是没有权限的,然后我尝试着用linux 上的mysql登录以后命令配置,因为本地的应该就是有权限的,结果是可以的。

1.5 登录mysql

#找到mysql日志
cd /usr/local/mysql/mysql-5.7.28
#登录,输入密码
./bin/mysql -u root -p

1.6 选取主服务器,对主服务器进行设置,创建主服务器的用户,允许从服务器访问的用户名密码以及ip

#创建用户
#前面的slave是用户名,后面的slave 是密码
#49.235.87.27 是允许访问的远程IP地址,这里要写从属服务器的IP
create user 'slave'@'49.235.87.27' IDENTIFIED by 'slave';

创建成功!

1.7 为slave用户授予主从复制的权限

grant replication slave on *.* to 'slave'@'49.235.212.228' identified by 'slave';

 

1.8  激活权限

flush PRIVILEGES;

1.9 查看主服务器状态

#查看主服务器的状态

show master status

File属性=主服务的日志文件

Position属性=日志最后一个编号,最近执行的日志

查看日志内容

show binlog events in 'mysql-bin.000001';

Pos属性是日志编号,End_lpg_pos属性是操作的日志编号 ,Info属性是操作的脚本

注意:主从复制其实就是按照操作的编号进行同步的,主日志又有一个操作日志比如进行插入操作,那么从表就会根据日志的编号进行同步操作。

那么到此主服务器的配置就完成了,开始从服务器的配置

以下是要在49.235.212.228从服务器操作  

在Navicat中输入如下脚本:

#CHANGE MASTER TO指向连接的是哪一台主服务器
#MASTER_HOST 主服务器的ip
#MASTER_PORT 主服务器的端口,如果主服务默认端口3306也可以不写这个
#,MASTER_USER配置主服务器设置的用户
#MASTER_LOG_FILE当前从哪个日志文件读取,写上主服务器的日志文件
#MASTER_LOG_POS :这里填写最后操作的日志,那么3319之后的操作编号都会进行主从复制
CHANGE MASTER TO
     MASTER_HOST='49.235.87.27'
    ,MASTER_PORT=3306
    ,MASTER_USER='slave'
    ,MASTER_PASSWORD='slave'
    ,MASTER_LOG_FILE='mysql-bin.000001'
    ,MASTER_LOG_POS=3319

 开始主从复制

start slave; 

查看从服务器的状态

show slave status;

 Slave_IO_Running 代表主从通信是否正常

 Slave_SQL_Running代表SQL是否运行正常

然后接下来就是测试了,在主服务器新建库和表,看看从服务器会不会同步!

主服务器建立一个test_sjk,从服务器也相应的创建了

咱们再来创建test表,从服务器也相应的创建了

注意从服务器只同步主的!在从服务器里做操作,主服务器不变

为什么mysql要做主从复制(读写分离)?

   如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低。为了提升业务系统性能,优化用户体验,可以      通过做主从复制(读写分离)来减轻主数据库的负载。而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数      据丢失。

  1. 数据热备,主服务器宕机,可切换从服务器继续工作。
  2. 架构扩展:业务越大,i/o访问频率越高,单机无法满足,此时做多库的存储,降低磁盘io访问的频率,提高单个io的性能。
  3. 读写分离使数据库能支撑更大的并发。  

那么这个配置就是读写分离业务的基础,只有主从同步,才能做读写分离的操作,那么有时间还会在继续研究读写分离。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值