• MySql主从复制原理和环境配置搭建


    主从复制原理   

    实质就是通过二进制的sql文件实现主从复制

    MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现的主从复制,可以理解为我再Master端执行了一条SQL命令,那么在Salve端同样会执行一遍,从而达到主从复制的效果。 

    从库生成两个线程,一个I/O线程,一个SQL线程; 

    i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;

    主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog; 

    SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;

    MySql主从复制的作用

    故障切换,数据备份,读写分离,集群高可用等

    主从复制配置

    例:

    准备两台服务器

    192.168.1.101(master主Mysql))

    192.168.1.102(slave从Mysql)

    ①修改master主Mysql配置文件

    vim /etc/my.cnf
    server_id=101  #服务器id
    log-bin=mysql-bin   #开启日志文件

     然后 重启mysql服务

    service mysqld restart

    ②主服务器给从服务器账号授权

    GRANT REPLICATION SLAVE ON *.* to 'mastersync'@'%' identified by 'mysql_123456';#mastersync为自定义授权用户名 mastersync为自定义授权密码

    然后 navicat连接主mysql

    show master status;

    查询主mysql的状态 file为日志文件名 position为日志位置行

    修改slave从Mysql配置文件

    配置文件位置:
    window 上  可以登录到mysql中  使用 show variables like '%data%' 先找到data 存放路径, 一般my.ini 在 data文件的上一级
    linux 上 一般在/etc/my.cnf 这个位置

    vi /etc/my.cnf server_id=102 log-bin=mysql-bin binlog_do_db=site_test #要同步的数据库

    ④在从节点配置访问主节点的参数信息 添加 主节点主机,访问主节点的用户名及密码,主节点二进制文件信息

    #先停止同步
    stop slave
    #从节点配置访问主节点相关信息 账号密码,主日志文件及日志同步开始行(上面第二步查询主mysql的状态)
    change master to master_host='192.168.1.101',master_user='mastersync',master_password='mysql_123456',
             master_log_file='mysql-bin.000001',master_log_pos=13693;
    #启动开始同步
    start slave

    然后查看从mysql同步状态

    show slave status;

    可以看到

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    表示同步成功

    最后测试 主mysql数据库添加表添加数据 从mysql数据库刷新对应有相应的信息 

    主从复制配置成功

    附:如何考虑数据库集群时主键自增唯一性?设置步长

    show variables like 'auto_incre%'; -- 会话的自增属性值,同show session variables like 'auto_incre%';
    #修改会话自增的步长
    SET @@auto_increment_increment=2;
    #修改会话起始值
    SET @@auto_increment_offset=2;

    show global variables like 'auto_incre%';
    #修改全局自增的步长
    SET global auto_increment_increment=2;
    #修改全局起始值
    SET global auto_increment_offset=1;

  • 相关阅读:
    VS 2013 未找到与约束contractname Microsoft.VisualStudio.Utilities.IContentTypeRegistryService...匹配的导出[vs故障]【转】
    leetcode(一)Word Pattern
    [LeetCode]ZigZag Conversion
    C#元组示例详解
    C#使用委托进行异步编程。
    jQuery常用的元素查找方法总结
    泛型集合【转载】
    NPOI使用手册[转]
    总结Controller向View传值的方式(转)
    HttpHelper类
  • 原文地址:https://www.cnblogs.com/boris-et/p/10371289.html
Copyright © 2020-2023  润新知