mysql主从复制,读写分离

一、创建三台服务器,搭建三个mysql环境
遇到的问题:
(1)在设置静态IP时,虚拟机无法访问外部物理机
解决办法:物理的vm8改静态,然后vm哪里也设置跟vm8的nat直连,然后改配置,重启网络,就可以啦。
vm8是vm用来跟linux类操作系统的虚拟网卡
vm1是vm用来跟win系统的虚拟网卡
所以装linux都和你vm8的ip保持一致,win就跟vm1的一样,这是敏哥的理解
(2)由于物理机的vm8设置了静态ip,原来设置的MySQL用户权限无法被访问
解决办法:a:将用户权限改为任意ip都可访问
b.将原来的权限ip更改为现在的ip
命令:drop user  ‘username’@’ip’
    Grant all privileges on *.* to 'test'@'%'identified
**二、mysql主从**
https://blog.csdn.net/h1228322088/article/details/116673275
1.什么是mysql主从
所谓mysql主从就是建立两个完全一样的数据库,其中一个为主要使用的数据库,另一个为次要的数据库,一般在企业中,存放比较重要的数据的数据库服务器需要配置主从,这样可以防止因数据库服务器宕机导致数据丢失,还能保证业务量太多、数据太多和访问人数太多时服务的质量(服务器响应速度),还能提供故障切换、读写分离、和备份等等功能。
2.主从形式
一主一从
主主复制:当作备份使用,当主服务器出现故障时,另一个主服务器会自动顶上。
一主多从:用来实现读写分离,当写操作较少时,读操作较多时使用,主服务器用来实现写        操作,从服务器用来实现读操作。
多主一从:用来实现读写分离,当写操作较多时,读操作较少时使用,主服务器用来实现写        操作,从服务器用来实现读操作。
联级复制
3.传统主从和gtid主从的区别
(1)传统主从
传统主从复制主要是基于二进制日志文件位置的复制,因此主必须启动二进制日志记录并建立唯一的服务器ID,复制组中的每个服务器都必须配置唯一的服务器ID。如果您省略server-id(或者明确地将其设置为其默认值0),则主设备将拒绝来自从设备的任何连接。
(2)gtid主从
MySQL 5.6 的新特性之一,全局事务标识符(GTID)是创建的唯一标识符,并与在源(主)服务器上提交的每个事务相关联。此标识符不但是唯一的,而且在给定复制设置中的所有服务器上都是唯一的。所有交易和所有GTID之间都有一对一的映射关系 。它由服务器ID以及事务ID组合而成。这个全局事务ID不仅仅在原始服务器上唯一,在所有存在主从关系 的mysql服务器上也是唯一的。正是因为这样一个特性使得mysql的主从复制变得更加简单,以及数据库一致性更可靠。一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或者主从不一致。
4.主从复制的原理
主库将用户所有的写操作(增删改,查除外)记录到binlog日志当中并且生成一个log dump线程,从库生成I/O和SQL线程,从库的I/O线程向主库的log dump线程以I/O流的形式发送请求,主库的log dump线程收到从库I/O线程的请求后将binlog日志发送给从库,从库I/O线程收到binlog日志后将其写道relay log(中继日志)文件中,再由从库的SQL线程将relay log文件中的日志解析成sql脚本,最后执行生成的sql脚本文件,来实现主从的操作一致,达到最终数据一致的目的。
5.传统主从复制配置步骤:
确保所有主从主机的防火墙已经关闭
systemctl stop firewalld
确保主数据库和从数据库里的数据一样
再主数据库里创建一个同步账号并且授权给从数据库使用
grant all privileges on *.* to 用户名@'从1ip' identified by 密码;
grant all privileges on *.* to 用户@'从2ip' identified by 密码;
刷新数据库
配置主数据库配置文件
Cd  /ect/mysql/mariadb.conf.d
Vim 50-server.cnf

server-id=1 //唯一id,主数据库必须比从数据库小 
log-bin=mysql_bin

重启mysql
Systemctl restart mysql

使用授权的账号登录mysql
Mysql -umuwentao -p
show master status;

记录下File和Position的值:File为日志文件名,Position为数据库pos
配置从1数据库配置文件
server-id=2 //唯一id,主数据库必须比从数据库小 
log-bin=mysql_bin
重启mysql
Systemctl restart mysql

使用授权的账号登录mysql
Mysql -umuwentao -p
change master to
       master_host='从1ip',
       master_user='授权用户名',
       master_password='授权密码',
       master_log_file='File值',
       master_log_pos=Position值;
配置从2数据库配置文件
server-id=3 //唯一id,主数据库必须比从数据库小 
log-bin=mysql_bin
重启mysql
Systemctl restart mysql

使用授权的账号登录mysql
Mysql -umuwentao -p
change master to
       master_host='从2ip',
       master_user='授权用户名',
       master_password='授权密码',
       master_log_file='File值',
       master_log_pos=Position值;
至此,mysql主从搭建就已完成,主表中插入数据,两个从表都会生成相应的数据,主表用于写,从表用于读。实现读写分离

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值