Mysql主从数据库使用

  • 读写分离的好处:
  1. 将读写操作分离到不同数据库,避免服务器出现性能瓶颈
  2. 主服务器进行写操作时,不影响查询应用服务器的查询性能,降低阻塞,提高并发
  3. 数据拥有多个容灾副本,提高数据安全性,当主服务器故障时,可立即切换到其他其他服务器,提高系统可用性
  • 读写分离基本原理:
  1. 让主数据处理事务增删改操作,而从数据库处理查询操作
  2. 数据库复制被用来把事务性操作导致的变更同步到其他从数据库
  3. 主从数据库不是实时同步,就算网络良好,也存在某一瞬间主从数据不一致
  • 图解:

主服务器上对数据操作保存在二进制日志中,然后通过i/o线程读写给中继日志,类似生产者消费者模式,一旦生产就给消费者使用,sql线程再根据中继日志进行重演

  • 主从复制实现:

工具:主库--云服务器Windows的mysql5.7,从库--云服务器Linux的mysql5.7(看网上说,mysql5.5到5.7是个坑,注意主从数据库版本问题)

1、关闭mysql服务,主库my.ini配置,配置完重启服务:

server-id=1
log-bin=mysql-bin
binlog-do-db=masterdb
log-bin="c:/masterslave"
log-slave-updates

2、主库添加一个账户
 

grant replication slave,super,reload on *.* to 'masterUser'@'xxx.xx.xx.xxx' identified by 'masterPassword';

flush privileges;

3、打开从库

4、打开主库查看日志文件名称

5、根据主库上面的数据来配置从数据库

 change master to master_host='xxx.xxx.xxx.xxx',master_user='masterUser',master_password='masterPassword',master_log_file='masterslave.000003',master_log_pos=154;

6、从库

7、测试:

在主库中操作

在从库中查看是否自动执行了sql,和主库保持一致

经查,从库创建了masterdb数据库,test表也插入了一行记录,主从复制成功!

如果从库出现1236或者1049错误,推荐一篇博客,解决方法类似

https://blog.csdn.net/zhu_lizhen/article/details/75043894

8、可以使用MySQL+ proxy(Lua脚本)或者是直接使用Amoeda来实现读写分离

猜你喜欢

转载自blog.csdn.net/qq_37575994/article/details/100517239
今日推荐