CentOS7.X搭建MySQL集群(互为主从)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: CentOS7.X搭建MySQL集群(互为主从)

MySQL集群(双工、多工)

  1. 参考链接
  2. 参考链接
  3. 准备2台服务器假设IP为

    # 192.168.0.11
    # 192.168.0.12
  4. 安装前的准备

    yum install \
    lua \
    vim \
    git \
    gcc \
    gcc-c++ \
    wget \
    make \
    cmake \
    automake \
    autoconf \
    libaio \
    libtool \
    net-tools \
    bison-devel \
    libaio-devel \
    ncurses-devel \
    perl-Data-Dumper \
    -y
  5. 获取源码资源包

    wget http://repo.mysql.com/mysql57-community-release-el7.rpm
  6. 安装源码资源包

    rpm -ivh mysql57-community-release-el7.rpm
  7. 通过资源包安装mysql

    yum install mysql-server -y
  8. 修改my.conf

    > /etc/my.cnf
    
    vim /etc/my.cnf
    
    [client]
    default-character-set = utf8mb4
    
    [mysql]
    default-character-set = utf8mb4
    
    [mysqld]
    datadir=/data/mysql
    character-set-server=utf8mb4
    init_connect='SET NAMES utf8mb4'
    collation-server=utf8mb4_unicode_ci
    character-set-client-handshake=FALSE
    
    symbolic-links=0
    log-error=/var/log/mysqld.log
    socket=/var/lib/mysql/mysql.sock
    pid-file=/var/run/mysqld/mysqld.pid
    
    secure_file_priv=/var/lib/mysql-files
    sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    
    ESC
    :wq
  9. 创建数据文件目录、所属组、用户改为mysql

    mkdir /data
    mkdir /data/mysql
    chown -R mysql:mysql /etc/my.cnf
    chown -R mysql:mysql /data/mysql/
    chown -R mysql:mysql /var/*/mysql*
  10. 修改SELinux

    vim /etc/sysconfig/selinux
    
    SELINUX=permissive
    
    ESC
    :wq
    
    setenforce 0
  11. 启动数据库(2台服务器均执行)

    systemctl enable mysqld
    systemctl start mysqld
    cat /var/log/mysqld.log|grep password
    # 结果显示
    A temporary password is generated for root@localhost: **************
  12. 修改数据库初始密码(2台服务器均执行)

    mysql -u root -p
    # 输入原始密码
    **************
    # 设置允许使用弱密码
    SET GLOBAL validate_password_policy=0;
    ALTER USER 'root'@'localhost' IDENTIFIED BY '**************';
    GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'192.168.%' IDENTIFIED BY '**************' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    QUIT;
  13. 初始化数据库(2台服务器均执行)

    # 如果是数据库【安装】则只执行下面这步(除了密码一律选择Y)
    mysql_secure_installation
    
    # 如果是数据库【升级】则只执行下面这步(**************表示数据库之前的密码)
    mysql_upgrade -u root -p
    **************
  14. 修改集群相关配置

    vim /etc/my.cnf
    
    # 192.168.0.11
    server-id=1
    binlog-format=Row
    log-bin=/data/mysql/mysql-bin
    relay-log=localhost1-relay-bin
    
    # 192.168.0.12
    server-id=2
    binlog-format=Row
    log-bin=/data/mysql/mysql-bin
    relay-log=localhost2-relay-bin
    
    ESC
    :wq
    
    # 重启各服务器MySQL!重启各服务器MySQL!!重启各服务器MySQL!!!
  15. 配置防火墙(2台服务器均执行)

    yum install firewalld -y
    systemctl enable firewalld
    systemctl start  firewalld
    firewall-cmd --permanent --zone=public --add-port=3306/tcp
    firewall-cmd --reload
  16. 创建服务器数据同步账号密码

    mysql -u root -p
    **************
    SET GLOBAL validate_password_policy=0;
    GRANT REPLICATION SLAVE ON *.* TO 'mysql'@'192.168.%' IDENTIFIED BY '**************';
    FLUSH PRIVILEGES;
  17. 从服务器中指定二进制文件路径

    # 这里如果是n台服务器,则1为2的MASTER,2为3的MASTER,(...),n为1的MASTER。
    # 因为这里n=2,所以1为2的MASTER,2为1的MASTER
    # 192.168.0.11执行
    mysql -u root -p
    **************
    CHANGE MASTER TO
    MASTER_HOST='192.168.0.12',
    MASTER_USER='mysql',
    MASTER_PASSWORD='**************',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=600;
    
    # 192.168.0.12
    mysql -u root -p
    **************
    CHANGE MASTER TO
    MASTER_HOST='192.168.0.11',
    MASTER_USER='mysql',
    MASTER_PASSWORD='**************',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=600;
    
    # 重启各服务器MySQL!重启各服务器MySQL!!重启各服务器MySQL!!!
    
    SHOW SLAVE STATUS\G
    
    # Slave_IO_Running:  Yes
    # Slave_SQL_Running: Yes
    # 表示配置成功!!!
    # 如果没成功,检查防火墙3306端口是否打开
  18. 解决Slave_IO_Running: No

    # 显示相应服务器MASTER状态
    SHOW MASTER STATUS;
    # 修改MASTER状态配置
    CHANGE MASTER TO Master_Log_File = 'mysql-bin.000002', Master_Log_Pos = 154;
    
    # 重启各服务器MySQL!重启各服务器MySQL!!重启各服务器MySQL!!!
  19. 分别在任意一台数据库服务器操作数据,看另一台是否发生了变化,如果发生相同变化,则数据库服务器集群搭建成功

MySQL官方不推荐mysql-proxy,以下内容仅供参考

  1. 假设mysql-proxy服务器为192.168.0.13,则在该服务器执行如下操作

    cd ~
    wget https://cdn.mysql.com/archives/mysql-proxy/mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
    tar -zxvf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
    mv mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy
    vim /etc/profile
    export PATH=$PATH:/usr/local/mysql-proxy/bin
    ESC
    :wq
    source /etc/profile
  2. 配置防火墙(mysql-proxy服务器执行)

    systemctl enable firewalld
    systemctl start  firewalld
    firewall-cmd --permanent --zone=public --add-port=4040/tcp
    firewall-cmd --permanent --zone=public --add-port=4041/tcp
    firewall-cmd --reload
  3. 编写lua脚本

    vim /usr/local/mysql-proxy/mysql-proxy.lua
    
    if not proxy.global.config.rwsplit then
        proxy.global.config.rwsplit={
            min_idle_connections=1,
            max_idle_connections=1,
            is_debug=false
        }
    end
    
    ESC
    :wq
  4. 编写mysql-proxy脚本

    vim /usr/local/mysql-proxy/mysql-proxy.sh
    
    #!/bin/bash
    /usr/local/mysql-proxy/bin/mysql-proxy \
    --proxy-address=192.168.0.13:4040 \
    --proxy-backend-addresses=192.168.0.11:3306 \
    --proxy-backend-addresses=192.168.0.12:3306 \
    --log-level=info \
    --proxy-lua-script=/usr/local/mysql-proxy/mysql-proxy.lua \
    --log-file=/var/lib/mysql/mysql-proxy.log \
    --daemon
    
    ESC
    :wq
    
    chmod u+x /usr/local/mysql-proxy/mysql-proxy.sh
    /usr/local/mysql-proxy/mysql-proxy.sh
  5. 查看运行情况

    ps aux | grep mysql-proxy
  6. 测试读写分离(每台服务器都执行)

    SET GLOBAL general_log_file='/tmp/mysql.log';
    SET GLOBAL general_log=ON;
    tail -f /tmp/mysql.log
    SET GLOBAL general_log=OFF;
  7. 领支付宝红包支持作者

    扫码领支付宝红包

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
50 3
|
1月前
|
消息中间件 分布式计算 关系型数据库
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
46 0
|
21天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
62 3
|
22天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
38 2
|
24天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
73 2
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置服务等,并与使用 RPM 包安装进行了对比,帮助读者根据需求选择合适的方法。编译源码安装虽然复杂,但提供了更高的定制性和灵活性。
237 2
|
2月前
|
分布式计算 Hadoop Java
Hadoop集群搭建,基于3.3.4hadoop和centos8【图文教程-从零开始搭建Hadoop集群】,常见问题解决
本文是一份详细的Hadoop集群搭建指南,基于Hadoop 3.3.4版本和CentOS 8操作系统。文章内容包括虚拟机创建、网络配置、Java与Hadoop环境搭建、克隆虚拟机、SSH免密登录设置、格式化NameNode、启动Hadoop集群以及通过UI界面查看Hadoop运行状态。同时,还提供了常见问题的解决方案。
Hadoop集群搭建,基于3.3.4hadoop和centos8【图文教程-从零开始搭建Hadoop集群】,常见问题解决
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
【10月更文挑战第7天】本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据自身需求选择合适的方法。
60 3
|
2月前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
453 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
1月前
|
Kubernetes Ubuntu Linux
Centos7 搭建 kubernetes集群
本文介绍了如何搭建一个三节点的Kubernetes集群,包括一个主节点和两个工作节点。各节点运行CentOS 7系统,最低配置为2核CPU、2GB内存和15GB硬盘。详细步骤包括环境配置、安装Docker、关闭防火墙和SELinux、禁用交换分区、安装kubeadm、kubelet、kubectl,以及初始化Kubernetes集群和安装网络插件Calico或Flannel。
152 0
下一篇
无影云桌面