• mysql的主从创建及mycat的安装


    目录

    1.为何搭建mysql的主从关系

    2.如何搭建mysql的主从关系

    2.1 复制概述

    2.2 复制原理

    2.3 复制优势

    2.4 搭建步骤

    2.4.1 master(主节点)

     2.4.2 slave(从节点)

    3.mycat的安装

    3.1 为何安装mycat

    3.2 安装mycat的步骤

    3.2.1 安装软件

    3.2.2 修改配置文件

    3.2.3 启动程序

    3.2.4 登录

    4.测试

    4.1 创建一个springboot项目

    4.2 实体类

    4.3 dao层

    4.4 配置

    4.5 pom

    4.6 测试类

    5.解决主从(主添从查)不成功问题


    1.为何搭建mysql的主从关系

            解决mysql高并发的瓶颈

    2.如何搭建mysql的主从关系

    2.1 复制概述

            复制是指将主数据库的DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。

            MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制。

    2.2 复制原理

    MySQL 的主从复制原理如下 :

    从上层来看,复制分成三步:

    (1)Master 主库在事务提交时,会把数据变更作为事件Events 记录在二进制日志文件 Binlog 中。

    (2)主库推送二进制日志文件 Binlog 中的日志事件到从库的中继日志 Relay Log 。

    (3)slave重做中继日志中的事件,将改变反映它自己的数据。

    2.3 复制优势

    MySQL 复制的优点主要包含以下三个方面:

    (1)主库出现问题,可以快速切换到从库提供服务。

    (2)可以在从库上执行查询操作,从主库中更新,实现读写分离,降低主库的访问压力。

    (3)可以在从库中执行备份,以避免备份期间影响主库的服务。

    注意:mysql允许远程连接

    2.4 搭建步骤

    使用之前先进行虚拟机的克隆(这样的话可以不用再次下载mysql)

     因为克隆的虚拟机两者ip地址一致,使用命令进行ip更改

    vi /etc/sysconfig/network-scripts/ifcfg-ens33

    如何查看是否有mysql

    注意:-u后边对应的是账号,-p对应的密码

    mysql -uroot -p123456

    如何启动mysql

    systemctl start mysqld

    2.4.1 master(主节点)

    1) 在master 的配置文件(/etc/my.cnf)中,配置如下内容:

    #mysql 服务ID,保证整个集群环境中唯一
    server-id=1

    #mysql binlog 日志的存储路径和文件名
    log-bin=/var/lib/mysql/mysqlbin

    #错误日志,默认已经开启
    #log-err

    #mysql的安装目录
    #basedir

    #mysql的临时目录
    #tmpdir

    #mysql的数据存放目录
    #datadir

    #是否只读,1 代表只读, 0 代表读写
    read-only=0

    #忽略的数据, 指不需要同步的数据库
    binlog-ignore-db=mysql

    #指定同步的数据库
    #binlog-do-db=db01

    2) 执行完毕之后,需要重启Mysql:

     systemctl restart mysqld

    3) 查看master状态:

    show master status;

    字段含义:

    File : 从哪个日志文件开始推送日志文件 给从节点
    Position : 从哪个位置开始推送日志  从什么位置开始同步
    Binlog_Ignore_DB : 指定不需要同步的数据库 

     2.4.2 slave(从节点)

    1) 在 slave 端配置文件中,配置如下内容:

    #mysql服务端ID,唯一
    server-id=2

    #指定binlog日志
    log-bin=/var/lib/mysql/mysqlbin

    2) 执行完毕之后,需要重启Mysql:

    systemctl restart mysqld

    3) 执行如下指令 :slaveof ip port

    注意:master_password对应的是主节点连接数据库的密码;master_log_file,master_log_pos,要跟主节点查询到的master数据一致

    change master to master_host= '192.168.227.175', master_user='root', master_password='123456', master_log_file='mysqlbin.000001', master_log_pos=154; 

    指定当前从库对应的主库的IP地址,用户名,密码,从哪个日志文件开始的那个位置开始同步推送日志。

    4) 开启同步操作

    start slave;

    show slave status\G;

    对应查询结果:

    进入mysql的方法:

    mysql -uroot -p123456

    5) 解决问题

    The slave I/O thread stops because master and slave have equal MySQL server UUIDs;_被取名逼疯的男人的博客-CSDN博客

    exit退出两个节点,找解决的办法:

    停止同步操作语法:

    stop slave;

     注意:关闭主节点,从节点不会受影响,从可以进行任何操作,注意id可能在之后会重复的问题。

    3.mycat的安装

    3.1 为何安装mycat

    为了减轻数据库的压力,主只负责添,从负责查

    3.2 安装mycat的步骤

    3.2.1 安装软件

    将安装包放进/usr/local里面,进行解压:

    tar -zxvf 压缩文件 文件名

    3.2.2 修改配置文件

    主要是修改如下3个配置文件

    ①schema.xml:定义逻辑库,表、分片节点等内容

    ②rule.xml:定义分片规则

    ③server.xml:定义用户以及系统相关变量,如端口等

    修改配置文件server.xml



        
            123456
            testdb
        

    修改schema.xml



        
        
        
        
        
        
                       writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
            
            select user()
            
                
            

            
        

    这里的testdb是我们mysql中的数据库名称

    主要分schema、dataNode、dataHost三个主要配置。

    3.2.3 启动程序

    1、 控制台启动 :去 mycat/bin 目录下执行 ./mycat console

    2 、后台启动 :去 mycat/bin 目录下 ./mycat start

    为了能第一时间看到启动日志,方便定位问题,我们选择1控制台启动。

    3.2.4 登录

    此登录方式用于通过 Mycat 查询数据,我们选择这种方式访问 Mycat

    mysql -umycat -p123456 -P 8066 -h 192.168.227.177

    4.测试

    注意:要将虚拟机的防火墙关闭或通过mycat接口

    4.1 创建一个springboot项目

    4.2 实体类

    1. @Data
    2. @TableName(value = "t_user")
    3. public class User {
    4. @TableId(type = IdType.AUTO)
    5. private Long id;
    6. private String name;
    7. }

    4.3 dao层

    1. @Mapper
    2. public interface UserMapper extends BaseMapper {
    3. }

    4.4 配置

    1. server.port=8080
    2. #testdb数据源 192.168.227.177:8806 mycat接口默认为8066
    3. spring.datasource.url=jdbc:mysql://192.168.227.177:8066/testdb?useSSL=true&useUnicode=true&characterEncoding=utf8
    4. spring.datasource.password=123456
    5. spring.datasource.username=mycat
    6. spring.datasource.driver-class-name=com.mysql.jdbc.Driver

    4.5 pom

    注意此处的mysql版本不应该过高

    1. <groupId>com.qy151wd.mainconggroupId>
    2. <artifactId>demoartifactId>
    3. <version>0.0.1-SNAPSHOTversion>
    4. <name>demoname>
    5. <description>Demo project for Spring Bootdescription>
    6. <properties>
    7. <java.version>1.8java.version>
    8. <mysql.version>5.1.4mysql.version>
    9. properties>
    10. <dependencies>
    11. <dependency>
    12. <groupId>org.springframework.bootgroupId>
    13. <artifactId>spring-boot-starter-webartifactId>
    14. dependency>
    15. <dependency>
    16. <groupId>mysqlgroupId>
    17. <artifactId>mysql-connector-javaartifactId>
    18. <scope>runtimescope>
    19. dependency>
    20. <dependency>
    21. <groupId>org.projectlombokgroupId>
    22. <artifactId>lombokartifactId>
    23. <optional>trueoptional>
    24. dependency>
    25. <dependency>
    26. <groupId>org.springframework.bootgroupId>
    27. <artifactId>spring-boot-starter-testartifactId>
    28. <scope>testscope>
    29. dependency>
    30. <dependency>
    31. <groupId>com.baomidougroupId>
    32. <artifactId>mybatis-plus-boot-starterartifactId>
    33. <version>3.5.2version>
    34. dependency>
    35. dependencies>

    4.6 测试类

    1. @SpringBootTest
    2. class DemoApplicationTests {
    3. @Autowired
    4. private UserMapper userMapper;
    5. @Test
    6. void contextLoads() {
    7. User user = userMapper.selectById(1);
    8. System.out.println(user);
    9. }
    10. @Test
    11. void contextLoads02() {
    12. User user=new User();
    13. user.setName("hhhh");
    14. userMapper.insert(user);
    15. }
    16. }

    5.解决主从(主添从查)不成功问题

    上述配置文件schema.xml文件中的参数需要注意,balance和switchType

     

     

     

  • 相关阅读:
    Android如何自定义服务器DynamicMockServer的使用
    软件数据采集使用代理IP的好处用哪些?
    oracle统计信息
    Linux开发工具(3)——gcc/g++
    React源码分析1-jsx转换及React.createElement
    012 Spring Boot + Vue 电影购票系统
    微信H5公众号获取openid爬坑记
    Hbase权限访问命令、报错:Grant无权限(acl文件少了)
    前端基础知识
    力扣176. 第二高的薪水
  • 原文地址:https://blog.csdn.net/qq_50896786/article/details/126921186