MySQL 实践篇 —— 主从复制

MySQL 实践篇 —— 主从复制


1、概述

​  主从复制 就是 把 主服务器(Master)上的 二进制日志文件(binlog,记录了所有修改数据库的操作)复制到 从服务器(Slave)上执行一遍,保证 从服务器 上的数据 和 主服务器 上的数据 保持一致。

​  工作过程:

  • 主服务器 把数据更改 记录到 二进制日志文件 中
  • 从服务器 开启一个 I/O 线程 通过 MySQL 协议 把 主服务器 的 二进制日志文件 复制到自己的 中继日志文件(relay log)中
  • 从服务器 开启一个 SQL 线程 执行 中继日志文件 中的内容

补充:I/O 线程 和 SQL 线程

  • I/O 线程:负责读取 主服务器的二进制日志文件,并将其保存为 中继日志文件
  • SQL 线程:执行 中继日志文件 中的内容

在这里插入图片描述



2、实践

1、在 E 盘 建立 master 和 slave 目录

2、找到本机的 MySQL 安装路径 将 整体文件夹 压缩打包

3、将 压缩包 分别拷贝到 master 和 slave 目录下,并完成解压

4、配置 MySQL 的系统文件 my.ini

  • master 的 my.ini 配置

    ​ 用 记事本(或其它编辑器)打开 master 根目录 下的 my.ini,在 [mysqld] 下 新增 log-bin=mysql-bin server-id=3306 并 保存关闭。

    [mysqld]
    log-bin=mysql-bin	# 表示要生成的二进制日志文件名称
    server-id=3306
    
  • slave 的 my.ini 配置

    ​ 用 记事本(或其它编辑器)打开 slave 根目录 下的 my.ini,将 [client] 下 的 port(端口号)从 3306 改成 3307;将 [mysqld] 下 的 port 从 3306 改成 3307,新增 log-bin=mysql-bin server-id=3307 并 保存关闭。

    [mysqld]
    log-bin=mysql-bin
    server-id=3307
    
    port=3307
    
    [client]
    port=3307
    

5、启动 master 服务器,并创建一个专门用于复制的账户

  • 打开命令窗口 cmd,进入 master 的 bin 目录,输入启动服务器的命令:mysqld --console,启动服务器

  • 打开命令窗口 cmd,进入 master 的 bin 目录,输入 mysql -u root -p,登录到 master 服务器

  • 创建 复制账号,用户名 repuser,密码 123

    mysql>Create user 'repuser'@'localhost' identified by '123';
    mysql>grant replication slave on *.* to 'repuser'@'localhost';
    mysql>flush privileges;
    mysql>show master status \G 	# 显示 master 状态; \G 以行进行显示,后面不用加';'
    

在这里插入图片描述

在这里插入图片描述

6、启动 slave 服务器,完成 slave 的配置

  • 打开命令窗口 cmd,进入 slave 的 bin 目录, 输入启动服务器的命令:mysqld --console, 启动服务器

  • 打开命令窗口 cmd,进入 slave 的 bin 目录,输入 mysql -u root -p 登录到 slave 服务器

  • 完成 主从复制 的相关配置

    mysql>change master to master_host='localhost',master_port=3306,master='repuser',master_password='123',master_log_file='mysql-bin.000001',mastet_log_pos=0;
    
  • 启动 slave 并 检查其状态

    mysql>start slave;
    mysql>show slave status \G
    

在这里插入图片描述

在这里插入图片描述

注:检查 Slave_IO_Running 线程 和 Slave_SQL_Running 线程 是否都为 yes,如果是,表示 主从复制服务 已建立;如果否,表示 主从复制服务 未建立。

7、主从复制测试

(1)在 master 客户端,创建一个数据库 BankDB,创建成功后,在 slave 客户端 查看有没有出现 BankDB:show databases;

DROP SCHEMA IF EXISTS BankDB ;
CREATE SCHEMA IF NOT EXISTS BankDB default character set gbk;
USE BankDB;

Create table Bank(BankID int, Cname char(20), Balance decimal(10,2));
insert into Bank values (20181211,'张三', 20000);
insert into Bank values (20181212,'李四', 10000);
insert into Bank values (20181213,'王五', 20000);

master 客户端:

在这里插入图片描述

slave 客户端:

在这里插入图片描述

(2)在 master 客户端,修改 Bank 表的数据, 在 slave 客户端 查看是否更新成功

update Bank set Balance=Balance + 99;

master 客户端:

在这里插入图片描述

slaver 客户端:

在这里插入图片描述

(3)在 slave 关闭状态下(slave 客户端:stop slave,slave 服务端:Ctrl+C), 在 master 客户端 新建一个数据库 BankDB1;重新启动 slave,在 slave 客户端 查看有没有出现新建的数据库 BankDB1

DROP SCHEMA IF EXISTS BankDB1;
CREATE SCHEMA IF NOT EXISTS BankDB1 default character set gbk;
USE BankDB1;

Create table Bank(BankID int, Cname char(20), Balance decimal(10,2));
insert into Bank values (20181211,'张三', 20000);
insert into Bank values (20181212,'李四', 10000);
insert into Bank values (20181213,'王五', 20000);

master 客户端:

在这里插入图片描述

slaver 客户端:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值