首页 > 数据库 >读写分离——Mysql主从复制

读写分离——Mysql主从复制

时间:2023-04-08 17:11:51浏览次数:39  
标签:主库 主从复制 log 数据库 master Mysql 读写

问题说明:读和写所有压力都由一台数据库承担,压力大,数据库服务器磁盘损坏则数据丢失,单点故障

写操作——insert、update、delete——》Master主库——数据同步——》Slave从库《——读操作——

                          Mysql主从复制    

 

 

Mysql主从复制

Mysql主从复制是一个异步复制的过程,底层是基于Mysql自带的二进制日志功能。就是一台或多台Mysql数据库(slave,即从库)从另一台Mysql数据库(master,即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。Mysql主从复制是Mysql数据库自带功能,无需借助第三方工具。

Mysql主从复制过程分为三步:

* master将改变记录到二进制日志(binary log)

* slave将master的binary log拷贝到它的中继日志(relay log)

* slave重做中继日志中的事件,将改变应用到自己的数据库中

 

两个虚拟机各自安装mysql,其中一台用作主库(Master),一台用作从库(Slave);

配置-主库Master:

第一步:修改Mysql数据库的配置文件/etc/my.cnf

[mysqld]

log-bin=mysql-bin      #[必须]启用二进制文件

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

第二步:重启Mysql服务

systemctl restart mysqld

第三步:登录Mysql数据库,执行下面SQL

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

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

第四步:登录Mysql数据库,执行下面的SQL,记录下结果中File和Position的值

show master status;   查看Master的状态,执行完此SQL后不要再执行任何操作

配置-从库Slave

第一步:修改Mysql数据库的配置文件/etc/my.cnf

[mysqld]

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

第二步:重启mysql服务

systemctl restart mysqld

第三步:登录Mysql数据库,执行下面SQL

change master to

master_host  = '主库ip', master_user='xiaoming',master_password='Root@123456',master_log_file='mysql-bin.000001',master_log_pos=439;

start slave;

 [master_log_file和master_log_pos为主库执行show master status查询的结果]

show slave status\G    查看数据库状态。

 

测试主从复制能否实现:

主库任意创建一个数据库和表。从库刷新后也会出现相同的数据库和表。

 

 

 

      

标签:主库,主从复制,log,数据库,master,Mysql,读写
From: https://www.cnblogs.com/fxzm/p/17297516.html

相关文章

  • mac python 安装mysqlclient的问题
    问题1: 无法安装mysqlclient报错信息:   解决方法:1. 安装mysql-clientbrewinstallmysql-client2、配置环境变量vi~/.bash_profileexportPATH=/opt/homebrew/opt/mysql-client/bin:$PATHsource~/.bash_profile3、安装mysqlclientpipinsta......
  • 配置Mysql允许远程访问
    配置Mysql允许远程访问 把Mysql安装在服务器上,然后在本地访问,发现提示Host'***'isnotallowedtoconnecttothisMySQLserver,错误提示很明确,就是目标主机上的Mysql服务不允许连接。1.打开命令提示符,执行Mysql-uroot-proot命令(如果提示Mysql不是内部或外部命令什么......
  • Linux系统下安装MySQL8.0图文教程
    Linux系统下安装MySQL8.0图文教程1.环境准备1.1. 操作系统Centos7.3,中标麒麟7.61.2. 防火墙配置(可关闭防火墙,不建议)操作系统开启防火墙(注意:不建议把防火墙关闭,应该设置开放对应的端口,或者开放给哪些IP地址的哪些端口)。(1) 防火墙端口开放设置:https://www.cnblogs.com/liu......
  • MySQL外键约束
        ONDELETERESTRICT(约束):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。NOACTION:意思同RESTRICT.即如果存在从数据,不允许删除主数据。CASCADE(级联):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外......
  • MySQL必会必知笔记
    1.简单使用[root@mysql~]#mysql-uroot-p123<hellodb_innodb.sql所有命令都是在hellodb库中执行,此库可以在MySQL官网下载进入库[root@mysql~]#mysql-uroot-p123查询所有的库mysql>showdatabases;进入库mysql>usehellodb;查询库里的所有表mysql>showtab......
  • MYSQL进阶之索引
    1、什么是索引官方介绍索引是帮助MySQL高效获取数据的数据结构。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往是存储在磁盘上的文件中的(可能存储在单独的索引文件中,也可能和数据一起存储在数......
  • 力扣1070(MySQL)-产品销售分析Ⅲ(中等)
    题目:销售表 Sales: 产品表 Product:编写一个SQL查询,选出每个销售产品 第一年销售的产品id、年份、数量 和价格。结果表中的条目可以按任意顺序排列。查询结果格式如下例所示:示例1: 来源:力扣(LeetCode)链接:https://leetcode.cn/problems/product-sales-analysis......
  • Mysql_无法删除数据库的处理方法
    问题现象使用Navicat删除数据库一直转圈定位问题执行 SHOWPROCESSLIST;  提示元数据无法被锁定执行  select*frominformation_schema.innodb_trx\G; 发现有进程一直处于运行中解决方法kill进程id 重新查看没有 Waiting进程,showdatabases; 发现库已被......
  • 0-MySQL常见错误代码及代码说明
    先转载一下优秀作者的文章,后期会逐渐完善! 作者:理想三旬出处:https://www.cnblogs.com/operationhome/p/9095522.html......
  • 力扣1069(MySQL)-产品分析Ⅱ(简单)
    题目:编写一个SQL查询,按产品idproduct_id来统计每个产品的销售总量。查询结果格式如下面例子所示: 解题思路:没有用到product表,直接在sales表中使用聚合函数:1selectproduct_id,sum(quantity)astotal_quantity2fromsales3groupbyproduct_id;......