zoukankan      html  css  js  c++  java
  • MySQL主从同步及读写分离

    主服务器ip:192.168.8.102,从服务器ip:192.168.8.103

    一、主库(master)配置

    1.修改mysql.ini配置文件,在mysqld下添加如下配置,并重启mysql服务

    [mysqld]
    server-id=1  //主库和从库要不一致
    log-bin=mysql-bin
    binlog-do-db=mstest_db   //同步数据库,要与从库里配置的数据库名保持一致   可以添加多个

    2.验证配置是否成功

    a.通过“SHOW VARIABLES LIKE 'server_id';”命令查看

     b.查看主库的状态,其中file和position在从库配置中会用到,注意每次修改主库的mysql.ini文件,file和position参数都会变

     

     3.授权给从服务器(slave)同步数据的账号密码

    GRANT REPLICATION SLAVE ON *.*TO 'root'@'192.168.8.103' IDENTIFIED BY '123456';

    参数说明:

    • root:从库连接主库使用的账号
    • IDENTIFIED BY '123456':从库连接主库使用的密码
    • 192.168.8.103:从库服务器ip

    主库(master)配置完成

    二、从库(slave配置)

    1.修改mysql.ini配置文件,在mysqld下添加如下配置,并重启mysql服务

    [mysqld]
    server-id=2  //与主库不能相同
    log-bin=mysql-bin
    slave-net-timeout=60  //重连时间
    replicate-do-db=mstest_db  //同步数据库  要与主库里配置的数据库名保持一致

    说明:将主库中需要同步的数据库导入到从库,也可以新建,但必须保证数据库名、表名、字段名、数据类型全部保持一致,主从数据库保持一致

    2.在从服务器上设置同步命令

    -- 停止从库
    stop slave; 
    -- 设置同步 
    b.master_host='192.168.8.102',master_port=3306,master_user='root',master_password='123456',master_log_file='mysql-bin.000009',master_log_pos=1119;
    --  开启从库
    start slave  

     如果在执行第二步命令时出错“Could not initialize master info structure, more error messages can be found in the MySQL error log”,可以先执行“reset slave;”重置从库命令即可。

    3.检测主从是否打通

    执行“show slave status”命令,查看“ Slave_IO_Running ”和“ Slave_SQL_Running ”是否都为yes。都为yes即标识主从同步

      

    从库(slave)配置完成

     三、测试主从是否同步

    主数据库user字段格式如下,从数据库也须与主数据库格式一致

     

     在主数据库中插入一条数据,并查询

    INSERT INTO user (id,name,age) VALUES (null,'aabb',111);
    
    select * from user;

     

     在主库添加之后,再到从数据库中查看,数据是否同步到从库

    select * from user;

     

     可以看到在主库添加的数据,在从库里也能查询到,说明主从同步成功。

    需要注意几点:

    1. 配置主从数据库mysql.ini文件时,同步的数据库要保持一致,两个数据库的表名、字段、类型都要保持一致,最好从主库导出,再导入到从库
    2. 主从库的server-id不能相同
    3. 在从库中设置同步时,如果报错,可以先reset slave重置从库

    关于如何在ThinkPHP5运用,可以参看ThinkPHP5分布式数据库读写分离

  • 相关阅读:
    服务器时间同步
    DataX部署安装
    Mysql ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction 解决方法
    mysql 使用需要注意的问题
    利用mysqldump 将一个表按条件导出数据
    mysql存储引擎分类
    MySQL数据备份之mysqldump使用
    count(1)、count(*)与count(列名)的执行区别
    rsync + sersync 实现实时数据同步
    ipmitool 工具使用
  • 原文地址:https://www.cnblogs.com/zxf100/p/14086082.html
Copyright © 2011-2022 走看看