MySQL的双主模型

小米万兆路由器里的Docker安装可道云(Kodexplorer)私有网盘 小米2022年12月份发布了万兆路由器,里面可以使用Docker。 今天尝试在小米的万兆路由器里安装[可道云](http://kodcloud.com/)(Kodexplorer)私有网盘。 阅读详情

1、双主模型的概述
为了减少主库的写操作压力,有时MySQL数据库会使用双主模型,即两个数据库服务器互为主从,以保证数据的冗余性和负载用户的写操作压力。
主主模式可能发生的问题:
1)数据不一致
2)自动增长id;如果用户写入的id发生了冲突,那么两个数据库的数据便有可能不一致,只有使一个服务器使用奇数ID,另一个服务器使用偶数ID,这样数据在写入的时候就不会导致数据冲突。

2、配置步骤:
(1)各节点使用一个唯一server_id;
(2)都启动binary log和relay log;
(3)创建拥有复制权限的用户账号;
(4)定义自动增长id字段的数值范围为奇偶;
(5)均把对方指定为主节点,并启动复制线程;

3、实验配置:

1)修改主配置文件

[root@master1 ~]# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log_bin=master1-bin      //开启二进制日志功能;
relay_log=relay1-log	   //开启中继日志功能;
server_id=1                  //指明数据库的server id;
auto_increment_offset=1     //设置自动增长列;
auto_increment_increment=2

2)启动服务

[root@master1 ~]# systemctl start mariadb.service
[root@master1 ~]# 

3)修改另外一台主库的配置文件

[root@master2 ~]# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log_bin=master2-bin
relay_log=relay2-log
server_id=3
auto_increment_offset=2
auto_increment_increment=2

4)启动服务

[root@master2 ~]# systemctl start mariadb.service
[root@master2 ~]# 

5)在两台数据库上创建具有复制权限的用户
第一个数据库:

[root@master1 ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> grant  replication slave,replication  client on *.* to 'haha'@'192.168.126.134' identified by 'haha';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush  privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show binary logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| master1-bin.000001 |       264 |
| master1-bin.000002 |       506 |
+--------------------+-----------+
2 rows in set (0.00 sec)

第二个数据库:

[root@master2 ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> grant replication slave,replication client on *.* to 'xixi'@'192.168.126.132' identified by 'xixi';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show binary logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| master2-bin.000001 |       503 |
+--------------------+-----------+
1 row in set (0.00 sec)

6)两端进行账号认证

MariaDB [(none)]> change master to  master_host='192.168.126.134',master_user='xixi',master_password='xixi',master_log_file='master2-bin.000001',master_log_pos=503;
Query OK, 0 rows affected (0.03 sec)
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.126.134
                  Master_User: xixi
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master2-bin.000001
          Read_Master_Log_Pos: 503
               Relay_Log_File: relay1-log.000002
                Relay_Log_Pos: 531
        Relay_Master_Log_File: master2-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 503
              Relay_Log_Space: 820
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 3
1 row in set (0.00 sec)

ERROR: No query specified

MariaDB [(none)]> change master to master_host='192.168.126.132',master_user='haha',master_password='haha',master_log_file='master1-bin.000002',master_log_pos=506;
Query OK, 0 rows affected (0.06 sec)

MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show slave status;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.126.132
                  Master_User: haha
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master1-bin.000002
          Read_Master_Log_Pos: 506
               Relay_Log_File: relay2-log.000002
                Relay_Log_Pos: 531
        Relay_Master_Log_File: master1-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 506
              Relay_Log_Space: 820
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
1 row in set (0.00 sec)

ERROR: No query specified

7)测试
在第一个数据库上创建库和表并插入id为奇数的数据

MariaDB [aaa]> create database  bbb;
Query OK, 1 row affected (0.00 sec)
MariaDB [bbb]> create table  tb1(id int(10),name char(20));
Query OK, 0 rows affected (0.00 sec)

MariaDB [bbb]> insert into  tb1(id,name)  values(1,'aaa'),(3,'bbb'),(5,'ccc');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

MariaDB [bbb]> select * from tb1;
+------+------+
| id   | name |
+------+------+
|    1 | aaa  |
|    3 | bbb  |
|    5 | ccc  |
+------+------+
3 rows in set (0.00 sec)

MariaDB [bbb]> 


在第二个数据库上查看数据是否同步并插入偶数id数据

MariaDB [bbb]> insert into  tb1(id,name)  values(2,'ddd'),(4,'eee'),(6,'fff');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0
MariaDB [bbb]> select * from tb1;
+------+------+
| id   | name |
+------+------+
|    1 | aaa  |
|    3 | bbb  |
|    5 | ccc  |
|    2 | ddd  |
|    4 | eee  |
|    6 | fff  |
+------+------+
6 rows in set (0.00 sec)

MariaDB [bbb]> 

TMS_WebGMaps_1.9.8.0_Full_Source TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder 立即下载

相关推荐

MMWCAS-DSP-EVM与AWR2243实战:从开箱到数据采集的完整避坑指南

本文提供了MMWCAS-DSP-EVM与AWR2243毫米波雷达评估板从开箱、软硬件准备、固件烧录到数据采集的完整实战指南。重点解析了硬件连接、软件版本匹配、固件烧录、网络配置及MMWave Studio GUI操作等关键步骤,并汇总了常见问题排查方法,帮助开发者快速上手并规避常见陷阱。

algae的博客 504

redis和mysql双写一致_Redis Mysql 双写一致性问题

一:序- 最近在对数据做缓存时候,会涉及到如何保证数据库/Redis 一致性问题。- 刚好今天来总结下 一致性问题 产生的问题,和可能存在的解决方案。二:(更新策略)-先更新数据库,后更新缓存- 产生的问题- - 由上面流程图可知道,请求A更新缓存应该比请求B更新缓存早才对,但是因为网络等原因,B却比A更早更新了缓存。-这就导致了脏数据,因此不考虑 先更新数据库,后更新缓存 这个更新策略。...

weixin_36421759的博客 610

深入解析PVT corner:从wcl到ml的芯片设计关键考量

本文深入解析了芯片设计中的PVT corner概念,重点探讨了从传统WC到先进工艺下WCL、ML等关键工艺角。文章详细阐述了温度反转效应如何使低温WCL成为最严苛的时序场景,并提供了基于先进工艺的实战签核策略与多角多模分析流程,确保芯片在极端工艺、电压、温度下的稳健性。

tree8的博客 527

mysql双主数据一致性_MySQL双主一致性架构优化 | 架构师之路-阿里云开发者社区...

一、双主保证高可用MySQL数据库集群常使用一主多从,主从同步,读写分离的方式来扩充数据库的读性能,保证读库的高可用,但此时写库仍然是单点。在一个MySQL数据库集群中可以设置两个主库,并设置双向同步,以冗余写库的方式来保证写库的高可用。二、并发引发不一致数据冗余会引发数据的一致性问题,因为数据的同步有一个时间差,并发的写入可能导致数据同步失败,引起数据丢失:如上图所述,假设主库使用了auto i...

weixin_33128371的博客 362

HDFView安装及使用教程

简介:直接用记事本打开hdf5文件的话,是一团乱码。HDFView是用来查看hdf5文件的软件,可以免费使用,好多人都有闪退的情况,这是因为没有添加环境变量。

qq_43722079的博客 7万+

用友U8其中一个账套提示演示期已到期-修复方法

【事件始末】 一朋友求助,反馈使用的用友U8,很多年了! 突然发现其中账套2021年的一个账套打不开,提示演示期限已到期! 但是其他账套完全正常,可以打开,没有任何问题。 不管是还原老旧备份,还是重装软件问题依旧,无法自己解决。 客户查询报表结算账期,情况比较紧急,于是求助我们。 经过多次反复琢磨和烟酒,终于于晚上23点59分给弄了出来,也总是圆满解决问题了。 【问题分析】 该用户打的是 U82X免狗补丁,估计是该补丁文件设置了 最大有效期,补丁到期了导致的。 也有可能是程序...

u010431289的博客 2万+

Redis和MySQL双写一致性如何保证?这个方案够优雅!

点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天 10:33更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT 源码解析作业调度中间件 E...

芋艿V 390

Win10文件夹只读属性自动恢复?彻底解决方法解析

Win10文件夹只读属性自动恢复?彻底解决方法解析在Windows系统使用过程中,文件权限管理常会遇到棘手问题。最近多位用户反馈:取消文件夹只读属性后,系统却自动恢复该设置,导致无法正常复制或修改文件。本文将深入分析该现象的产生原因,并提供多种解决方案,帮助开发者彻底摆脱权限困扰。

mmoo_python的博客 7523

MySQL双主一致性架构优化 | 架构师之路

一、双主保证高可用MySQL数据库集群常使用一主多从,主从同步,读写分离的方式来扩充数据库的读性能,保证读库的高可用,但此时写库仍然是单点。在一个MySQL数据库集群中...

shenjian58的博客 485

全志Longan和Tina系统T113-S3-(Tina Linux 系统介绍)

Tina Linux是全志科技基于Linux内核开发的针对智能硬件类产品的嵌入式软件系统。Tina Linux基于openwrt-14.07 版本的软件开发包,包含了 Linux 系统开发用到的内核源码、驱动、工具、系统中间件与应用程序包。Tina系统软件架构如图所示。从下至上分别为Kernel && Driver、Libraries、System Services、Applications 四层。

szembed的博客 6338

YOLOv11改进 | 细节涨点篇 | DySample一种最新的轻量化动态上采样算子(效果完爆CARAFE)

本文给大家带来的最新改进机制是一种号称超轻量级且有效的动态上采样器——DySample。与传统的基于内核的动态上采样器相比,DySample采用了一种基于点采样的方法,相比于以前的基于内核的动态上采样器,DySample具有更少的参数、浮点运算次数、GPU内存和延迟。此外,DySample在包括语义分割、目标检测、实例分割、全景分割和单目深度估计在内的五个预测任务中,性能均优于其他上采样器(截至目前最有效的上采样算子),

Snu77的博客 4211

mysql双主双写一致性_分布式之数据库和缓存双写一致性方案总结

总结:强一致性和缓存,这个本身就是伪命题。。用了缓存,只能保证最终一致性一定有可能在一段时间内,缓存是不新鲜的,哪怕只是几百毫秒。像下订单这种要求不能出错的业务场景,如果真的超大并发,只能是通过增加集群,分库分表,总之就是各种路由分流策略来提升吞吐量,尽可能的去避免并发带来的问题,最后配合多重补偿机制来保证近似100%的准确性。一般互联网方案不会这么做的,有几个前提我们需要了解下。1.cache一...

weixin_35539437的博客 968

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MySQL双主io线程起不来_MySQL的主从复制和双主模型

一、主从服务器的IP地址Master IP:172.16.1.1Salve IP:172.16.1.64二、安装mysql并配置好Master与Slave1、安装musql服务器#yum install mysql-server -y2、创建MySQL数据存放位置mkdir /mydata/data -pvmkdir /mydata/binlogs -pvmkdir /mydata/reaylog...

weixin_29452603的博客 226

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

画mysql主从拓扑图_实现MySQL主从复制、双主模型的简单案例

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正。如有不明白的地方,愿可一起探讨。MySQL复制的基本原理MySQL复制解决的基本问题让一台MySQL服务器的数据与其他MySQL服务器的数据保持同步。MySQL复制的工作原理MySQL复制的工作原理图如下所示(图来自高性能MySQL第3版)MySQL主从复制的基本步骤:1、启动主库上的二进制文件,并把数据更改记录到二进制日志中;2...

weixin_35664144的博客 428

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Mysql互为主从配置(双主模型)

一、A、B双主模型的实现条件: 1. 配置B为A的从库 2. 配置A为B的从库 3. 解决自动增长列的问题 如果A服务器上自动增长的列编号有一个35,此时还没有同步到B服务器上,在B服务器上插入一条数据,编号也是35。当同步A的35到B服务器上来的话,必然产生数据丢失。 解决办法: 让在A上插入的行的自动增长都为奇数,让B服务器上的自动增长都为偶数。这样就解决了自动增长的问题...

aaron0130的博客 171

mysql互为主从配置(双主模型)

一、A、B双主模型的实现条件:1. 开启二进制日志2. 开启中继日志3. 解决自动增长列的问题如果A服务器上自动增长的列编号有一个35,此时还没有同步到B服务器上,在B服务器上插入一条数据,编号也是35。当同步A的35到B服务器上来的话,必然产生数据丢失。解决办法:让在A上插入的行的自动增长都为奇数,让B服务器上的自动增长都为偶数。这样就解决了自动增长的问题。假设A是一台生产...

weixin_33905756的博客 154

mysql 传输加密_MySQL主从模型,传输加密以及双主模型的实现

实现双主模型:实现双主模型主要的两点一是双方都打开二进制日志和中继日志,互设为主从二是定义自动增长的时候的起始值和增长步长auto-increment-increment=N定义步长auto-increment-offset=Ns定义起始值指定步长,应该为两个服务器设置成不同的,且不能使以后重复mylab1修改主配置文件/etc/my.cnflog_bin= 二进制日志开启relay_log=...

weixin_34748612的博客 307

MySQL主从模型,传输加密以及双主模型的实现

首先是实验环境 需要两台已经装好MySQL的Linux服务器可以是YUM安装的、二进制包安装的或者是源代码包编译的都行,然后实现这两台MySQL服务其的主从同步,咋实现同步时使用SSL加密传输,再实现双主模型。 注意:保证MySQL服务器版本一致,或者主服务器的版本低于从服务器的版本。 阅读示例: 文中所有需要在终端界面输入的命令,都是用代码框的形式展现...

weixin_33924770的博客 250

mysql双主加keepalive_mysql双主模型(单活)+keepalived

mysql双主模型是两台mysql互为主从设计,在同一时刻只能有一台写入数据,另一台做热备,利用keepalived实现热备切换。实验环境:两台都是干净的mariadb。现实环境应该是单机允许N年,需要扩展为双主,如何实现?1、实现主从架构2、暂停前端写入数据到主mysql,重置从mysql的二进制日志3、配置主mysql 向从mysql同步,并开启同步,测试数据4、安装配置keepalive,前...

weixin_39611072的博客 363

mysql主从架构图_mysql主从架构, 以及双主模型的实现

主节点 172.16.26.1[root@localhost mysql]# mkdir /mydata/{bindata,data} –pv/etc/mysql/my.cnf =>修改主配置文件datadir = /mydata/datalog-bin=/mydata/bindata/mysql1-bin => 二进制文件另找位置存放备节点 172.16.26.5[ro...

weixin_35133198的博客 508

linux mysql互为主从_mysql互为主从配置(双主模型)

一、A、B双主模型的实现条件:1. 开启二进制日志2. 开启中继日志3. 解决自动增长列的问题如果A服务器上自动增长的列编号有一个35,此时还没有同步到B服务器上,在B服务器上插入一条数据,编号也是35。当同步A的35到B服务器上来的话,必然产生数据丢失。解决办法:让在A上插入的行的自动增长都为奇数,让B服务器上的自动增长都为偶数。这样就解决了自动增长的问题。假设A是一台生产环境中的数据库,现在想...

weixin_34026997的博客 174

mysql三个互为主从_mysql互为主从配置(双主模型)

一、A、B双主模型的实现条件:1.开启二进制日志2.开启中继日志3.解决自动增长列的问题如果A服务器上自动增长的列编号有一个35,此时还没有同步到B服务器上,在B一、A、B双主模型的实现条件:1. 开启二进制日志2. 开启中继日志3. 解决自动增长列的问题如果A服务器上自动增长的列编号有一个35,此时还没有同步到B服务器上,在B服务器上插入一条数据,,编号也是35。当同步A的35到B服务器上来的话...

weixin_34871733的博客 656

最小覆盖子串解题笔记:滑动窗口与缺口计数器的实现推导

滑动窗口是字符串处理中一种高效的区间遍历思想,通过双指针维护动态连续子串,能够将暴力枚举的平方级复杂度降至线性级。其核心原理在于:右指针负责扩展窗口,左指针负责收缩窗口,同时借助哈希表统计字符频次,并通过一个“还缺多少字符”的缺口计数器判断当前窗口是否覆盖目标串。该技术在子串匹配、字母异位词、排列检测等场景中有广泛应用,也是面试中的高频算法考察点。本文以LeetCode 76题最小覆盖子串为示例,从暴力解法出发,完整推导滑动窗口的实现细节,深入剖析缺口计数与双指针收缩时机,并给出可运行代码与常见变种题分析,

weixin_33875564的博客 255

MySQL 复制架构之双主模型

MySQL 复制架构之双主模型双主模型特性 两个节点互为主从:,每个节点各自都要开启binlog(二进制日志)和relay log(中继日志) 双主模型极易导致两个数据库的数据不一致 双主模型中,假如某作为主键或唯一键的字段的值类型设置了INCREMENT(自增长),可能导致两个数据库同步时出现主键或唯一键冲突的情况,为避免此情况,要对每个节点重新定义自增长值的起始偏移量和增长步距 双主模型的实现步

achuDk的博客 758

实现MySQL主从复制、双主模型的简单案例

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正。如有不明白的地方,愿可一起探讨。MySQL复制的基本原理MySQL复制解决的基本问题让一台MySQL服务器的数据与其他MySQL服务器的数据保持同步。MySQL复制的工作原理MySQL复制的工作原理图如下所示(图来自高性能MySQL第3版)MySQL主从复制的基本步骤:1、启动...

weixin_34261739的博客 125

基于heartbeat v1配置mysql和httpd的高可用双主模型

一、配置高可用集群的前提:(以两节点的heartbeat为例) ⑴时间必须保持同步 ⑵节点之间必须用名称互相通信 建议使用/etc/hosts,而不要用DNS 集群中使用的主机名为`uname -n`表示的主机名; ⑶ping node(仅偶数节点才需要) ⑷ssh密钥认证进行无障碍通信;二、heartbeat的配置 程序主配置文件:...

weixin_33738982的博客 302
上一篇: MySQL的日志管理
下一篇: MySQL的半同步
Micky_Yang
博客等级 码龄8年 58粉丝 143原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值