广告
返回顶部
首页 > 资讯 > 数据库 >Mysql 数据库 主从数据库 (主从)(主主)
  • 785
分享到

Mysql 数据库 主从数据库 (主从)(主主)

数据库mysql服务器 2023-09-28 20:09:30 785人浏览 泡泡鱼
摘要

一、什么是主从数据库 主从数据库就是把数据库架构分为主数据库和从数据库。从数据库是主数据库的备份,以提高数据的安全性,不至于一个数据库崩掉而导致整个项目也运行不起来。可以有效的防止财产的损失。一般从库只做查询操作,而主库则做更改操作,也就是

一、什么是主从数据库

主从数据库就是把数据库架构分为主数据库和从数据库。从数据库是主数据库的备份,以提高数据的安全性,不至于一个数据库崩掉而导致整个项目也运行不起来。可以有效的防止财产的损失。一般从库只做查询操作,而主库则做更改操作,也就是所谓的读写分离。

二、什么是主主数据库

所谓的主主,其实也就是两个数据库互为主从。两个库都可以对数据库进行更改和读写操作,个人感觉是主从数据库的进化版,更加的实用,但是不足之处就是,如果有自增主键的话,很大可以会产生主键冲突,所以就需要一定的算法进行改进。

三、实现原理

第一步:master记录二进制日志

在每个事务更新数据完成之前,master在二进制日志记录这些改变。Mysql将事务写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。

第二步:slave将master的binary log拷贝到它自己的中继日志

首先,slave开始一个工作线程—I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经执行完master产生的所有文件,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。

第三步:sql slave thread(SQL从线程)处理该过程的最后一步

SQL线程从中继日志读取事件,并重新执行其中的事件而更新slave的数据,使其与master中的数据一致。


废话不多说,直接操作

本次通过Docker来实现主从和主主的实现

第一步 通过docker 下载mysql

docker pull mysql:5.7

查看是否安装成功

docker images

然后创建两个mysql数据库

docker run -d -p 3333:3306 --name master -e MYSQL_ROOT_PASSWord=123456 docker.io/mysql:5.7
docker run -d -p 3334:3306 --name slave -e MYSQL_ROOT_PASSWORD=123456 docker.io/mysql:5.7

PS: 3333:3306 前边映射的是宿主机的端口 后边为docker本地端口 

        -e MYSQL_ROOT_PASSWORD=123456 设置数据库的密码

        --name slave 数据库别名

第二步 进入mysql 更改mysql的配置文件

首先获取到两个mysql的容器id

docker ps

然后进入容器更改数据库的配置 

docker exec -it 21d9f3f97d33 /bin/bash

进入到容器中 找到my.cnf这个文件然后更改里边配置即可

 首先进入后可以通过 ls命令查看文件夹,然后进入 etc 文件夹中。有些人的my.cnf文件就在这里,也有的人可能在 etc/mysql里边,博主的my.cnf就在etc/mysql里边。然后使用 vi 编辑文件即可。

PS:新安装的docker 是没有vim 需要下载下

第一步apt update //更新源第二步apt-get install vim //安装 vim

接着就可以修改配置文件(首先是master的配置信息)

[mysqld]#配置服务器的服务号server-id =1log-bin = mysql-binbinlog-ignore-db = mysql,infORMation_schemasync_binlog = 1binlog_checksum = nonebinlog_format = mixedauto-increment-increment =2auto-increment-offset= 1slave-skip-errors = all

(salve的配置信息) 

[mysqld]#配置服务器的服务号server-id =2log-bin = mysql-binbinlog-ignore-db = mysql,information_schemasync_binlog = 1binlog_checksum = nonebinlog_format = mixedauto-increment-increment =2auto-increment-offset= 2slave-skip-errors = all

如果docker的vi编辑使用不了的话,可以把文件拷贝到本地,然后在本地进行更改,本地更改完成后,再重新拷贝会docker中,代码流程如下

//把本地文件复制到docker容器docker cp 本地路径(全路径) 容器id:docker路径//注意容器id后边不能有空格 要不然会报错例如: docker cp G:\home\docker_mysql\sql1\mysql\my.cnf 5a69d9cc57b2:/etc/ mysql//把docker容器内文件复制到本地docker cp 容器id:docker路径  本地路径

更改完成后打开我们的navicat

新建两个连接分别连接到我们新建的两个数据库(如图)

 创建完成后,打开我们的主库(master)然后新建查询,依次执行一下代码

按顺序执行!!!

按顺序执行!!!

按顺序执行!!!(重要的事情说三遍)

CREATE USER salve IDENTIFIED BY 'root';CREATE USER 'salve'@'172.17.0.1' IDENTIFIED BY 'root';CREATE USER 'salve'@'192.168.2.14' IDENTIFIED BY 'root';//这里的ip 需要使用自己的IP地址grant replication slave on *.* to 'salve'@'%';grant replication slave on *.* to 'salve'@'172.17.0.1';grant replication slave on *.* to 'salve'@'192.168.2.14';//此地同理FLUSH PRIVILEGES;alter user 'salve'@'%' identified with mysql_native_password by 'root';alter user 'salve'@'172.17.0.1' identified with mysql_native_password by 'root';alter user 'salve'@'192.168.2.14' identified with mysql_native_password by 'root';//注意ip

然后执行下列代码

show master status;

 结果大致如上(由于博主是在公司电脑上测的,文章是回来写的忘给截图了,只能借用下别人的了)

记住这两个字段后边会用到

接着打开我们的从库(salve)按顺序执行以下代码

CHANGE MASTER TO MASTER_HOST = '192.168.2.14',  // 主库ip地址MASTER_USER = 'master', // 刚刚授权的账号MASTER_PASSWORD = 'root',//刚刚授权的密码MASTER_PORT = 3333,//主库映射的本地ipMASTER_LOG_FILE='mysql-bin.000001',// 主库show master status后的 file值MASTER_LOG_POS=2384,//主库 show master status后的position值MASTER_RETRY_COUNT = 60,MASTER_HEARTBEAT_PERIOD = 10000; start slave; // 停止 stop slave

完成后执行下列代码

show slave status

当下列两个字段全为 YES 的时候 则表示成功  必须全为 YES 

如若第一个不是 yes 那就说明你可能哪一步错了 重新搞一下应该就可以了

 

 到此 主从数据库就结束了 我们就实现了主从数据库,但是呢从库只能进行查询操作,不能进行更改操作,一旦进行了更改操作那么两个数据库将不再同步 需要执行以下代码才可继续同步

//先停止stop salve//表示跳过一步错误,后面的数字可变set global sql_slave_skip_counter =l;//启动start salve//查看show slave status//Slave_IO_Running: Yes //Slave_SQL_Running: Yes  //当两个都为 yes的时候说明成功了

 接下来就是我们的主从数据库之主主数据库了

从上也不难理解所谓的主主也就是,二者互为主从关系,主库更改从库会跟着更改,从库更改主库也会跟着更改

其实通过上述主从数据库的操作也就大致能猜出主主数据库是怎么操作的了

 其实实现起来也很简单,那就是在从库也添加一个授权账号和密码,在主库在进行下配置就可以了。废话不多说直接上代码

首先在从库的查询中添加以下代码,同样需要依次执行。

CREATE USER zhu IDENTIFIED BY '123456';CREATE USER 'zhu'@'172.17.0.1' IDENTIFIED BY '123456';CREATE USER 'zhu'@'192.168.2.14' IDENTIFIED BY '123456';grant replication slave on *.* to 'zhu'@'%';grant replication slave on *.* to 'zhu'@'172.17.0.1';grant replication slave on *.* to 'zhu'@'192.168.2.14';FLUSH PRIVILEGES;alter user 'zhu'@'%' identified with mysql_native_password by '123456';alter user 'zhu'@'172.17.0.1' identified with mysql_native_password by '123456';alter user 'zhu'@'192.168.2.14' identified with mysql_native_password by '123456';show master status;

然后就是 主库里进行配置了 

CHANGE MASTER TO MASTER_HOST = '192.168.2.14',  MASTER_USER = 'zhu', MASTER_PASSWORD = '123456',MASTER_PORT = 3334,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=2330,MASTER_RETRY_COUNT = 60,MASTER_HEARTBEAT_PERIOD = 10000; start slave;stop slaveshow slave status

其实你看到这也就明白,也就是进行了一次反向的主从绑定, 当然当你执行完最后一条代码看到两个YES的时候就说明,你已经成功了

码字不易,感谢大家三连支持

PS: 设置互为主从(即主主)的时候主键不要自增, 可能会出现主键冲突问题, 尽量自己设计主键的生成规则

来源地址:https://blog.csdn.net/qq_53840970/article/details/124736793

您可能感兴趣的文档:

--结束END--

本文标题: Mysql 数据库 主从数据库 (主从)(主主)

本文链接: https://www.lsjlt.com/news/420750.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql 数据库 主从数据库 (主从)(主主)
    一、什么是主从数据库 主从数据库就是把数据库架构分为主数据库和从数据库。从数据库是主数据库的备份,以提高数据的安全性,不至于一个数据库崩掉而导致整个项目也运行不起来。可以有效的防止财产的损失。一般从库只做查询操作,而主库则做更改操作,也就是...
    99+
    2023-09-28
    数据库 mysql 服务器
  • Mysql主从数据库搭建(一主两从)
    目录 1、服务器规划 2、主从同步流程 3、主从搭建 3.1、master节点上配置文件修改 3.2、master节点创建同步用户和权限 3.3、slave1和slave2节点配置文件修改 3.4、slave1和slave2节点执行同步任...
    99+
    2023-08-31
    数据库 mysql 服务器
  • MySQL数据库的主从配置(多主对一从)
    一、实验环境部署主服务器 192.168.18.42 端口3306  ==》 从服务器 192.168.18.44 端口 3306    主服务器...
    99+
    2022-10-18
  • mysql数据库主从同步之双主配置----互为主从
    Mysql数据库复制原理:整体上来说,复制有3个步骤:   (1)master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log even...
    99+
    2022-10-18
  • mysql主从数据库复制
       Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上...
    99+
    2022-10-18
  • MySQL数据库之主从同步
    一、概述:MYSQL主从同步架构是目前使用最多的数据库架构之一,主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(sl...
    99+
    2022-10-18
  • MariaDB、MySQL数据库主从同步
    1、Mysql主从同步异步概念    异步:主服务器写完日志后立即返回同步完成消息,不受从服务器的状态和影响,mysql默认为异步工作模式  &n...
    99+
    2022-10-18
  • 配置mysql数据库主从复制
        一、    原理说明 复制有以下三个步骤:   (a)主服务器把数据更改记录到二进制日志中。(这叫做二进制日志事件(binary...
    99+
    2022-10-18
  • 监控mysql数据库主从状态
    python版本2.6.6#!/usr/bin/pythonimport MySQLdbdef check_mysql():    status = True &nb...
    99+
    2022-10-18
  • 数据库做主从报错
    ##我也出了这个错误,看别人的文章解决的 文章原文链接:http://blog.csdn.net/lwei_998/article/details/41210945在一台主机上增加一个slave,启动的时候...
    99+
    2022-10-18
  • mysql数据库主从复制添加第N个从库
    添加mysql从库mysql主从复制服务器 1主 1从 ,现在要添加一个mysql从服务器,要求主库不能停止服务,以前由于不是线上的服务器,可以在主服务器上 执行 flush tables with re...
    99+
    2022-10-18
  • 【数据库】MySQL的主从复制模式
    MySQL的主从复制模式包括异步复制,全同步复制,半同步复制。MySQL默认为异步模式。MySQL5.7引入了一种新的半同步方案,并且在5.7引入了一个新的参数,rpl_semi_sync_master_wait_point,这个参数有...
    99+
    2023-09-17
    数据库 mysql java
  • 如何设置Mysql的主从数据库
    下文主要给大家带来如何设置Mysql的主从数据库,希望这些内容能够带给大家实际用处,这也是我编辑如何设置Mysql的主从数据库这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。   ...
    99+
    2022-10-18
  • Mysql数据库的主从同步配置
    目录Mysql主从同步配置1、安装两个 mysql 2、编写mysql配置文件3、初始化数据4、其他mysql 相关命令Mysql主从同步配置 配置准备: 需要两个数据库...
    99+
    2022-11-12
  • MariaDB数据库的主从配置
    1、前置工作 首先准备两台可以互相ping通的机器,两台机器可以互为主从,示例:10.210.23.77主服务器 183从服务器 2、安装 在两台机器上各自安装数据 解压MariaDB安装包; tar zxvf MariaDB.tgz cd...
    99+
    2023-10-18
    数据库 运维
  • 数据库基本主从配置
    环境需要:数据库服务器ip需在同网络内 以下环境:192.168.4.54为主服务器 192.168.4.55为从服务器#systemctl stop firewalld #systemctl disabl...
    99+
    2022-10-18
  • 数据库实现主从复制
    MySQL的主从复制,依赖于二进制日志的拉取和sql线程的转换。确认主备关系后,IO线程负责将主库的二进制日志拉取到备库,由SQL线程将二进制日志回读成具体的操作等。主备搭建主库的配置 vi /etc/my.cnf [mysqld] #在...
    99+
    2016-02-20
    数据库实现主从复制 数据库入门 数据库基础教程 数据库 mysql
  • MYSQL数据库怎么设置主从同步
    本篇文章为大家展示了MYSQL数据库怎么设置主从同步,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、配置主数据库主master : 192.168.1.132从slave : 192.168.1....
    99+
    2023-06-29
  • Zabbix 检测Mysql数据库的主从同步
    Zabbix 检测Mysql数据库的主从同步在高并发网站架构中,MySQL数据库主从同步是不可或缺的,不过经常会发生由于网络原因或者操作错误,MySQL主从经常会出现不同步的情况,那么如何监控MySQL主从...
    99+
    2022-10-18
  • 数据库---mysql主从复制读写分离
    http://m.open-open.com/m/lib/view/1413274853450.html 原理及架构分析部署前准备下载好源码包存放位置要与脚本中对应  mysql-5.5...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作