• mysql的复制


    MYSQL的复制

    复制原理

    复制原理分为三个步骤:
    主服务器把数据更新记录到二进制日志中
    从服务器把主服务器的二进制日志拷贝到自己的中继日志中
    从服务器重做中继日志中的时间,把更新应用到自己的数据库上

    从服务器有两个进程:一个是I/O线程,负责读取主服务器的二进制日志,并将其保存为中继日志;另一个是SQL线程,复制执行中继日志

    复制的流程

    1配置master;
    2:配置slave;
    3:将slave连接到master

    复制的具体操作

    配置master

    1)修改/etc/m.cnf 配置master

    server-id=1
    log-bin=master-bin
    log-bin-index=master-bin.index
    

    解析:log-bin 给出了二进制产生的文件的基本名;login-bin-index给出了二进制索引文件的文件名。每一个服务器都应该有唯一的server-id。
    修改之后重启master使配置生效
    2)在master创建一个复制用户

    mysql> create user repl_user;
    Query OK, 0 rows affected (0.00 sec)
    mysql> grant replication slave on *.* to rel_user identified by 'redhat';
    Query OK, 0 rows affected (0.00 sec)
    

    解析:replication slave权限并没有什么特别之处,只是让这个用户能够从master上取的二进制日志的转储数据。

    配置slave

    1)配置my.cnf文件

    server-id=2
    relay-log-index=slave-relay-bin.index
    relay-log=slave-relay-bin
    

    2)链接master和slave
    将slave指向master,让它直到从哪里复制,为次需要知道master的主机名,端口号,master上拥有replication slave权限的帐号和密码

    mysql> change master to master_host='master-1', master_port=3306, master_user='repl_user', master_password='redhat';
    Query OK, 0 rows affected (0.27 sec)
    

    然后执行start slave开始执行复制

    观察复制的动作

    mysql> select * from ll;
    mysql> flush logs;   
    Query OK, 0 rows affected (0.30 sec)
    

    Flush logs 命令以强制轮换二进制日志,从而得到一个完整的二进制文件
    mysql> show binlog eventsG 检查二进制文件里有哪些事件

    mysql> show master status; 命令来查看当前正在写入的是哪个二进制文件
    mysql> show master status;
    +-------------------+----------+--------------+------------------+
    | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +-------------------+----------+--------------+------------------+
    | master-bin.000004 |      106 |              |                  |
    +-------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)
    

    析:reset master(在master上)删除所有的二进制文件,确保没有slave链接到该master上;
    Reset slaves(在slave上),先执行stop slave命令,确保slave上没有活动的复制

    复制后续

    刚才的复制并没有说明复制从哪里开始,所以slave将从他开始,读取master的二进制文件。这里change master to命令有两个有用的参数,即master_log_file
    Master_log_pos。使用这些参数指定master开始发送时加的binlog位置,而不是从头开始。

    > change master to master_host='172.25.254.224',master_port=3306,master_user='repl_user',master_password='redhat',master_log_file='master-bin.000004',master_log_pos=106;
    
  • 相关阅读:
    NPOI 的使用心得
    uploadfiy 动态传递Form 参数
    积分系统总结
    easyui dataBox 增加一天,减少一天
    easyui datagrid footer 页脚问题
    sql server 视图 的一个例子
    sql server int 列 NULLIF,isnull 判断是0还是1 ,如果是0就变成1
    easyui 小知识
    获取 日期 最后一天
    my97 日期控件
  • 原文地址:https://www.cnblogs.com/hanfei-1005/p/5691033.html
Copyright © 2020-2023  润新知