zoukankan      html  css  js  c++  java
  • 基于日志点的复制

    前文讲过日志复制分为基于日志点的复制和基于GTID的复制。

    本文就讲一下基于日志点的复制过程。

    1.在主DB服务器上建立复制帐号。

    create user ‘repl’@ip 段 identified by ‘pwd’;

    create user repl@'192.168.1.%' identified by 'repl';

    授权

    grant replication slave on *.* to ‘repl’@ip 段;

    grant replication slave on *.* to repl@'192.168.1.%';

    2.配置主数据库服务器。

    bin_log=mysql-bin

    启用二进制日志,并指定日志名字。

    server_id =100

    需要指定serverid,在复制集群中必须唯一。

    3.从服务器配置。

    bin_log=mysql-bin

    server_id=101

    # 中继日志

    relay_log=mysql-relay-bin

    # 可选参数,是否把中继日志记录到当前的二进制日志中,

    #如果需要把当前从服务器,作为其他从服务器的复制源,则需要配置。

    log_slave_update=on

    # 安全配置参数,防止从写入

    read_only=on

    4.初始化从服务器的数据

    mysqldump ,此方法需要加锁。

    参数:

    –single-transaction :保证数据事务一致性,需要对数据库加锁,会造成阻塞。

    -master-data=2 : 记录主库二进制文件的偏移量信息。

    xtrabackup –slave-info 热备工具。

    使用innodb存储引擎是不会阻塞。

    mysqldump -uroot -p -P3308 --single-transaction --master-data --triggers --routines --all-databases >> all.sql

    从服务器导入数据

    mysql -uroot -p -P3309 <all.sql

    5.启动复制链路

    需要在从服务器上操作。

    change master to MASTER_HOST=’master_host_ip’,

    MASTER_USER=’repl’,

    MASTER_PASSWORD=’PWD’,

    MASTER_LOG_FILE=’MYSQL_LOG_FILE_NAME’,

    MASTER_LOG_POS=4;

    change master to master_host='localhost',
        -> master_user='repl',
        -> master_password='repl',
        -> MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=2162;

    这段可以在导出的文件中查找。

    image

     

    show slave status G

    查看复制链路状态。

    image

    启动复制链路

    start slave;

    image

     

    使用show processlist 查看服务线程。

    image

    一个IO线程,一个SQL线程。

    主服务器查看

    image

     

    启动了一个dump线程。

    6.验证复制效果:

    在节点A执行。

    image

     

    1.创建一个表。

    2.插入两条记录。

    在从服务器上查询。

    image

     

    发现数据同步了。

     

    优点:

    1.是mysql最早支持的复制技术,BUG相对较少。

    2.对SQL查询没有任何限制。

    3.故障处理比较容易。

    缺点:

    故障转移时重新获取新主的日志点信息比较困难。

  • 相关阅读:
    Dubbo 节点telnet测试
    node.js 文件下载
    node.js获取ip及mac
    excel中根据A列筛选B列填充C列
    django在读取数据库时未筛选到符合条件的记录会报错
    django分页功能
    django中命令行调试程序
    Python中if-else的多种写法
    python自定义函数的参数之四种表现形式
    python类变量和实例变量的区别
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/5911106.html
Copyright © 2011-2022 走看看