iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >聊一聊mycat数据库集群系列之双主双重实现
  • 943
分享到

聊一聊mycat数据库集群系列之双主双重实现

摘要

  最近在梳理数据库集群的相关操作,现在花点时间整理一下关于Mysql数据库集群的操作总结,恰好你又在看这一块,供一份参考。本次系列终结大概包括以下内容:多数据库安装、mycat部署安装、数据库之读写分离主从复制、数据库之双主多重、数据库分


	聊一聊mycat数据库集群系列之双主双重实现
[数据库教程]

  最近在梳理数据库集群的相关操作,现在花点时间整理一下关于Mysql数据库集群的操作总结,恰好你又在看这一块,供一份参考。本次系列终结大概包括以下内容:多数据库安装、mycat部署安装、数据库之读写分离主从复制、数据库之双主多重、数据库分库分表。每一个点,有可能会对应一篇或者多篇文章,由于还要继续上班工作,所以本系列分享预计持续时间需要10天左右,有兴趣的您可以持续关注。我是一个菜鸟,如果写的不好的地方,望多多指点和包涵。

  好了,不逼逼了,直接进入本次的主题:mycat双主双重实现。在前的几篇文章中,我们已经完整的介绍了主从备份,读写分离实现。但是在实际生产中,为了系统的高可用,主从备份是远远不够用的,比如:要是主挂了,那么整个系统的写数据都挂了,如果读数据库挂了,那怎么整个系统的读操作也就挂了,为了实现系统的高可用,在实际项目中,我们会搭建至少搭建双主多重。

 技术图片

一、简介

   数据库集群的方式有多种 ,前面的介绍的一种是主从复制,读写分离,这一种方式在一般的系统已经够用了,但是对系统可用性要求很高的系统,这样是会有缺陷的,原因是:主只有一个,万一主挂了呢?那系统的所有读操作都将被中断,系统不能提供写服务,当重挂了,系统不同提高读服务,所以无论那一台数据库挂了,系统都会受到影响。对于高可用的系统,那是不行的,比如:电商系统等等。不急不急,其实也很简单,一台不够,那就多台就解决问题了:双主多重,双主:主要指的是两台主机(一主一备),两台主机相互间要同步数据,其中一台挂了另外一台可以正常运行。这样能够大大提升系统的高可用。

  本次以双主4重来做实例练习,在同一台服务器上,通过不同端口来区分不同的数据库,具体的数据配置如下:

服务器名称

端口

备注

Master_3306

3306

第一台主机,需要和第二台主机(主备机)同步数据

Slave1_3307

3307

第一台主机对应的第一台重机

Slave1_3308

3308

第一台主机对应的第二台重机

Master_3309

3309

第二台主机(主备机),需要和第一台主同步数据

Slave1_3310

3310

第二台主机对应的第一台重机

Slave1_3311

3311

第二台主机对应的第二台重机

二、数据库环境准备

         双主多重的在原理上,和上一篇说的主从备份的原理都是一样的,双主双从只是在原来的基础上,针对主机和重机都增加了对于的备机。主机的有两个数据库实例,其实两个的主备的角色是相互的,当一台机器挂了,另外一台机器就充当了主机。所以最终数据的体现效果就是,所有主机和从机都要保持数据一致。为了达到这一目录,在备份上需要策略如下:两台主机间都要相互同步、每一台主机对于的重机都需要同步对应的主机数据。最终的数据同步关系为:

  • 3306 与 3307 相互数据同步

  • 3308、3309 都要同步3306的数据

  • 3310、3311 都要同步3307的数据

  在配置文件上和上一篇的配置原理一样,只是针对两个主机需要新增一个配置节点:log-slave-updates:在作为从库的时候,有写入操作也要更新二进制文件。

下面简单罗列每一个数据库的my.ini的配置文件

3306配置文件

[Client]
port = 3306
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=C:Program Files (x86)MySQLMySQL Server 8.0_3306
# 设置mysql数据库的数据的存放目录
datadir=C:Program Files (x86)MySQLMySQL Server 8.0_3306data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 主从复制设置
# 设置服务id,注意改id值在同一个数据库集群中要保持唯一
server-id = 3306
# 写入磁盘策略 该参数的有效值有 012
# 默认值为1,在实际使用过程中,为了效率,我们一般会在设置为2
innodb_flush_log_at_trx_commit=2  
# 开启binlog日志同步功能
# 这个参数直接影响mysql的性能和完整性。
sync_binlog=0
# 在作为从库的时候,有写入操作也要更新二进制文件
log-slave-updates
# 二进制日志保留天数
expire_logs_days=180
# binlog日志文件名(可以任意命名)
log-bin=mysql-bin
# 表示自增长字段每次递增的量,其默认值是1,取值范围是1 .. 65535
auto_increment_increment=2
# 表示自增长字段从那个数开始,他的取值范围是1 .. 65535
auto_increment_offset=1
# 在主主同步配置时,需要将两台服务器的auto_increment_increment增长量都配置为2,而要把auto_increment_offset分别配置为1和2.
# 这样才可以避免两台服务器同时做更新时自增长字段的值之间发生冲突。
# 同步的数据库设置方式有两种:
# binlog_do_db:设置需要同步的数据库
# binlog-ignore-db:设置不需要同步的数据库
#同步的数据库,除此之外别的不同步(和下面binlog-ignore-db二选一)
# binlog_do_db=testdb 
#不同步数据库,除此之外都同步
binlog-ignore-db = infORMation_schema
binlog-ignore-db = mysql
binlog-ignore-db = performance_schema
binlog-ignore-db = sys
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8

3307置文件

 

[Client]
port = 3307
[mysqld]
#设置3307端口
port = 3307
# 设置mysql的安装目录
basedir=C:Program Files (x86)MySQLMySQL Server 8.0_3307
# 设置mysql数据库的数据的存放目录
datadir=C:Program Files (x86)MySQLMySQL Server 8.0_3307data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 主从复制设置
# 设置服务id,注意改id值在同一个数据库集群中要保持唯一
server-id = 3306
# 写入磁盘策略 该参数的有效值有 012
# 默认值为1,在实际使用过程中,为了效率,我们一般会在设置为2
innodb_flush_log_at_trx_commit=2  
# 开启binlog日志同步功能
# 这个参数直接影响mysql的性能和完整性。
sync_binlog=0
# 表示自增长字段每次递增的量,其默认值是1,取值范围是1 .. 65535
auto_increment_increment=2
# 表示自增长字段从那个数开始,他的取值范围是1 .. 65535
auto_increment_offset=2
# 在主主同步配置时,需要将两台服务器的auto_increment_increment增长量都配置为2,而要把auto_increment_offset分别配置为1和2.
# 这样才可以避免两台服务器同时做更新时自增长字段的值之间发生冲突。
# 在作为从库的时候,有写入操作也要更新二进制文件
log-slave-updates
# 二进制日志保留天数
expire_logs_days=180
# binlog日志文件名(可以任意命名)
log-bin=mysql-bin
# 同步的数据库设置方式有两种:
# binlog_do_db:设置需要同步的数据库
# binlog-ignore-db:设置不需要同步的数据库
#同步的数据库,除此之外别的不同步(和下面binlog-ignore-db二选一)
# binlog_do_db=testdb 
#不同步数据库,除此之外都同步
binlog-ignore-db = information_schema
binlog-ignore-db = mysql
binlog-ignore-db = performance_schema
binlog-ignore-db = sys
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8

3308配置文件

[Client]

port = 3308

 

[mysqld]

#设置3308端口

port = 3308

# 该id主要要保持唯一,后面在设置主从同步的时候会用到

server-id = 3308

# 设置mysql的安装目录

basedir=C:Program Files (x86)MySQLMySQL Server 8.0.21_3308

# 设置mysql数据库的数据的存放目录

datadir=C:Program Files (x86)MySQLMySQL Server 8.0.21_3308data

# 允许最大连接数

max_connections=200

# 服务端使用的字符集默认为8比特编码的latin1字符集

character-set-server=utf8

# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

 

[mysql]

# 设置mysql客户端默认字符集

default-character-set=utf8

3309配置文件

[Client]
port = 3309
 
[mysqld]
#设置3309端口
port = 3309
# 该id主要要保持唯一,后面在设置主从同步的时候会用到
server-id = 3309
# 设置mysql的安装目录
basedir=C:Program Files (x86)MySQLMySQL Server 8.0.21_3309
# 设置mysql数据库的数据的存放目录
datadir=C:Program Files (x86)MySQLMySQL Server 8.0.21_3309data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
 
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8

3310配置文件

[Client]
port = 3308
 
[mysqld]
#设置3310端口
port = 3310
# 该id主要要保持唯一,后面在设置主从同步的时候会用到
server-id = 3310
# 设置mysql的安装目录
basedir=C:Program Files (x86)MySQLMySQL Server 8.0.21_3310
# 设置mysql数据库的数据的存放目录
datadir=C:Program Files (x86)MySQLMySQL Server 8.0.21_3310data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
 
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8

3311配置文件

[Client]
port = 3311
 
[mysqld]
#设置3311端口
port = 3311
# 该id主要要保持唯一,后面在设置主从同步的时候会用到
server-id = 3308
# 设置mysql的安装目录
basedir=C:Program Files (x86)MySQLMySQL Server 8.0.21_3311
# 设置mysql数据库的数据的存放目录
datadir=C:Program Files (x86)MySQLMySQL Server 8.0.21_3311data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
 
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8

三、数据库配置验证

  数据库双主多重配置验证,主要验证两个主机数据更新是否所有集群中的是所有数据是否都发送对应的改变,如果发送说明配置成功。

  1、  在3306中创建一个数据test和一个表user

  查看其它的库是否都创建了一个库test和一个表user

  2、  在3307中对表user插入一条数据

  查看其余所有库对于的表是否也新增了该数据

四、mycat双主多从配置

         Mycat的使用配置,我们先从最简单的模式(主从复制)开始配置起走。Mycat主从复制主要配置文件有如下两个文件,两个文件都在mycat目录conf下。

  • server.xml: 配置文件包含了mycat的系统配置信息
  • schema.xml:涵盖了mycat的逻辑库,表,分片规则,分片节点及数据源。

server.xml配置文件

       server.xml主要涉及到两个标签的配置,和上一篇的主重复制一样:

  • system标签:主要配置系统相关的配置,在此不在做详细的描述,根据实际需要在去配置;
  • user标签:主要用于定义登录mycat的用户和权限,这也是本次需要介绍的配置节点。user标签可以同时配置多个节点。


"root" defaultAccount="true">
    
    "passWord">xuyuanhong
    
    "schemas">test

schema.xml配置文件

         schema配置相对上一篇的主从复制的配置节点,只是将负载均衡节点balance的值改为1,同时在服务上新增一个主节点,同时新增一个从节点,其余配置不变,如下:

 

"1.0"?>
"schema.dtd">
"Http://io.mycat/">
    
    
    
    
    
    
    "test" checkSQLschema="false" sqlMaxLimit="100" datanode="dntest">
    
    
    
    
    
    
    "dntest" database="test" dataHost="hosttest" />
    
    
    
    
    
    
    

             

             

             

                                            writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">

                           

                            select user()

                           

                           

                           

                           

                           

                                                           password="xuyuanhong">

                                                           

                                                           

                                                                                

                                                           

                                                                  

                           

                           

                                                           password="xuyuanhong">

                                                                 

                                                           

                                                                                

                                                           

                                                                  

                           

             

 

五、mycat启动及其常用操作命令

  • 首先需要进入到mycat安装目录的bin目录下
cd E:Program Filesmycatin

 

  •        开启mycat
mycat.bat start

 

  • 停止mycat
mycat.bat stop

 

  • 重启mycat
mycat.bat restart

 

  • 查看mycat状态
mycat.bat status

  

六、mycat中遇到的问题解决

         其实在实际mycat配置时,我也不是一次配置成功的,也遇到了两个小问题,现在罗列出来,如果刚刚你也遇到了正好可以解决掉。

1、Unrecognized VM option ‘AggressiveOpts‘

  解决方式:打开wrapper.conf配置文件,找到AggressiveOpts并将整行注释掉即可,如下图所示:

 技术图片

2、Could not create the Java Virtual Machine.

  该问题有可能是设置才内存超出本地环境实际内存,处理方式也简单,直接将wrapper.conf对应的内存改小即可。如下图位置:

 技术图片

  有关mycat的部署安装、读写分离就分享到这儿了,下一篇将和大家一起分享mycat的多主多重配置,有兴趣的小伙伴,可以持续关注,谢谢!

       好了,到目前为止,针对数据库的主从复制、算主多重的部署从头到尾的每一步都做了一个总结。在后续的文章中就要开始对数据库的分库分表进行梳理回顾。有兴趣的朋友,可以持续关注,谢谢支持。

END
为了更高的交流,欢迎大家关注我的公众号,扫描下面二维码即可关注,谢谢:

技术图片

聊一聊mycat数据库集群系列之双主双重实现

原文地址:https://www.cnblogs.com/xiaoXuZhi/p/xyh_mycat_many_read_write_split.html

您可能感兴趣的文档:

--结束END--

本文标题: 聊一聊mycat数据库集群系列之双主双重实现

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

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

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

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

下载Word文档
猜你喜欢
  • mysql拒绝访问怎么办
    mysql 出现拒绝访问的原因和解决方法:权限问题:授予用户适当的数据库或表访问权限。防火墙或安全组:允许对 mysql 端口(3306)的入站连接。密码错误:重置 mysql 密码或使...
    99+
    2024-05-21
    mysql
  • mysql怎么比较日期大小
    mysql 中比较日期大小的方法包括:直接比较两个日期,使用 、= 运算符。使用 date_format() 函数将日期转换为字符串,然后比较字符串大小。使用 str_to_date()...
    99+
    2024-05-21
    mysql
  • mysql怎么加锁
    mysql中加锁是一种确保数据并发访问一致性的机制。加锁方式有:表级锁(对整个表加锁)和行级锁(对特定行加锁)。加锁类型有共享锁(允许读取但禁止修改)、排他锁(禁止读取和修改)和意向锁(...
    99+
    2024-05-21
    mysql 并发访问
  • mysql误删数据怎么恢复
    mysql误删数据可通过以下步骤恢复:停止数据库服务,防止数据覆盖。若开启binlog日志,可从中提取删除语句,再重新执行后将数据恢复。使用恢复工具修复表文件或恢复事务。从备份中恢复数据...
    99+
    2024-05-21
    mysql
  • 怎么判断mysql安装成功
    成功安装 mysql 的方法:检查命令行界面版本号;连接到 mysql 服务器,输入 "mysql -u root -p";创建数据库,输入 "create database test;...
    99+
    2024-05-21
    mysql linux macos 防火墙配置
  • mysql怎么修改表名
    如何修改 mysql 表名:检查当前表名:show tables;运行 rename table 语句:rename table 旧表名 to 新表名;验证更改:show tables;...
    99+
    2024-05-21
    mysql
  • mysql删除的表怎么恢复
    mysql 中已删除表的恢复方法主要涉及以下步骤:检查 binlog 日志以获取删除事务信息;使用数据恢复工具扫描数据库文件;从备份还原表数据;或联系 mysql 支持寻求帮助。 My...
    99+
    2024-05-21
    mysql 数据丢失
  • mysql复合主键怎么写
    在 mysql 中编写复合主键:在 create table 语句中使用 primary key 约束并列出字段名称。复合主键的好处包括提高查询效率、保证数据完整性和强制数据顺序。注意选...
    99+
    2024-05-21
    mysql
  • 怎么查看mysql数据库版本
    如何查看 mysql 数据库版本?连接到数据库并执行查询:select version();检查命令行或 mysql workbench 中的服务器属性。 如何查看 MySQL 数据库...
    99+
    2024-05-21
    mysql linux
  • 怎么检测mysql安装成功
    要验证 mysql 安装是否成功,请执行以下步骤:检查系统服务是否正在运行。使用 mysql 命令行工具连接到服务器。创建一个测试数据库并使用它。在数据库中创建一个测试表。插入测试数据并...
    99+
    2024-05-21
    mysql linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作