Mysql基础知识,主从复制

1. 介绍

MySQL数据库支持单向、双向、链式级联、环状等不同业务场景的复制。在复制过程中,一台服务器充当主服务器(Master),接收来自用户的内容更新,而一个或多个其他的服务器充当从服务器(Slave),接收来自主服务器binlog文件的日志内容,解析出SQL,重新更新到从数据库,使得主从服务器的数据达到一致。
  如果设置了链式级联复制,那么从服务器本身除了充当从服务器外,也会同时充当其下面从服务器的主服务器,链式级联复制类似A—>B—>C的复制形式

MySQL的主从复制的主要场景有以下几个:

  1. 从服务器作为主服务器的实时数据备份
  2. 主从服务器实现读写分离(主写从读),从服务器实现负载均衡
  3. 把多个从服务器根据业务重要性进行拆分访问(从服务器根据业务进行拆分)

1.1 原理

MySQL的主从复制是一个异步的复制过程(一般情况下感觉是实时的),数据将从一个MySQL数据库(Master)复制到另外一个MySQL数据库(Slave),在Master与Slave之间实现整个主从复制的过程是由三个线程参与完成的。其中有两个线程(SQL线程和I/O线程)在Slave端,另外一个线程(I/O线程)在Master端。
  要实现MySQL的主从复制,首先必须打开Master端的binlog记录功能,否则就无法实现。因为整个复制过程实际上就是Slave端从Master端获取binlog日志,然后再在Slave上以相同的顺序执行获取的binlog日志中所记录的各种SQL操作。

2. 配置

2.1 配置主服务器

  1. 更改配置文件,首先检查你的主服务器上的my.cnf的位置(whereis my.conf)并编辑(vim /etc/my.cnf)
    在这里插入图片描述

  2. 查看文件中是否已经在[mysqld]模块下配置了log-bin和server-id文件中是否已经在[mysqld]模块下

    [mysqld]
    log-bin=mysql-bin     //将mysql二进制日志取名为mysql-bin
    server-id=1     	  //为服务器设置一个独一无二的id便于区分,这里使用ip地址的最后一位充当server-id
    

    在这里插入图片描述
    保存后并退出(wq),完后重启mysql服务(service mysqld restart)
    在这里插入图片描述

  3. 登陆主服务器(mysql -uroot -pXXXXX),分别输入show variables like 'server_id';show variables like 'log_bin';来查看是否已经配置好server_id,和开启日志功能.
    在这里插入图片描述

  4. 配置具有复制权限的用户slave,操作命令是:grant replication slave on *.* to 'slave'@'%.%' identified by '111111';
    在这里插入图片描述

  5. 最后查看主服务器的日志(show master status;)

    请记住File和Position的信息,后面从服务器的配置会用到!!!
    在这里插入图片描述

2.2 配置从服务器

我们的从服务器用的是本地虚拟环境配置的(phpStudy + Navicat for MySQL)

  1. 配置本地my.cnf,设置server_id=10,切记不可和主服务器相同.
    在这里插入图片描述
  2. 关闭slave(如果你以前配置过主从的话,一定要先关闭,没有的话忽略此步骤)命令:stop slave;
  3. 完后登陆从服务器的mysql,执行命令:
    change master to master_host='118.24.205.235',master_port=3306,master_user='slave',master_password='111111',master_log_file='mysql-bin.000014',master_log_pos=252;
    
    MASTER_HOST : 设置要连接的主服务器的ip地址
    MASTER_USER : 设置要连接的主服务器的用户名
    MASTER_PASSWORD : 设置要连接的主服务器的密码
    MASTER_LOG_FILE : 设置要连接的主服务器的bin日志的日志名称,即上面第5步得到的信息
    MASTER_LOG_POS : 设置要连接的主服务器的bin日志的记录位置,即上面第5步得到的信息,(这里注意,最后一项不需要加引号。否则配置失败)
  4. 最后启动服务: start slave;并查询服务是否开启(show slave status\G;);
    在这里插入图片描述

2.3 异常处理

一般的异常只需要跳过一步即可恢复

mysql> stop slave;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值