zoukankan      html  css  js  c++  java
  • mysql主从同步

    我是在同一台windows安装的两个mysql服务。

    1.首先正常安装第一份mysql,默认端口是3306;

    2.复制一份文件到另外的路径下(建议使用不同的磁盘)

    3.然后修改里面的配置文件,例如

    [client]
    default-character-set=utf8mb4
    port=3307
    [mysqld]
    basedir=E:mysql-5.7.25-winx64
    datadir=E:mysql-5.7.25-winx64data
    port=3307
    
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    [mysql]
    default-character-set=utf8mb4

    我把从库的端口设置为3307,安装到E盘;主库安装到D盘的。

    4.在cmd中执行以下命令,安装服务

    mysqld install mysql2  --defaults-file="E:mysql-5.7.25-winx64/my.ini"

    5.修改注册表的服务路径,不然启动的还是mysql 3306的服务

    在cmd中运行regedit进入注册表管理

    找到

    HKEY_LOCAL_MACHINE-->SYSTEM-->CurrentControlSet-->Services

    里面有刚刚创建的mysql2服务

    最后修改下红框的路径即可,一般只需修改前面的。

     至此,两个mysql服务已经完成。接下来就是配置主从同步。

    一:修改主库配置文件

    [client]
    default-character-set=utf8mb4
    [mysqld]
    basedir=D:mysql-5.7.25-winx64
    datadir=D:mysql-5.7.25-winx64data
    port=3306
    
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    
    # 主库配置
    
    server-id = 1
    
    binlog-do-db = hangfiretest #要同步的数据库
    
    #binlog-ignore-db = mysql   #不同步的数据库,如果指定了binlog-do-db这里应该可以不用指定的
    
    log-bin = mysql-bin #要生成的二进制日记文件名称
    
    
    [mysql]
    default-character-set=utf8mb4

    主库配置如上。

    二:修改从库配置文件

    [client]
    default-character-set=utf8mb4
    port=3307
    [mysqld]
    basedir=E:mysql-5.7.25-winx64
    datadir=E:mysql-5.7.25-winx64data
    port=3307
    
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    
    # 从库配置
    server-id=2
    #要同步的数据库
    replicate-do-db = hangfiretest 
    #不同步的数据库,如果指定了binlog-do-db这里应该可以不用指定的
    #binlog-ignore-db = mysql   
    #要生成的二进制日记文件名称
    log-bin = mysql-bin 
    [mysql]
    default-character-set=utf8mb4

    其中要注意server-id不能相同。

    三:配置主库新用户,只具有同步的权限

    create user 'repl'@'127.0.0.1' identified by 'admin';
    GRANT REPLICATION SLAVE ON *.* TO 'rep'@'127.0.0.1'; 
    //这里可以指定具体数据库(hangfiretest.*) 我这里是指定的全部数据库权限
    //例如GRANT REPLICATION SLAVE ON hangfiretest.* TO 'rep'@'127.0.0.1'; 

    四:准备备份主库数据库

    保持主从mysql的hangfiretest数据库初始状态一致
    一般是先将所有的表加锁(只读),然后copy磁盘上的数据库文件夹。我这里直接停止服务,然后将数据文件拷贝过去

    你也可以通过Navicat直接备份一个,然后还原过去。

    然后在主数据库里面运行show master statusG(注意有G后面不加;,否则报错<no query specified>) 记下file和position字段对应的参数

    五:在从库设置它的master

    同样cmd在mysql从服务 bin目录执行

    E:mysql-5.7.25-winx64in>mysql -uroot -padmin

    然后执行

    change master to master_host='127.0.0.1', master_port=3306, master_user='rep', master_password='admin', master_log_file='mysql-bin.000001', master_log_pos=609;

     注意:master_port对应主库的端口,master_log_file和master_log_pos对应刚才show master status记下的参数。

    六:在从库开启从数据库复制功能

    start slave; (mysql5.5是slave start;启动)
    在从库可以通过show slave statusG来查看一些参数。

    发现红框是运行的就ok。

    如果第一个未运行可以参考:https://www.jb51.net/article/39935.htm

    最后测试是否成功;左图为主库,右图为从库

    大部分参考至https://www.jianshu.com/p/0d07b446ae33

  • 相关阅读:
    debian8 vga 文本模式下出现闪屏
    Delphi中根据分类数据生成树形结构的最优方法
    SQL获取每月、每季度、每年的最后一天记录
    Delphi实现树型结构
    Delphi中initialization和finalization
    Delphi 连接 Paradox
    delphi2007单个文件(pas)的控件安装
    Delphi安装*.pas扩展名的控件
    数据库组件介绍(Delphi)
    Delphi控件开发浅入深出(三)
  • 原文地址:https://www.cnblogs.com/FateHuli/p/11027652.html
Copyright © 2011-2022 走看看