认真研究MySQL主从复制

MySQL主从复制简单来讲就是slave会从master读取binlog来进行数据同步,其是异步且串行化的。

【1】主从复制介绍

主从复制过程

  • master将改变记录到二进制日志(binary log)文件,这些记录过程叫做二进制日志事件,binary log events。
  • slave将master的binary log event拷贝到它的中继日志(relay log)。
  • slave重做中继日志中的事件,将改变应用到自己的数据库中

认真研究MySQL主从复制_第1张图片

复制的基本原则

  • 每个slave只有一个master
  • 每个slave只能有一个唯一的服务器ID
  • 每个master可以有多个slave

主从复制的应用

最典型的应用场景就是读写分离,在master进行写操作,在slave进行读操作来提高吞吐量。

【2】主从复制配置

这里的配置指的是MySQL的my.cnf文件[mysqld]下进行配置。

① 主MySQL配置

主服务器唯一ID

server_id=1

# master 读写都可以
read-only=0

# 设置需要复制的数据库,如果不设置,则默认同步除忽略的之外的数据库
binlog-do-db=需要复制的主数据库名字

# 设置忽略的数据库
binlog-ignore-db=mysql

启用二进制日志

log-bin=自己本地路径/mysqlbin

启用错误日志

log-err=自己本地路径/mysqlerr

根目录

basedir="自己本地路径"

临时目录

tmpdir="自己本地路径"

数据目录

datadir="自己本地路径/Data/"

② 从服务器配置

主要是从服务器唯一ID与二进制日志文件配置。

server-id=2

# 如果默认已经配置,无需更改
log-bin=mysql-bin

修改完配置需要重启MySQL服务。

③ 开启复制

在master上建立账户并授权给slave。

grant replication slave on *.* to 'jane'@'从机数据库IP' identified by '123456';

flush privileges;

查询master状态,并记录下file和position的值

show master status

认真研究MySQL主从复制_第2张图片

到这里暂时不要操作master,防止状态值变化,接下来设置slave。

启动从服务器复制:

change master to master_host='主机IP',master_user='jane',master_password='123456',
master_log_file='FILE名字',master_log_pos=position数字;

start slave;

查看slave状态

show slave status

如果下面两个参数都是yes,则说明主从复制成功。

Slave_IO_Running:Yes
Slave_SQL_Running:Yes

停止从复制功能

stop slave

你可能感兴趣的:(#,MySQL高级,MySQL主从复制)