zoukankan      html  css  js  c++  java
  • MySQL复制(二)--基于二进制日志文件(binlog)配置复制

    image

    基础环境:

      主库 从库
    服务器IP地址 192.168.10.11 192.168.10.12
    版本 5.7.24 5.7.24
    已存在的数据库
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | lijiamandb         |
    | mysql              |
    | performance_schema |
    | sys                |
    | testdb             |
    +--------------------+
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+

    (一)主数据库复制相关参数配置(主)

    如果要使用复制功能,则必须开启二进制日志,如果要开启二进制日志,需要设置server-id参数,启动二进制日志需要重启数据库实例。最少的参数配置如下:

    [mysqld]
    log-bin=mysql-bin
    server-id=1

    但在实际使用中,还需配置其它参数,用于优化配置:

    • 如果未设置 server_id(或将其显式设置为其默认值0),则主服务器将拒绝从属服务器的任何连接;
    • 为了在InnoDB事务复制设置中获得最大的持久性和一致性,应在my.cnf文件中使用innodb_flush_log_at_trx_commit=1和sync_binlog=1;
    • 确保未在复制主机上启用系统变量skip_networking。如果已禁用网络连接,则从服务器将无法与主服务器通信,复制将失败。

    因此,我的my.cnf配置如下:

    [mysqld]
    # 复制相关参数配置
    server_id = 1
    binlog_format=ROW
    log_bin=/mysql/binlog/master-bin
    sync_binlog=1
    expire_logs_days=1
    max_binlog_size=1G
    sync_binlog=1
    innodb_flush_log_at_trx_commit=1


    (二)创建用于复制的用户(主)

    每个从服务器都需要使用MySQL的用户和密码连接到主服务器上,因此需要在主服务器上创建MySQL的用户,用于进行复制操作。可以为每个从库单独创建一个账号,也可以使用同一个账号。账号需具有“replication slave”权限。

    mysql> grant replication slave on *.* to 'rep'@'%' identified by '123';


    (三)初始化从库数据(从)

    初始化的方法有很多,可以使用mysqldump,也可以使用xtrabackup,其他方法见https://dev.mysql.com/doc/refman/5.7/en/replication-snapshot-method.html。这里以最常用的mysqldump进行操作。

    (3.1)首先对主库进行备份

    [root@slavedb ~]# mysqldump -uroot -p123456 -h 192.168.10.11 --single-transaction --all-databases --master-data=2  > master.sql
    mysqldump: [Warning] Using a password on the command line interface can be insecure.
    
    [root@slavedb ~]# ls -l
    total 1058724
    -rw-r--r--  1 root root 1084126048 Feb 15 19:30 master.sql

    注意:--master-data=2不可缺少,该参数会将备份到的位置以注释的形式保存在备份集文件中。

    (3.2)在备库上还原

    [root@slavedb ~]# mysql -uroot -p123456 < master.sql 
    mysql: [Warning] Using a password on the command line interface can be insecure.

    (3.3)确认备库还原到的位置

    [root@slavedb ~]# cat master.sql |grep "CHANGE MASTER"|less
    
    -- CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000021', MASTER_LOG_POS=610;

    (四)从数据库复制相关参数配置(从)

    如果尚未设置从服务器ID,或者当前值与您为主服务器选择的值冲突,请关闭从服务器并编辑[mysqld]配置文件的 部分以指定唯一的服务器ID。例如:

    [mysqld]
    server_id = 2

    注意:不必在从属服务器上启用二进制日志记录即可设置复制。但是,如果在从属服务器上启用二进制日志记录,则可以使用从属服务器的二进制日志进行数据备份和崩溃恢复,也可以将从属服务器用作更复杂的复制拓扑的一部分(级联)。


    (五)将从数据库添加到复制环境(从)

    在从服务器设置主服务器配置信息:

    mysql> change master to 
        -> master_host='192.168.10.11',
        -> master_port=3306,
        -> master_user='rep',
        -> master_password='123',
        -> master_log_file='master-bin.000021',
        -> master_log_pos=610;

    启动从库复制相关进程:

    mysql> start slave;
    Query OK, 0 rows affected (0.01 sec)

    (六)确认复制状态

    在从库执行“ show slave status ”,如果Slave_IO_Running和Slave_SQL_Running都是“YES”,说明复制正常。

    mysql> show slave status G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.10.11
                      Master_User: rep
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: master-bin.000022
              Read_Master_Log_Pos: 1192320
                   Relay_Log_File: slavedb-relay-bin.000005
                    Relay_Log_Pos: 1192535
            Relay_Master_Log_File: master-bin.000022
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                  Replicate_Do_DB: 
              Replicate_Ignore_DB: 
               Replicate_Do_Table: 
           Replicate_Ignore_Table: 
          Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: 
                       Last_Errno: 0
                       Last_Error: 
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 1192320
                  Relay_Log_Space: 1192911
                  Until_Condition: None
                   Until_Log_File: 
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File: 
               Master_SSL_CA_Path: 
                  Master_SSL_Cert: 
                Master_SSL_Cipher: 
                   Master_SSL_Key: 
            Seconds_Behind_Master: 0
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error: 
                   Last_SQL_Errno: 0
                   Last_SQL_Error: 
      Replicate_Ignore_Server_Ids: 
                 Master_Server_Id: 1
                      Master_UUID: caa64a22-481a-11ea-b0f1-000c29fb6200
                 Master_Info_File: /mysql/data/master.info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
               Master_Retry_Count: 86400
                      Master_Bind: 
          Last_IO_Error_Timestamp: 
         Last_SQL_Error_Timestamp: 
                   Master_SSL_Crl: 
               Master_SSL_Crlpath: 
               Retrieved_Gtid_Set: 
                Executed_Gtid_Set: 
                    Auto_Position: 0
             Replicate_Rewrite_DB: 
                     Channel_Name: 
               Master_TLS_Version: 
    1 row in set (0.00 sec)

    【完】

    附录:

    MySQL复制(replication)文档集合:

    1.复制概述
    2.基于二进制日志文件位置(binlog)配置复制
    3.基于全局事物标识符(GTID)配置复制
    4.多源复制
    5.级联复制
    6.半同步复制
    7.延迟复制
    8.复制过滤规则
    9.对复制进行故障排除
    10.故障切换
    11.复制管理
  • 相关阅读:
    VS2010导入DLL的总结
    [转]C#事件简单示例
    VS2010中实现TreeView和Panel的动态更新
    【JZOJ1282】打工
    【NOIP2016提高A组五校联考2】tree
    【NOIP2016提高A组五校联考2】running
    【NOIP2016提高A组五校联考2】string
    8月~9月学习总结
    NOIP2016提高A组五校联考2总结
    NOIP2016提高A组五校联考1总结
  • 原文地址:https://www.cnblogs.com/lijiaman/p/12313702.html
Copyright © 2011-2022 走看看