zoukankan      html  css  js  c++  java
  • MySQL主从复制(Master-Slave)实践

    下图就描述了一个多个数据库间主从复制与读写分离的模型(来源网络):

    用途及条件 

     mysql主从复制用途
    • 实时灾备,用于故障切换
    • 读写分离,提供查询服务
    • 备份,避免影响业务
     主从部署必要条件:
    • 主库开启binlog日志(设置log-bin参数)
    • 主从server-id不同
    • 从库服务器能连通主库

    原理

     mysql主从复制原理

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

      i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
      主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
     SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;
     
    实现MySQL主从复制需要进行的配置:
     实现步骤:
      1.首先修改mysql的配置文件,使其支持二进制日志功能。
        打开主服务器的mysql配置文件:my.conf
        代码:# vi /etc/my.cnf
        加入如下三行代码:

      参数解释:

         log-bin=mysql-bin  //将mysql二进制日志取名为mysql-bin

           binlog_format=mixed //二进制日志的格式,有三种:statement/row/mixed,具体分别不多做解释,这里使用mixed

           server-id=101 //为服务器设置一个独一无二的id便于区分,这里使用ip地址的最后一位充当server-id 

      配置完成,:wq 保存,重启mysql

      重启mysql命令:# service mysqld restart

      同样的,进入从服务器,配置从服务器的my.cnf,重复步骤1即可,

      唯一的区别是,server-id要改成从服务器的ip尾位,即server-id=105;其他两项是一样的,保存,并重启mySQL;

    注:mysql的配置文件路径查询方式:

      1、Windows下MySQL的配置文件是my.ini,一般会在安装目录的根目录。

      2、Linux下MySQL的配置文件是my.cnf,一般会放在/etc/my.cnf,/etc/mysql/my.cnf。如果找不到,可以用find命令查找。

      3、Linux用rpm包安装的MySQL是不会安装/etc/my.cnf文件的

    查询配置文件路径方式:

      

     2.在主服务器上为从服务器分配一个账号,就像一把钥匙,从服务器拿着这个钥匙,才能到主服务器上来共享主服务器的日志文件。

      进入主服务器的mysql界面,

       命令: # mysql -u root -p 111111     //我这里mysql账号是root,密码是111111

       在mysql操作界面下,输入下面一行命令:

       GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '111111'; 

     3.查看主服务器BIN日志的信息(执行完之后记录下这两值,然后在配置完从服务器之前不要对主服务器进行任何操作,因为每次操作数据库时这两值会发生改变).

     

     4.设置从服务器

       进入从服务器mysql

      命令: # mysql -u root -p111111

    关闭slave(如果你以前配置过主从的话,一定要先关闭)

    命令:stop slave;

    开始配置:

      输入下面代码即可:

     

    参数解释:MASTER_HOST  :  设置要连接的主服务器的ip地址

           MASTER_USER  :  设置要连接的主服务器的用户名

           MASTER_PASSWORD  :  设置要连接的主服务器的密码

           MASTER_LOG_FILE  :  设置要连接的主服务器的bin日志的日志名称,即第3步得到的信息

           MASTER_LOG_POS  :  设置要连接的主服务器的bin日志的记录位置,即第3步得到的信息,(这里注意,最后一项不需要加引号。否则配置失败)

    先在从服务器配置完成,启动从服务器:

      命令: start slave;

    5.查看是否配置成功:

      命令: show slave status;

     

    上面两项均为yes,说明配置成功

     master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在mysql配置文件的[mysqld]可添加修改如下选项: 

    # 不同步哪些数据库  
    binlog-ignore-db = mysql  
    binlog-ignore-db = test  
    binlog-ignore-db = information_schema  
      
    # 只同步哪些数据库,除此之外,其他不同步  
    binlog-do-db = game
  • 相关阅读:
    提交暂存更改时报 is outside repository 解决办法
    vue 路由跳转传参
    Unexpected token u in JSON at position 0 解决
    解决element table错位的问题
    使用docker制作Mysql镜像
    Linux系统性能排查
    分盘挂载
    Shell中的变量
    Shell流程控制
    Shell条件判断
  • 原文地址:https://www.cnblogs.com/myseries/p/10862684.html
Copyright © 2011-2022 走看看