zoukankan      html  css  js  c++  java
  • MySQL数据库主从复制实践

        MySQL 主从(MySQL Replication),主要用于 MySQL 的实时备份、高可用HA、读写分离。在配置主从复制之前需要先准备 2 台 MySQL 服务器。

    一、MySQL主从原理

    1. 每个从仅可以设置一个主。
    2. 主在执行 SQL 之后,记录二进制 LOG 文件(bin-log)。
    3. 从连接主,并从主获取 binlog,存于本地 relay-log,并从上次记住的位置起执行 SQL,一旦遇到错误则停止同步。

    二、Replication原理推论

    1. 主从间的数据库不是实时同步,就算网络连接正常,也存在瞬间,主从数据不一致。
    2. 如果主从的网络断开,从会在网络正常后,批量同步。
    3. 如果对从进行修改数据,很可能从在执行主的bin-log出错而停止同步,一般不会修改从的数据。
    4. 一个衍生的配置是双主,互为主从配置,只要双方的修改不冲突,可以工作良好。
    5. 如果需要多主的话,可以用环形配置,这样任意一个节点的修改都可以同步到所有节点。
    6. 可以应用在读写分离的场景中,用以降低单台 MySQL 服务器的 I/O。
    7. 可以实现 MySQL 服务的 HA 集群。
    8. 可以是一主多从,也可以是相互主从(主主)。

    三、实验环境

    • 操作系统:CentOS 6.8_x64
    • Mysql版本:5.1.73(主从版本要一致)
    • Mysql安装:yum安装的方式
    • 主 IP 地址:192.168.0.8(master)
    • 从 IP 地址:192.168.0.18(slave)

    四、主从的基本配置

    1、对master的设置

       修改 master 数据库的配置文件,vim /etc/my.cnf

    [mysqld]
    ... ... ... ...
    log-bin=mysql-bin    # 二进制日志名称,开启bin-log
    server-id=8              # 为服务器设置一个独一无二的id,这里用IP的最后一位。

      重启 master 数据库服务:

    service mysqld restart

    2、对slave的设置

       对于 slave 的设置,不需要开启二进制日志,仅需要设置以下 server-id 即可。

    server-id=18

       重启从服务区器。

    五、创建主从复制账号

       为了让 slave 能够通过 master 来获取二进制日志,需要专门给 slave 创建一个用户 repl,在主上操作。

    mysql> grant replication slave on *.* to 'repl'@'192.168.0.18' identified by '123456';
    Query OK, 0 rows affected (0.00 sec)

    六、查看主服务器BIN日志的信息

       执行完之后记录下这两值,然后在配置完从服务器之前不要对主服务器进行任何操作,因为每次操作数据库时这两值会发生改变。

    mysql> show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 |      259 |              |                  |
    +------------------+----------+--------------+------------------+

    七、设置从服务器并启用slave

       从上执行如下代码:

    mysql> change master to
        -> master_host="192.168.0.8",
        -> master_user="repl",
        -> master_password="123456",
        -> master_log_file="mysql-bin.000001",
        -> master_log_pos=248;

       在从服务器配置完成,启动从服务器:

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

       查看主从设置是否成功:

    mysql> show slave statusG;
    ... ... ... ...
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

       上面两项均为yes,说明配置成功。

    八、测试主从

       在主节点上创建一个数据库test或一张表table,然后在从节点上查看是否有test数据库或table表的创建。

    本文转载自:http://www.cnblogs.com/liwei0526vip/p/6412493.html

  • 相关阅读:
    【Python五篇慢慢弹(3)】函数修行知python
    【Python五篇慢慢弹】数据结构看python
    【项目管理】GitHub使用操作指南
    【Python五篇慢慢弹】快速上手学python
    【NLP】十分钟快览自然语言处理学习总结
    【NLP】条件随机场知识扩展延伸(五)
    【NLP】基于统计学习方法角度谈谈CRF(四)
    【NLP】基于机器学习角度谈谈CRF(三)
    【NLP】基于自然语言处理角度谈谈CRF(二)
    【NLP】前戏:一起走进条件随机场(一)
  • 原文地址:https://www.cnblogs.com/wangwust/p/6430341.html
Copyright © 2011-2022 走看看