zoukankan      html  css  js  c++  java
  • Windows下mysql主从搭建

    话不多说奔主题,精神抖擞就是干!

    1.选用版本
    官网一般提供两种包
    mysql-8.0.21-winx64.zip免安装版
    mysql-installer-community-8.0.21.0.msi安装版
    这里我选用安装版
    最新包请去官网下载
    https://dev.mysql.com/downloads/mysql/
    https://dev.mysql.com/downloads/windows/installer/8.0.html


    2.搭建环境
    这里我使用三台Win10虚拟机进行搭建
    (1)路由节点
    10.6.10.250
    (2)其中一台Mysql节点(主)
    10.6.10.251
    (3)剩下一台Mysql节点(从)
    10.6.10.252
    *选用三台的原因是将路由节点单独部署,因为一旦路由节点宕机,主从服务将不可用


    3.路由节点(10.6.10.250)
    假设我这三台虚拟机的mysql程序配置文件路径都为:
    c:ProgramDataMYSQL
    我们进到MySQL Router目录下
    c:ProgramDataMYSQLMySQL Router
    打开该目录下的mysqlrouter.conf
    配置信息如下
    [DEFAULT]
    logging_folder = C:/ProgramData/MySQL/MySQL Router/log
    plugin_folder = C:/Program Files/MySQL/MySQL Router 8.0//lib
    runtime_folder = C:/ProgramData/MySQL/MySQL Router/run
    config_folder = C:/ProgramData/MySQL/MySQL Router/config
    data_folder = C:/ProgramData/MySQL/MySQL Router/data

    [logger]
    level = INFO

    [keepalive]
    interval = 60

    # 以下选项可用于路由标识的策略部分,客户端在连接MySQL Router时,根据IP和Port将选用不同的策略
    [routing:basic_failover]
    # Router地址
    bind_address = 10.6.10.250
    # Router端口
    bind_port = 7001
    # 读写模式
    mode = read-write
    # 目标服务器
    destinations = 10.6.10.251:3306,10.6.10.252:3306

    [routing:load_balance]
    bind_address = 10.6.10.250
    bind_port = 7002
    mode = read-only
    destinations = 10.6.10.251:3306,10.6.10.252:3306


    4.Mysql节点(10.6.10.251)主节点
    我们进到MySQL Server 8.0目录下
    C:ProgramDataMySQLMySQL Server 8.0
    打开该目录下的my.ini
    修改配置信息如下
    [mysqld]
    # Server Id.
    server-id=1

    # Binary Logging.
    log-bin=mysql-bin


    5.Mysql节点(10.6.10.252)从节点
    我们进到MySQL Server 8.0目录下
    C:ProgramDataMySQLMySQL Server 8.0
    打开该目录下的my.ini
    修改配置信息如下
    [mysqld]
    # Server Id.
    server-id=2


    6.开启服务
    (1)在10.6.10.250开启MySQL Router服务
    (2)在10.6.10.251和10.6.10.252分别开启MySQL服务


    7.在Mysql主节点(10.6.10.251)
    新打开一个cmd进到bin目录下
    C:Program FilesMySQLMySQL Server 8.0in
    键入命令
    mysql.exe -uroot -p
    *键入安装时设置的密码
    进入到mysql>,键入命令
    mysql>create user 'repl'@'%' identified by 'repl';
    mysql>grant replication slave on *.* to 'repl'@'%';
    mysql>flush privileges;
    mysql>select * from user where User='repl';
    mysql>show master status;
    *创建一个repl用户,赋给其任意IP访问权限和slave权限,并通过show master status语句查看当前主节点的bin-log文件和position记录下来,后面配置先从节点时要用


    8.在Mysql从节点(10.6.10.252)
    新打开一个cmd进到bin目录下
    C:Program FilesMySQLMySQL Server 8.0in
    键入命令
    mysql.exe -uroot -p
    *键入安装时设置的密码
    进入到mysql>,键入命令
    mysql>change master to MASTER_HOST='10.6.10.251',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1855;
    mysql>stop slave;
    mysql>start slave;
    mysql>show slave status;
    *通过show slave status语句查询状态时,有时候主从建立没那么快,即Slave_IO_Running=
    Connecting,可以将上面的几个语句重复执行几遍,看下是否能成功,如果没有,那么需要排查以下几点原因:
    (1)主从节点是否ping网络互通
    (2)主从节点上,配置的用户和密码是否一致
    (3)bin-log文件和position值是否与主节点当前的一致
    (4)主从节点是否开启了防火墙
    (5)my.ini文件中server_id是否已经改为不同,主节点是否开启bin-log日志功能
    (6)C:ProgramDataMySQLMySQL Server 8.0Dataauto.cnf文件里两台节点的[auto]值是否一样,一样的话也会报错,需要改为不一样。这种情况一般都是安装好的服务拷贝,或者虚拟机拷贝偷懒导致
    (7)查看错误日志,具体原因具体分析


    9.创建数据库,表,插入数据,验证集群的数据同步是否有效
    在MySQL Router节点上,新打开一个cmd进到bin目录下
    C:Program FilesMySQLMySQL Server 8.0in
    键入命令
    mysql.exe -uroot -p
    *键入安装时设置的密码
    进入到mysql>,键入命令
    mysql>show databases;
    *检查基础数据库是否健全
    mysql>create database test;
    mysql>use test;
    mysql>create table tt(name varchar(23),age int);


    10.到另外两台Mysql节点上检查看看是否正确同步过来了
    新打开一个cmd进到bin目录下
    C:Program FilesMySQLMySQL Server 8.0in
    键入命令
    mysql.exe -uroot -p

    进入到mysql>,键入命令

    mysql>show databases;
    mysql>use test;
    mysql>show tables;
    mysql>select * from tt;

    最后,祝诸君好运,一次成功,233!

  • 相关阅读:
    with admin option 和 with grant option 的区别 (转)
    压缩数据块
    建表时pctfree和pctused参数作用
    Oracle哪些错误会写进alert日志
    Oracle 差异、增量、零级备份
    模拟原生的promise
    react-loadable 实现组件按需加载
    react 中配置 http-proxy-middleware
    craco 配置 less.module
    ESLint: 'React' was used before it was defined.(no-use-before-define)
  • 原文地址:https://www.cnblogs.com/chenyixun/p/13625665.html
Copyright © 2011-2022 走看看