Linux系统中为MySql设置主从复制

MySql设置主从复制

  • 一、数据库主从复制的意义
  • 二、MySql主从复制的原理
  • 三、MySql主从复制的配置步骤
    • 0. 配置-前置条件
    • 1. 配置-主库Master
      • 第一步:修改MySql数据主库Master的配置
      • 第二步:重启MySql服务
      • 第三步:在Master的服务中为Slave创建一个用户,设置响应权限
      • 第四步:登录MySql数据库,查看主库状态,记录下结果中的File和Position值
    • 2. 配置-从库Slave
      • 第一步:修改从库的配置文件
      • 第二步:重启MySql服务
      • 第三步:登录MySql Slave,修改其Master
      • 第四步:登录MySql数据库,查看从数据库的状态
    • 3. 测试

一、数据库主从复制的意义

  1. 避免单一数据库硬盘损坏导致数据丢失
  2. 可以将查询请求中读操作和写操作的压力,分担到不同的数据库服务器上,降低单台数据库服务器的压力

二、MySql主从复制的原理

MySql的主从复制是基于MySql数据库自带的二进制日志功能(binary log),是一个异步的复制过程。
一台或多台数据库从库(slave)从一台MySql主库(master)进行二进制日志的复制,然后再进行日志的解析并应用到自身,最终实现从库的数据库和主库的数据保持一致。

MySql主从复制的过程分三步:

  1. master将改动记录到二进制日志(binary log)
  2. slave将master的binary log拷贝到它的中继日志(relay log)
  3. slave重做中继日志中的事件,将改变应用到自己的数据库中

三、MySql主从复制的配置步骤

0. 配置-前置条件

提前准备好两台服务器,分别安装MySql并启动服务成功
e.g.:

  • 主库Master 192.168.119.129
  • 从库Slave 192.168.119.128

可以使用两台虚拟机或云服务器,之后用FinalShell之类的连接工具进行控制。推荐使用虚拟机,一台虚拟机完成MySql的安装和配置后,完全克隆一下就行。不建议使用Docker,在实际的生产流程里,数据库不太可能安装在容器中,真这么干可能会被人打死。容器的销毁,比之服务器的物理损坏,要容易得多。

Linux系统中为MySql设置主从复制_第1张图片

1. 配置-主库Master

第一步:修改MySql数据主库Master的配置

修改MySql数据库的配置文件 /etc/my.cnf

[mysqld]
log-bin=mysql-bin #[必须]启用二进制日志
server-id=100 # [必须]服务器唯一ID

Linux系统中为MySql设置主从复制_第2张图片

第二步:重启MySql服务

Bash命令:systemctl restart mysqld

配置修改完成后,重启对应服务器的MySql服务使配置生效,如果没报错,基本就是重启成功了。

在这里插入图片描述

第三步:在Master的服务中为Slave创建一个用户,设置响应权限

登录MySql后执行以下语句,“%”意为允许所有IP访问。

GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456';

PS:这一SQL语句的作用是创建一个用户xiaoming,密码为Root@123456,并且xiaoming用户授予REPLICATION SLAVE权限,这一权限常被用于建立主从复制时所需要用到的用户权限,也就是slave必须被master授权具有该权限的用户,才能通过该用户复制。

在这里插入图片描述

第四步:登录MySql数据库,查看主库状态,记录下结果中的File和Position值

show master status

Linux系统中为MySql设置主从复制_第3张图片
其中File为日志文件的名称,Position为当前改动的位置。
File:mysql-bin.000002
Position:441

注意在显示了这里的状态栏之后,不要再在主库中进行任何操作,否则日志文件的名称和位置都会发生改变。

2. 配置-从库Slave

第一步:修改从库的配置文件

修改MySql Slave的配置文件 /etc/my.cnf , 在配置中增加如下的一行。

[mysqld]
server-id=101 #[必须]服务器唯一ID

第二步:重启MySql服务

使对配置的修改生效

systemctl restart mysqld

第三步:登录MySql Slave,修改其Master

登录MySql,执行下面的SQL:

change master to master_host='192.168.119.129',master_user='xiaoming',master_password='Root@123456',master_log_file='mysql-bin.000002',master_log_pos=441;

start slave;

Linux系统中为MySql设置主从复制_第4张图片

第四步:登录MySql数据库,查看从数据库的状态

执行以下SQL

show slave status \G;

\G 意为格式化输出,可以方便阅读
Linux系统中为MySql设置主从复制_第5张图片
这时,这两个数据库的主从复制便已经配置完成,可以正常运行。

3. 测试

这时,如果在主库中新建一个数据库项目,从库中也会出现一个一样的数据库项目:
Linux系统中为MySql设置主从复制_第6张图片

Linux系统中为MySql设置主从复制_第7张图片

你可能感兴趣的:(架构和落地,linux,mysql,服务器)