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则配置成功。

  • 相关阅读:
    CodeForces Gym 100500A A. Poetry Challenge DFS
    CDOJ 486 Good Morning 傻逼题
    CDOJ 483 Data Structure Problem DFS
    CDOJ 482 Charitable Exchange bfs
    CDOJ 481 Apparent Magnitude 水题
    Codeforces Gym 100637G G. #TheDress 暴力
    Gym 100637F F. The Pool for Lucky Ones 暴力
    Codeforces Gym 100637B B. Lunch 找规律
    Codeforces Gym 100637A A. Nano alarm-clocks 前缀和
    TC SRM 663 div2 B AABB 逆推
  • 原文地址:https://www.cnblogs.com/wyglog/p/12405817.html
Copyright © 2011-2022 走看看