• Mysql8.0 InnoDB Cluster高可用集群安装(非高性能)


    安装环境介绍
    mysql安装
    mysql shell安装
    mysql router安装
    安装环境介绍
    mysql官方下载地址:https://dev.mysql.com/downloads/
    
    Centos7(CentOS-7-x86_64-Everything-1708.iso)
    Mysql8.0.28(mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar)
    Mysql-shell8.0.28(mysql-shell-8.0.28-1.el7.x86_64.rpm)
    Mysql-router8.0.28(mysql-router-8.0.28-1.el7.x86_64.rpm)
    
    准备环境
    centos7物理机或者虚拟机三台(python版本要在2.7以上)
    10.4.3.66
    10.4.3.67
    10.4.3.68
    
    由于mysql集群连接是通过本机的hostname进行连接所以要对集群内的节点进行映射
    vim /etc/hosts
    10.4.3.66 vm001
    10.4.3.67 vm002
    10.4.3.68 vm003
    
    三台虚拟机分别设置hostname
    在10.4.3.66输入以下命令:
    hostnamectl set-hostname vm001 在10.4.3.67输入以下命令:
    hostnamectl set-hostname vm002 在10.4.3.68输入以下命令:
    hostnamectl set-hostname vm003 设置10.4.3.66到其他两台机器的免密登录。 在10.4.3.66机器执行如下命令: 1、输入:ssh-keygen -t rsa,然后一直回车 2、输入:ssh-copy-id -i ~/.ssh/id_rsa.pub 10.4.3.67 3、输入:ssh-copy-id -i ~/.ssh/id_rsa.pub 10.4.3.68 关闭三台机器防火墙和selinux systemctl status firewalld systemctl stop firewalld systemctl disable firewalld 关闭 selinux 使用getenforce命令查看状态 修改文件 vim /etc/selinux/config 设置 SELINUX=disabled 需要重启 mysql安装 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL 命令查看mariadb的安装包:rpm -qa | grep mariadb 卸载上述查询mariabd安装包:rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps 解压tar包:tar -xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar 命令安装 common:rpm -ivh mysql-community-common-8.0.28-1.el7.x86_64.rpm --nodeps --force 命令安装 libs:rpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm --nodeps --force 命令安装 client:rpm -ivh mysql-community-client-8.0.28-1.el7.x86_64.rpm --nodeps --force 命令安装 server:rpm -ivh mysql-community-server-8.0.28-1.el7.x86_64.rpm --nodeps --force 初始化:mysqld --initialize; 赋访问权限:chown mysql:mysql /var/lib/mysql -R 启动mysql服务:systemctl start mysqld.service; 设置mysql开机自启:systemctl enable mysqld; 命令查看数据库的密码:cat /var/log/mysqld.log | grep password 进入mysql命令行:mysql -uroot -p (输入上述查看的数据库密码进入mysql命令行) 命令来修改密码: ALTER USER 'root'
    @'localhost' IDENTIFIED WITH mysql_native_password BY '设置的密码';
    创建远程访问权限: create user 'root'@'%' identified with mysql_native_password by '设置的密码';
    grant all privileges on . to 'root'@'%' with grant option;
    flush privileges;
    命令修改加密规则,MySql8.0 版本 和 5.0 的加密规则不一样,而现在的可视化工具只支持旧的加密方式:
    ALTER USER 'root'@'localhost' IDENTIFIED BY '设置的密码' PASSWORD EXPIRE NEVER;
    flush privileges;

    mysql shell安装
    分别在三台机器上安装mysql-shell,命令如下:
    rpm -ivh mysql-shell-8.0.12-1.el7.x86_64.rpm --nodeps --force
    分别在三台机器执行mysqlshell, 以10.4.3.66为例:
    mysqlsh --uri root@vm001:3306
    执行:dba.configureLocalInstance(),
    输入两次y
    退出mysqlshell:ctrl+z
    重新启动mysql服务:systemctl restart mysqld
    检测是否就绪:dba.checkInstanceConfiguration('root@vm001:3306')
    只需要一台上创建cluster:
    #创建集群(默认)
    var cluster = dba.createCluster('myCluster');
    #创建集群(多主集群)
    var cluster = dba.createCluster('myCluster', {'localAddress': '10.4.3.66', 'multiPrimary': true, 'force': true})
    #获取集群对象
    var cluster = dba.getCluster('myCluster')
    将另外两台添加进入:
    cluster.addInstance('root@vm002:3306');
    cluster.addInstance('root@vm003:3306');
    查看状态 为ONLINE 说明集群安装成功:cluster.status()

    mysql router安装
    只需要在第一台机器安装mysqlrouter:
    rpm -ivh mysql-router-8.0.12-1.el7.x86_64.rpm --nodeps --force
    vim /etc/mysqlrouter/mysqlrouter.conf
    设置连接数: max_connections=1024

    [DEFAULT]
    logging_folder = /var/log/mysqlrouter/
    plugin_folder = /usr/lib64/mysqlrouter
    runtime_folder = /var/run/mysqlrouter
    config_folder = /etc/mysqlrouter

    [logger]
    level = INFO

     # 目前就支持两种 : read-write 和 read-only
     # read-write:用于高可用,用于可读可写
     # read-only:用于负载均衡,只读

     #当一台Master出现故障后另外一台Master或者Slave接管

    [routing:read_write] 
    bind_address = 10.4.3.66
    bind_port = 7001
    mode = read-write
    destinations = vm001:3306,vm002:3306,vm003:3306
    protocol=classic
    max_connections=1024

    [routing:read_only]
    bind_address = 10.4.3.66
    bind_port = 7002
    mode = read-only
    destinations = vm001:3306,vm002:3306,vm003:3306
    protocol=classic
    max_connections=1024

    [keepalive]
    interval = 60

    重启mysqlrouter:systemctl restart mysqlrouter
    设置mysqlrouter开机自启:systemctl enable mysqlrouter

    测试集群   
    1、宕掉主节点A后,会从另外两个中选择出一个作为主节点,且A恢复后,不会成为主节点。   
    2、使用客户端工具Navicat可以连接路由节点,IP:192.168.7.121,端口7001,用户名密码与实例节点一致。   
    3、JavaWeb应用程序,连接路由节点,且任意宕掉其中一个或两个实例节点后,应用程序不受影响。
    4、在第一台机器创建一个数据库,其余两台会自动创建这个数据库

    F&Q:
    1、当集群的所有节点都offline,直接获取集群信息失败,如何重新恢复集群:
    Dba.getCluster: This function is not available through a session to a standalone instance (RuntimeError)
    mysql-js> var cluster=dba.getCluster('mycluster')
    Dba.getCluster: This function is not available through a session to a standalone instance (RuntimeError)

     执行rebootClusterFromCompleteOutage命令,可恢复集群

    mysql-js> dba.rebootClusterFromCompleteOutage('mycluster')
    Reconfiguring the cluster 'mycluster' from complete outage...
    The instance '10.186.23.96:3306' was part of the cluster configuration.
    Would you like to rejoin it to the cluster? [y|N]: y
    The instance '10.186.23.94:3306' was part of the cluster configuration.
    Would you like to rejoin it to the cluster? [y|N]: y
    The cluster was successfully rebooted.
  • 相关阅读:
    (II)第一节:IOC 和 DI
    (I)第二节:开发环境
    (I)第一节:Spring 框架
    Spring【目录】
    MyBatisPlus 之 Oracle 数据库主键
    MyBatisPlus 之 公共字段自动填充
    MyBatisPlus 之 全局SQL注入器应用
    MyBatisPlus 之 自定义全局操作
    MyBatisPlus 之 代码生成器
    彻底理解Netty
  • 原文地址:https://www.cnblogs.com/wangjunjiehome/p/16120254.html
Copyright © 2020-2023  润新知