美文网首页
配置基于日志的复制

配置基于日志的复制

作者: 空谷幽心 | 来源:发表于2018-08-26 22:11 被阅读16次

基本原理

  1. 一台mysql服务器作为master节点,其他服务器作为slave节点。每个节点需要配置全局唯一的server-id
  2. master将操作记录在binary log中,slave同步binary log,通过回放重做来获得master的变更,实现数据复制。

原理图如下:


优缺点

配置过程

  1. 配置master服务器。

    1. my.cnf文件的mysqld节点中新增以下配置并重启服务器。
     [mysqld] 
     server-id=1 //需全局唯一
     log_bin=/home/dalton/d_arch_exp/mysql_cluster/mysql1/mysql-bin.log
     binlog_do_db=test_repl  //可选,默认是所有数据库。可以配置多个数据库。
    
    1. 新建用于同步的用户。要将复制的权限和使用待复制的数据库的权限赋给新用户,没有权限会导致slave无法连接master。
    create user repl_01 identified by 'loveme123';
    grant replication slave on *.* to repl_01;
    grant all privileges on test_repl.* to 'repl_01'@'%';
    flush privileges;
    
  2. 配置slave服务器
    my.cnf文件的mysqld节点新增以下配置。

     [mysqld] 
     server-id=2
     relay-log=/home/dalton/d_arch_exp/mysql_cluster/mysql2/mysql-relay-bin.log
     log_bin=/home/dalton/d_arch_exp/mysql_cluster/mysql2/mysql-bin.log
     binlog_do_db=test_repl
    
  3. 同步基准数据。
    导出master节点待同步数据库的数据,然后导入到slave数据库中。这期间可以给数据库加read lock或者停止数据库,以防止发生其他变更。

    1. 导出数据:
    mysqldump -u root -p --opt test_repl > test_repl.sql
    
    1. 给数据库加锁。这个操作需要重新打开一个mysql终端连到master节点。
    use test_repl;
    FLUSH TABLES WITH READ LOCK;
    
    1. 记录当前使用的日志文件及位置
    SHOW MASTER STATUS;
    

    输出内容如下,使用的文件是mysql-bin.000002,偏移是1253

    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000002 |     1253 | test_repl    |                  |                   |
    +------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)
    
    1. 导入数据到slave服务器。
    mysql -u root -p test_repl < test_repl.sql
    
  4. 启动复制。

    1. 在slave节点执行change master操作。
    change master to master_host='127.0.0.1',master_port=3307,master_user='repl_01',master_password='loveme123',master_log_file='mysql-bin.000002',master_log_pos=1253;
    
    1. 启动slave。
    start slave;
    
    1. 查看slave状态。
    show slave status;
    

    如果是以下状态,Slave_IO_RunningSlave_SQL_Running都是Yes,则表明配置ok。

    1. slave都启动好了就可以去掉master上的锁。
    UNLOCK TABLES;
    QUIT;
    
  5. 可能碰到的几个错误

    1. 启动slave后,状态表中显示 Slave failed to initialize relay log info structure from the repository
      解决方法:重置slave。
      reset slave;
      
    2. 启动slave后,状态表中显示 error connecting to master 'repl_01@127.0.0.1:3307' - retry-time: 60 retries: 1
      解决方法:尝试用change master中的参数去连接master节点。一般都是参数或权限不对,导致的连接失败。理论上能正常连接的话slave不会报错。

相关文章

  • Mysql主从复制

    基于日志点的复制和基于GTID的复制; 基于日志点的主从复制 基于GTID的主从复制

  • 配置基于日志的复制

    基本原理 一台mysql服务器作为master节点,其他服务器作为slave节点。每个节点需要配置全局唯一的ser...

  • Mysql 的主从复制

    复制方式 通过主库上记录二进制日志,在备库重放日志的方式来实现异步的数据复制。 基于行的复制 基于语句的复制 复制...

  • MySQL主从复制

    配置MySQL主从复制,先来讲讲一些理论。 MySQL复制功能提供分担读负载。基于二进制日志的复制是异步的,那么复...

  • MySQL 5.7复制实例

    MySQL复制基础 1.MySQL的复制是异步复制 2.MySQL复制是基于binlog日志。 存在三种日志格式:...

  • MYSQL--进阶

    MYSQL主从复制 类别 基于日志点的复制支持MMM和MHA架构 基于GTID方式的复制GTID= source_...

  • MariaDB基于GTID的主从复制

    环境:MariaDB 10.1.23 MySQL复制有两种方式:基于日志点的复制、基于GTID的复制,两种方式都依...

  • 27-日志管理

    本章内容 ◆ 日志介绍◆ 日志配置◆ 日志管理◆ 远程日志◆ 基于MYSQL的日志 日志介绍 rsyslog 启用...

  • mysql 主从复制

    1. mysql的复制是异步复制,有延迟 原理: 2. mysql的复制是基于BinLog日志 Statemen...

  • mysql binlog基本原理

    基于binlog的主从复制 Mysql 5.0以后,支持通过binary log(二进制日志)以支持主从复制。复制...

网友评论

      本文标题:配置基于日志的复制

      本文链接:https://www.haomeiwen.com/subject/wrkaiftx.html