• Ubuntu系统安装MySQL主从模式集群(成功!)


    安装MySQL主从模式集群

    配置MySQL节点

    打开主节点的配置文件

    sudo vim /etc/mysql/my.cnf
    
    • 1
    [client]
    port=3306
    [mysqld]
    default-time_zone='+8:00'
    port=3306
    # 默认binlog文件的名称
    log_bin=mysql-bin
    # 当前服务器的ID,不能重复,推荐用服务器IP D段
    server-id=1
    # 允许主节点读写
    read-only=0
    # 数据刷盘参数=1时,只要有1个事务提交就会触发写盘的操作,安全性最高,并发性最差
    # 数据刷盘参数=0时,由文件系统控制写盘的频率,并发性能最好,但是意外丢失数据的风险最大,这里根据实际需求配置,不建议乱配。
    sync_binlog=0
    # 排除掉不需要同步的数据库列表
    binlog-ignore-db=performance_schema
    binlog-ignore-db=information_schema
    binlog-ignore-db=sys
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    重启MySQL服务

    sudo systemctl restart mysql
    
    • 1

    在主节点创建用户,将其权限赋予从节点,用于为从节点提供安全用户登录主节点拷贝二进制日志:

    CREATE USER 'slave01'@'%' IDENTIFIED BY '12345678';
    GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
    
    • 1
    • 2

    配置主节点:

    重新打开/etc/mysql/my.cnf文件:

    sudo vim /etc/mysql/my.cnf
    
    • 1
    [client]
    port=3306
    [mysqld]
    default-time_zone='+8:00'
    port=3306
    # 当前服务器的ID,不能重复
    server-id=2
    # 只允许从节点读
    read-only=1
    relay_log=mysql-relay-bin
    binlog-format=ROW
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    打开/etc/mysql/mysql.conf.d/mysqld.cnf文件,开启MySQL的远程连接:

    # 将bind-address改为0.0.0.0,表示允许远程连接
    bind-address=0.0.0.0
    
    • 1
    • 2

    重启MySQL服务

    sudo systemctl restart mysql
    
    • 1

    配置从节点:

    打开/etc/mysql/my.cnf文件:

    vim /etc/mysql/my.cnf
    
    • 1

    [mysqld]部分下面添加以下行:

    log_bin = /var/log/mysql/mysql-bin.log
    gtid-mode = ON
    enforce-gtid-consistency = ON
    
    • 1
    • 2
    • 3

    然后重启MySQL服务:

    sudo service mysql restart
    
    • 1

    开放端口

    (1)开放MySQL的端口

    sudo ufw allow 3306/tcp
    
    • 1

    (2)或者直接关闭防火墙

    sudo systemctl stop ufw
    
    • 1

    最后查看防火墙状态

    sudo ufw status
    
    • 1

    启动主从库

    进入主库,记录查询结果的前两列

    show master status;
    
    • 1

    进入从库控制台,输入:

    CHANGE REPLICATION SOURCE TO SOURCE_HOST='主库IP地址', SOURCE_USER='slave01',SOURCE_PASSWORD='12345678',SOURCE_LOG_FILE='binlog日志文件名',SOURCE_LOG_POS=binlog日志文件位置;
    
    • 1

    上述是8.0.23版本之后的,版本之前的如下:

    CHANGE MASTER TO MASTER_HOST='IP地址', MASTER_USER='',MASTER_PASSWORD='',MASTER_LOG_FILE='',MASTER_LOG_POS=XXX;
    
    • 1

    其中里面的主节点ip、主库密码需要更换为自己的ip和密码,File和Postion是在前面主库输入查看主库状态得到的信息。

    开启从节点

    start replica;  # 8.0.22版本之后
    start slave;   # 8.0.22版本之前
    
    • 1
    • 2

    在从库输入指令查看从节点列表

    show replica status\G;  # 8.0.22版本之后的指令
    show slave status\G;  # 8.0.22版本之前的指令
    
    • 1
    • 2

    如果要关闭从库

    STOP REPLICA;   # 8.0.22版本之后
    STOP SLAVE;     # 8.0.22版本之前
    
    • 1
    • 2

    同步数据

    在主节点创建数据库和表,并插入数据:

    CREATE DATABASE test;
    USE test;
    CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));
    INSERT INTO users VALUES (1, 'John');
    
    • 1
    • 2
    • 3
    • 4

    在从节点查看是否存在表:

     use test;
     select * from users;
    
    • 1
    • 2

    测试集群

    在从节点执行:

    USE test;
    SELECT * FROM users;
    
    • 1
    • 2

    能看到数据,则主从节点数据同步成功。

  • 相关阅读:
    设置渐变边框色
    Android平台GB28181设备接入模块相关博客概览
    如何在 Ubuntu上使用 Nginx 设置密码验证
    【语雀岩机】语雀宕机8小时,普通打工人该如何应对
    HDLbits exercises 2 (MODULES节选题)
    Hadoop集群动态扩容、缩容
    vue3 响应式 ref 、reactive、computed的区别,和watch 监听器的使用
    AVS3中的intra string copy(ISC)
    Windows下QT实现托盘程序及系统托盘刷新
    C语言-【指针二】-【指针运算/指针和数组】
  • 原文地址:https://blog.csdn.net/cleverstronge/article/details/136638525