zoukankan      html  css  js  c++  java
  • Mysql主从同步

    Mysql主从同步、读写分离

    ​ 主从同步是在一个交换节点设立一高精度的基准时钟,通过传输链路把此基准时钟信号送到网中各个从节点,各个从节点利用锁相环技术把本地时钟频率锁定在基准时钟频率上,从而实现网内各节点之间的时钟信号同步

    mysql主从同步的核心就在主机的二进制日志(binary log),主机会将写的操作记录在这个日志文件里面。从机开启一条io线程去主机里面读取这个日志,在将读取的结果记录在本机的relay log(中继日志文件)里面,从机的sql线程会去读取这个relay log然后作用在从机上。

    mysql的主从同步是异步的,串行化的,并且有延迟的

    主从同步配置

    1、修改主机配置文件

    windows是my.ini,linux是my.cnf或者mysqld.cnf

    # 错误日志文件路径
    log_error = /var/log/mysql/error.log
    #
    # Here you can see queries with especially long duration
    #log_slow_queries       = /var/log/mysql/mysql-slow.log
    #long_query_time = 2
    #log-queries-not-using-indexes
    #
    # The following can be used as easy to replay backup logs or for replication.
    # note: if you are setting up a replication slave, see README.Debian about
    #       other settings you may need to change.
    # 配置server-id
    server-id               = 1 
    # 配置日志文件路径
    log_bin                 = /var/log/mysql/mysql-bin.log 
    # 日志的过期时间
    expire_logs_days        = 10
    # 日志文件最大大小
    max_binlog_size   = 100M
    # 日志记录的数据库
    binlog_do_db            = goods
    # 日志忽略的数据库
    #binlog_ignore_db       = include_database_name
    
    

    2、数据库重启,不重启配置文件会不生效

    3、授权从库

    CRANT REPLICATION slave,reload,super ON *.* TO '用户名'@'从机的ip,可以用%代替所有' IDENTIFIED BY '用户名';
    FLUSH PRIVILEGES;
    

    4、查看master状态

    SHOW MASTER STATUS;
    

    将当前的File和position记录下来

    5、配置从机

    log-bin="mysql-bin.log"
    # Error Logging.
    log-error="DESKTOP-HN63S2H.err"
    
    # Server Id.
    server-id=2
    # 同步的数据库
    replicate-do-db=goods
    

    6、重启从机

    7、配置从机同步主机

    CHANGE MATSER TO
    MASTER_HOST = 'host',
    MASTER_USER = 'USER',
    MASTER_PASSWORD = 'PASSWORD',
    MASTER_PORT = 'PORT',
    MASTER_LOG_FILE = '上面记录的file',
    MASTER_LOG_POS = '上面记录的position'
    

    8、开启从机同步主机

    start slave
    

    9、检验同步状态

    show slave status
    

    如果字段Slave_IO_RunningSlave_SQL_Running都是Yes就是正常的,反之,则可以在下面的Error中找到对应的错误。

    10、最后物理检验,在主机上进行数据的改动,在去从机上观察现象即可。

    读写分离

    一般数据库仅仅是读操作的话是不用处理数据差的问题,但是读写操作一起作用在数据库上,就可能发生一些脏读、幻读之类的问题了,一般在这种问题上,我们可以在数据上加锁处理。

    但是并发量大的情况下,如10000次里面仅有两次写的操作,其余都是读操作,那么会有9998次的操作加锁是没有必要的,这时候我们可以进行读写分离,将读的操作分布在多个从库,写的操作作用在主库。

  • 相关阅读:
    5. 添加后台管理页面
    4. 整合MyBatis
    3. 添加多个控制器
    2. 引入springmvc
    1. 开篇-springboot环境搭建
    去除angularjs路由的显眼的#号
    EasyUI DataGrid 分页实现示例
    等待对话框实现
    使用Struts2搭建登录注册示例
    观察者模式
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/14144947.html
Copyright © 2011-2022 走看看