暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Mysql主从复制知识点

鲸鱼手记 2021-09-03
305

点击上方蓝色“鲸鱼手记”,关注并选择“设为星标”

作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写出来与大家一起交流,也希望采用这种方式记录自己的学习之旅。


  • 主从复制原理

  • 应用场景

  • 配置 Master 和 Slave

    • 创建数据同步用户

    • 配置 Master 修改 my.cnf

    • 配置 Slave 修改 my.cnf

  • 从机上需要进行 CHANGE MASTER TO 操作

    • 语法详解

    • 示例


主从复制原理

Mysql 中有一种日志叫做 bin 日志(二进制日志)。这个日志会记录下所有修改了数据库的 SQL 语句(insert,update,delete,ALTER TABLE,grant 等等)。主从复制的原理其实就是把主服务器上的BIN日志复制到从服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据相同了。

总共由三个线程完成

  1. 主服务将数据的更新记录保存到二进制日志--主服务器进程
  2. 从服务将主服务的二进制日志复制到本地中继日志--从服务 IO 进程
  3. 从服务读取中继日志,更新本地数据--从服务 SQL 进程

应用场景

从服务器做为数据的备份服务器。当服务器压力比较大时可以使用主从服务器实现读、写分离来分流减轻服务器的压力。

配置 Master 和 Slave

创建数据同步用户

在Master数据库创建数据同步用户,授予用户 gokuit REPLICATION SLAVE 权限,用于在主从库之间同步数据。

create user gokuit;
grant REPLICATION SLAVE on *.* to 'gokuit'@'%' IDENTIFIED by 'gokuit';
flush privileges;

复制

配置 Master 修改 my.cnf

打开配置文件vi etc/my.cnf

[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin

复制

配置 Slave 修改 my.cnf

打开配置文件vi etc/my.cnf

[mysqld]
## 设置server_id,注意要唯一
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin

复制

从机上需要进行 CHANGE MASTER TO 操作

配置mysql主从复制时,在从机上需要进行CHANGE MASTER TO操作,以确定需要同步的主机 IP,用户名,密码,binlog 文件,binlog 位置等信息。

语法详解

master_host :Master 的地址,指的是容器的独立 ip,可以通过docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id
查询容器的 ip

master_port:Master 的端口号,指的是容器的端口号

master_user:用于数据同步的用户

master_password:用于同步的用户的密码

master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值

master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值

master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

示例

change master to master_host='192.18.0.2', master_user='gokuit', master_password='gokuit', master_port=3306, master_log_file='mysql-bin.000003', master_log_pos= 154, master_connect_retry=30;

复制




文章转载自鲸鱼手记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论