Keep Thinking Keep Moving

mysql 标签

主从复制解决的问题

  • 数据分布:通过复制将数据分布到不同地理位置
  • 负载均衡:读写分离以及将读负载到多台从库
  • 备份:可作为实时备份
  • 高可用性:利用主主复制实现高可用

复制原理

复制的原理其实很简单,仅分为以下三步:

  1. 在主库上把数据更改记录到二进制日志binary log中,具体是在每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志中去,Mysql会按照事务提交的顺序来记录二进制日志的。日志记录好之后,主库通知存储引擎提交事务。

  2. 从库会启动一个IO线程,该线程会连接到主库。而主库上的binlog dump线程会去读取主库本地的binlog日志文件中的更新事件。发往从库,从库接收到日志之后会将其记录到本地的中继日志relay-log当中。

  3. 从库中的SQL线程读取中继日志relay-log中的事件,将其重放到从库中。(在5.6版本之前SQL线程是单线程的,使得主从之间延迟更大)

两种复制方式

日志文件中记录的到底是什么呢?
mysql支持了两种日志格式,这两种日志格式也体现了各自的复制方式

2019-09-30 0 评论 1,607 浏览
阅读全文

先准备两台Mysql数据库

  • 主数据库:192.168.0.106
  • 从数据库:192.168.0.107

如果还没创建好数据库的话可以参考我之前的mysql搭建过程。

docker安装mysql小白教程

1.在主库创建同步账户Slave

CREATE USER 'slave'@'%'  IDENTIFIED BY 'slave123456';

如果出现以下异常的话。

ERROR 3009 (HY000): Column count of mysql.user is wrong. 
Expected 45, found 43. Created with MySQL 50645, now running 50727. 
Please use mysql_upgrade to fix this error.

2019-09-28 0 评论 346 浏览
阅读全文