• Mysql读写分离,主从同步实现


    随着用户量的增多,数据库操作往往会成为一个系统的瓶颈所在,因此我们可以通过实现数据库的读写分离来提高系统的性能。

    通过设置主从数据库实现读写分离,主库负责“写”操作,从库负责“读”操作,根据压力情况,从库可以部署多个已提高“读”的速度,借此来提高系统总体的性能。

    要实现读写分离,就要解决主从数据库数据同步的问题,在主数据库写入数据后要保证从数据库的数据也要更新。

    主服务器(master)记录数据库操作日志到二进制日志(Binary log),从服务器开启i/o线程将二进制日志记录的操作同步到relay log中继日志(存在从服务器的缓存中),另外sql线程将relay log(中继日志)记录的操作在从服务器执行。 
    记住这张图,接下来基于这个图实际设置主从数据库。

    首先要有两个数据库服务器master(主库)、slave(从库)(也可以用一个服务器安装两套数据库环境运行在不同端口,slave也可以举一反三设置多个)。以下操作假设你的两台服务器上都已经安装好了mysql服务。

    1.打开mysql数据库配置文件

    vim /etc/my.cnf

    2.在主服务器master上配置开启Binary log,主要是在[mysqld]下面添加:

    #日志文件名

    log-bin = mysql-bin

    #主数据库端ID号

    server-id = 1

    3.重启mysql,并创建用于同步的账户

    service mysqld restart
    

     

    # 创建slave从库帐号slave_account,密码123456
    mysql>grant replication slave on *.* to 'slave_account'@'从库ip' identified by '123456';
    
    # 更新数据库权限
    mysql>flush privileges;
    

      

    4.检查配置效果,进入主数据库并执行

    mysql> SHOW MASTER STATUS;
    

    注:执行完这个步骤后不要再操作主数据库了,防止主数据库状态值变化

    5.配置从服务器的 my.cnf

    在[mysqld]节点下面添加:

    server-id = 2

    这里面的server-id 一定要和主库的不同。


    6.重启从数据库

    service mysql restart
    

    7.执行同步命令(进入从数据库执行)

    mysql>change master to master_host='主库ip',master_port=端口号,master_user='slave_account',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=9049;
    

    8.开启同步

    mysql> start slave;
    

      

    检查从数据库状态

      

    mysql > show slave status G
    

      

    Slave_IO_Running及Slave_SQL_Running进程必须正常运行,即YES状态,否则说明同步失败。

    接下来在主库的操作,在从库都会执行了。我们可以主库负责写,从库负责读,达到读写分离的效果。

     

  • 相关阅读:
    utils:一个通用枚举类
    代码片段(二):SQL片段
    Scala:(一) 特点及安装环境配置
    Scala:(二) 语言基础-数据结构、表达式(判断、循环、块表达式)
    11-docker搭建mysql一主一从
    10-docker搭建rabbitmq集群
    尚硅谷周阳面试第二季
    docker 修改mysql 表大小写铭感
    volatile的理解
    消息队列优缺点及其选型
  • 原文地址:https://www.cnblogs.com/qichao123/p/10677085.html
Copyright © 2020-2023  润新知