侧边栏壁纸
  • 累计撰写 98 篇文章
  • 累计创建 20 个标签
  • 累计收到 3 条评论

mysql主从复制

林贤钦
2020-06-05 / 0 评论 / 12 点赞 / 722 阅读 / 0 字
温馨提示:
本文最后更新于 2020-06-05,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

mysql主从复制

概念

复制是指将主数据库的DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。

MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制。

复制原理

复制分成三步:

  • Master 主库在事务提交时,会把数据变更作为时间 Events 记录在二进制日志文件 Binlog 中。

  • 主库推送二进制日志文件 Binlog 中的日志事件到从库的中继日志 Relay Log 。

  • slave重做中继日志中的事件,将改变反映它自己的数据。

复制优势

MySQL 复制的有点主要包含以下三个方面:

  • 主库出现问题,可以快速切换到从库提供服务。

  • 可以在从库上执行查询操作,从主库中更新,实现读写分离,降低主库的访问压力。

  • 可以在从库中执行备份,以避免备份期间影响主库的服务。

搭建步骤

以windows 10为主,centOs 7为从作为例子

安装mysql过程省略

在master端(Windows 10):

  1. 修改mysql安装目录下的my.ini文件,添加以下内容

    #同步日志的文件存放路径
    log-bin=D:\SoftWareArea\mysql-5.7.29-winx64\mysql-bin
    log-bin-index=mysql-bin.index
    #备份哪些些数据库的二进制日志
    binlog-do-db=itxiaolin
    #也可以直接设置哪些数据库不同步
    binlog-ignore-db=mysql
    #[必须]服务器唯一ID,默认是1,一般取IP最后一段
    server-id=1

  2. 修改完成后要重启mysql服务

  3. 登陆mysql,给从机配置登录名,登陆,密码和权限

    grant replication slave,reload,super on . to itxiaolin@192.168.235.136 identified by 'itxiaolin';

  4. 查看主机状态

    查出主机的file和postin在从机配置中需要使用,记住即可。

    show master status;

    +------------------+----------+--------------+------------------+-------------------+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000002 | 154 | itxiaolin | mysql | |
    +------------------+----------+--------------+------------------+-------------------+

  5. 关闭防火墙,这里就搞定了

在slave端(centos 7):

  1. 修改mysql的配置文件 (配置之后需要重启mysql service mysql restart

    vim /etc/my.cnf
    

    server-id=88   #同样随机,保证整数唯一即可
    replicate-do-db=itxiaolin #复写(同步)哪一个数据库

  2. 测试主机的远程连接是否成功(必要测试)

    mysql -uitxiaolin -h 192.168.235.1 -pitxiaolin

  3. 连接成功后退出主机mysql,进入从机mysql

    mysql -uroot -p

  4. 关闭从机同步连接

    stop slave;

  5. 开启同步

    change master to
    master_host='192.168.235.1',
    master_user='itxiaolin',
    master_password='itxiaolin',
    master_log_file='mysql-bin.000002',
    master_log_pos=154;

  6. 开启同步连接

start slave;

  1. 查看主从机连接信息

    show slave status\G;

    出现两个yes就说明成功了

    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

12

评论区