• mysql-配置主从数据库,实现读写分离


    主从分离的原则:所有的写操作在主数据库中进行,因为主从分离的原理是涉及到同步数据,那就可能会出现延迟或者其他问题,就可能会出现脏数据。

    所以,在从库中进行的读操作也必须是有一定容忍性的数据,例如日志等。

    例如需要注意,如果一个业务中有读和写的操作。

    那么这个操作的库必须是主库,因为这个涉及到事务,需要非常小心。

    主从同步的原理:

    从数据库后台线程请求主数据库的更新数据,主数据库后台线程接收到请求后会读取bin-log文件内容,然后放到从库的请求响应中。

    从库接收到响应后,会将接收到的内容放到relay-log文件中,然后读取这个文件中同步过来的sql,然后在执行一遍。

    好了,下面先新增一个从数据库:

        1,复制一个已经安装好的mysql就好
        2,修改新mysql的相关配置(端口,安装目录,数据目录),在my.ini文件中修改port,basedir,datadir
        3,为新的mysql创建数据目录(从mysql的安装目录中拷贝data文件夹);
        4,打开cmd命令窗口,为新的mysql创建windows系统服务mysqld install MySQL2  --defaults-file="D:MySQL Server 5.5 Copymy.ini"
     5,检查创建的系统服务,并启动测试;

    到这里,就把从数据库搞好了。

    接下来就是配置主从数据库了。

    1.在主数据的my.ini文件中增加如下信息:

    server-id:3306//给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号,在一个集群中,这个id是不能重复的;
    log-bin=master-bin://开启二进制文件;后面设置的这个master-bin就是二进制文件的名字前缀(名字);
    log-bin-index=master-bin.index//开启二进制文件的索引;名字一般为log-bin.index

    2.启动主数据库,执行show master status;

    mysql> show master status;
    +-------------------+----------+--------------+------------------+
    | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +-------------------+----------+--------------+------------------+
    | master-bin.000001 |      107 |              |                  |
    +-------------------+----------+--------------+------------------+
    1 row in set

    只要能查询到信息,说明主库OK了。

    这里要注意上面显示的Postion是指当前bin-log文件记录到的位置,如果你的从数据库可以对过去的数据既往不咎,那你在下面设置同步时可以将起点设置为最新的Postion,不过这样会出现数据不一致的情况,看情况选择吧。

    3.配置从数据库

    在从数据的my.ini文件中增加如下信息:

    server-id=3307;//不一定3307,随你
    relay-log=slave-relay-bin
    relay-log-index=slave-relay-bin.index

    4.启动从服务器

    5.让从数据库指定master库,并且设置同步数据的信息

    在从数据库的命令行中运行下面的这一句命令

    change master to master_host='127.0.0.1',
    master_user='root',
    master_password='admin',
    master_port=3306,
    master_log_file='master-bin.000001',
    master_log_pos=107;

    解释一下,最后master_log_pos=107的作用是指定请求同步Master的bin-log的哪一行数据之后的内容;

    6.完事了,修改主数据库的数据,然后测试从数据库的数据是否跟着同步修改了呢。

    java项目如何进行读写分离?可以看我另一篇文章参考下:

    https://www.cnblogs.com/tinyj/p/9864128.html

  • 相关阅读:
    Spring Boot 使用actuator监控与管理
    Spring Boot入门
    mysql中update语句的锁
    LinkedList深入学习
    23种设计模式学习之享元模式
    23种设计模式学习之桥接模式
    23种设计模式学习之外观模式
    23种设计模式学习之代理模式
    23种设计模式学习之装饰者模式
    23种设计模式学习之适配器模式
  • 原文地址:https://www.cnblogs.com/tinyj/p/9864190.html
Copyright © 2020-2023  润新知