MySQL主从复制

主从复制

主从复制(也称 AB 复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。

1. 复制的基本原理

slave会从master读取binlog来进行数据同步。

复制原理图

MySQL复制过程分为三步:

  1. master将改变记录到二进制日志(binary log)中;这些记录过程叫做二进制日志事件(binary log events)。
  2. slave将master的binary log events拷贝到它的中继日志(relay log)。
  3. salve重做中继日志中的事件,将改变应用到自己的数据库中;MySQL的复制是异步的且串行化的。

2. 复制的基本原则

复制需遵从一些基本规则,规则如下:

  1. 每个slave只有一个master
  2. 每个master只能有一个唯一的服务器ID
  3. 每个master可以有多个slave

3. 复制的最大问题

复制的最大问题就是数据复制有延迟

4. 一主一从常见配置

该配置需满足mysql版本一致且后台以服务运行,主从都配置在mysqld结点下,最好小写。

4.1 主机配置

我的主机选择的是windows,配置文件是my.ini,参考配置文件如下

# configuration a master-salve replication
# master server id
server-id=1
# enabled binary log
log-bin=D:\MySQL\mysql-5.7.23-winx64\mysqlbin
# enabled error log [optional]
log-err=D:\MySQL\mysql-5.7.23-winx64\mysqlerr
# temp directory [optional]
tmpdir=D:\MySQL\mysql-5.7.23-winx64\mysqltmp
# close read-only
read-only=0
# set to ignore database [optional]
binlog-ignore-db=mysql
# set need database [optional]
# binlog-do-db=xxx
  • server-id=1:主服务器唯一ID,[必须]
  • log-bin=本地路径/mysqlbin:启用二进制日志,[必须]
  • log-err=本地路径/mysqlerr:启用错误日志,[可选]
  • tmpdir=本地mysql路径:临时文件目录,[可选]
  • read-only=0:表示主机读写都可
  • binlog-ignore-db=mysql:设置不复制的数据库,[可选]
  • binlog-do-db=xxx:设置需要复制的数据库,[可选]

如WindowsMySQL无法启动,主机配置中仅保留[必须]项即可。

4.2 从机配置

我的从机使用的是WSL,mysql配置文件位于/etc/mysql

vim /etc/mysql/my.cnf
  • 找到里面的server-id选项,开启并设置为2
  • 找到并开启log_bin

4.3 重启服务和关闭防火墙

配置过的MySQL都需重启一下服务

4.4 主机建立账户并授权

  • 授权
GRANT REPLICATION SLAVE ON *.* TO 'zero'@'127.0.0.1' IDENTIFIED BY '123456';
  • 刷新权限
FLUSH PRIVILEGES;
  • 查询master状态,记录下FilePosition的值

master status

4.5 从机配置复制的主机

  • 配置连接到主机,注意:所有参数必须是主机最新参数!
CHANGE MASTER TO MASTER_HOST='127.0.0.1',
MASTER_USER='zero',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysqlbin.000001',MASTER_LOG_POS=1700
  • 启动从服务器复制功能
start slave;
  • 查看从机状态,看是否配置成功,主要查看Slave_IO_Running:YesSlave_SQL_Running:Yes这两个参数,都是Yes代表配置成功。

slave状态

4.6 建立数据库,测试功能

  • 主机新建数据库,新建表,插入数据
CREATE DATABASE test_tmp_db;
USE test_tmp_db;
CREATE TABLE dog(
  id INT NOT NULL,
  NAME VARCHAR(20)
);
INSERT INTO dog VALUES(1,"www");
  • 从机查看数据库,使用数据库并查询
SHOW DATABASES;
USE test_tmp_db;
SELECT * FROM dog;

可以看到所有操作都同步到从机了。

4.7 停止复制功能

使用stop slave;命令停止从主机同步数据。


  转载请注明: Zero的博客 MySQL主从复制

 上一篇
JVM基础 JVM基础
1. JVM体系结构概述JVM是运行在操作系统之上的,它与硬件没有直接的交互,下图示JVM体系结构图: 1. 类装载器(ClassLoader)负责加载class文件,class文件在文件开头有特定的文件标识(cafe babe),将c
2020-04-05
下一篇 
MySQL锁机制 MySQL锁机制
1. MySQL锁机制锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的
2020-03-29
  目录