zoukankan      html  css  js  c++  java
  • mysql一主一从复制

    mysql之间数据复制的基础是二进制日志文件(binary log file)。一台mysql数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。

    实现MySQL主从复制要进行的配置:

    主服务器:
    开启二进制日志
    配置唯一的server-id
    获得master二进制日志文件名及位置
    创建一个用于slave和master通信的用户账号
    从服务器:
    配置唯一的server-id
    使用master分配的用户账号读取master二进制日志
    启用slave服务

    首先是主服务器master的修改

    1.修改mysql配置
    找到主数据库的配置文件my.cnf(或者my.ini),我的在/etc/mysql/my.cnf,在[mysqld]部分插入如下两行:
    [mysqld]
    log-bin=mysql-bin //开启二进制日志
    server-id=1 //设置server-id

    2.重启mysql,创建用于同步的用户账号
    打开mysql会话shell>mysql -uname -ppassword
    创建用户并授权:用户:bky 密码:bky@123
    mysql> CREATE USER bky@从服务器IP  IDENTIFIED BY 'bky@123';       //创建用户
    mysql> GRANT REPLICATION SLAVE ON . TO bky@从服务器IP;     //分配权限
    mysql>FLUSH PRIVILEGES;        //刷新权限

    3.查看master状态,记录二进制文件名(mysql-bin.00~)和位置(纯数字):
    SHOW MASTER STATUS;

    再是从服务器slave修改:
    1.修改mysql配置
    同样找到my.cnf配置文件,添加server-id
    [mysqld]
    server-id=2 //设置server-id,必须唯一

    2.重启mysql,打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):
    mysql> CHANGE MASTER TO
    -> MASTER_HOST='主服务器IP',
    -> MASTER_USER='bky',
    -> MASTER_PASSWORD='bky@123',
    -> MASTER_LOG_FILE='mysql-bin.000~',
    -> MASTER_LOG_POS=纯数字;

    最后启动slave同步进程:
    mysql>START SLAVE;

    查看slave状态:
    SHOW SLAVE STATUSG;

    如果SQL,I/O线程都是YES则配置成功。

  • 相关阅读:
    一道《编程之美》第一章的无解题引发的“血案”
    MapReduce实例2(自定义compare、partition)& shuffle机制
    MapReduce实例&YARN框架
    HDFS下载数据机制的底层分析
    在windows下的hdfs客户端编写
    C语言-第2次作业得分
    第2次作业得分-东师软工
    第1次作业得分-东师软工
    第3次作业-四则运算(结对作业)
    第2次作业-效能分析
  • 原文地址:https://www.cnblogs.com/wyglog/p/12405817.html
Copyright © 2011-2022 走看看