• linux中mysql主从复制原理及配置


    原理:

    1、master服务器上的数据发生改变时,会将改变的数据记录到二进制binlog日志中。

    2、当slave服务器发现master的binlog发生改变时,会开启一个I/O线程去请求连接master服务器,并请求从指定binlog日志文件的指定位置之后发送binlog日志内容。

    3、当master服务器收到来自slave服务器的I/O线程请求后,master回开启一个dump线程,用来将指定binlog日志文件指定位置之后的内容返回给slave服务器。

    4、当slave服务器的I/O线程获取到master的binlog日志内容后,会保存到slave本地的relay log(中继日志)文件(msql-relay-bin.xxxxxx)中。

    5、salve服务器的SQL线程会从relay log文件中读取日志信息,并解析成sql语句逐一执行,使其数据和master保持一致。应用完毕后的relaylog会被清理掉。

    注意事项:

    1、master一定要开启binlog日志功能(默认是关闭的),然后授予slave远程连接的权限。

    2、mysql主从复制,至少需要两个mysql服务。并且master和slave服务器上的mysql版本最好相同(如果不一致,那么要保证slave版本不低于master版本)。

    3、master和slave两节点间时间需同步。

    主从复制安装配置

    1、基础环境准备

    #操作系统
    centos 6.5
    #mysql版本
    5.7
    #两台虚拟机:
    node1:192.168.20.12 (主)
    node2:192.168.20.14 (从)

    2、安装mysql数据库,可参考linux环境安装mysql5.7

    3、在两台数据库中分别创建数据库

    create database mydb;

    mysql默认情况下binlog是关闭的,如下:

    4、在主(node1)服务器上,进行如下配置:

    # 修改配置文件,执行以下命令打开mysql配置文件
    vi /etc/my.cnf
    # 在文件的最下面增加如下配置信息
    log-bin=master-bin      #binlog二进制文件名称
    binlog-format=ROW       #binlog二进制格式。有row、statement、mixed三种格式
    server-id=1             #唯一标识,主从不一样就行
    binlog-do-db=mydb       #同步的数据库名称

     5、在主(node1)服务器上,登录mysql服务,配置从库登录主库的账号并授权:

    set global validate_password_policy=0;
    set global validate_password_length=4;
    grant replication slave on *.* to 'root'@'%' identified by '123456';
    flush privileges;

    6、查看master状态(之前配置过,所有下面的file是从000003开始,否则应该是000001)

     现有的master log信息(日志文件是在保存在/var/lib/mysql下)

     7、重启mysql服务,然后在从(node2)服务器上配置:

    change master to 
    master_host
    ='192.168.20.12', #主库地址 master_user='root', #授权账户 master_password='123456', #授权账户密码 master_port=3306, #主库端口 master_log_file='master-bin.000003', #下次同步的主库起始binlog文件 master_log_pos=154; #下次同步的主库起始位置

    这里的配置,必须跟第6步中主服务器状态的值一一对应(特别是master_log_file和master_log_pos)

    8、启动slave主从复制

    start slave;

    9、检查slave状态

    show slave statusG

    从上面可以看到主从复制的相关配置信息。如果Slave_IO_Running=Yes,Slave_SQL_Running=yes,则表示配置成功

    在从服务器/var/lib/mysql目录下,可以看到多了几个relay-bin中继日志文件:

     10、此时可以在主服务器上进行相关的增删改操作,在从服务器上查看结果是否同步

  • 相关阅读:
    scrapy 随机UserAgent
    Scrapy使用中间件捕获Spider抛出的异常
    10.16-arrarylist
    10.15_package_2
    10.14_package_1
    10.13_enum_2
    10.12-enum_1
    10.11-java的接口2
    10.10-3对象和类_动手动脑-java的接口
    10.9-java的封装
  • 原文地址:https://www.cnblogs.com/xuwenjin/p/14010621.html
Copyright © 2020-2023  润新知