• MySQL主从复制搭建


    1. 环境

    1.1 操作系统

    CentOS7最小化安装

    # cat /etc/os-release
    NAME="CentOS Linux"
    VERSION="7 (Core)"

    # cat /etc/redhat-release
    CentOS Linux release 7.7.1908 (Core)

    1.2 主从节点

    本例中共涉及到两台服务器

    1. 10.10.2.231:主机名node1,作为主节点
    2. 10.10.2.232:主机名node2,作为从节点

    1.3 MySQL版本

    # mysql -pRoot@123 -e "select version()\G;"
    version(): 8.0.26

    # rpm -qa |grep mysql
    mysql-community-client-plugins-8.0.26-1.el7.x86_64
    mysql-community-client-8.0.26-1.el7.x86_64
    mysql-community-server-8.0.26-1.el7.x86_64
    mysql-community-common-8.0.26-1.el7.x86_64
    mysql-community-libs-8.0.26-1.el7.x86_64
    mysql-community-libs-compat-8.0.26-1.el7.x86_64

    2. 安装MySQL

    可参考另一个博文:CentOS7用yum安装MySQL8注意:后续root密码我们将使用Root@123。

    3. 配置主从复制

    3.1 配置server_id

    3.1.1 配置主节点的server_id=1

    1. 修改/etc/my.cnf,在[mysqld]节点下添加server_id=1

      # vi /etc/my.cnf
      [mysqld]
      (省略部分内容...)
      server_id=1

    2. 重启MySQL服务器:service mysqld restart

    3. 确认修改结果:

      # mysql -pRoot@123 -e "show variables like 'server_id\G'"
      ********************** 1. row **********************
      Variable_name: server_id
      Value: 1

    3.1.2 配置从节点的server_id=2

    参照主节点配置

    3.2 主节点开启Binary Log

    3.2.1 查看Binary Log状态

    # mysql -pRoot@123 -e "show variables like 'log_bin'\G"
    ********************** 1. row **********************
    Variable_name: log_bin
    Value: ON

    3.2.2 开启Binary Log

    • MySQL8.0之后版本Binary Log默认开启

    • MySQL8.0之前版本,修改/etc/my.cnf,在[mysqld]节点下添加log-bin=mysql-bin,开启Binary Log。修改完成后重启MySQL服务:service mysqld restart

      # vi /etc/my.cnf
      [mysqld]
      (省略部分内容...)
      log-bin=mysql-bin

    3.3 主节点创建MySQL用户

    登录主节点MySQL mysql -h10.10.2.231 -pRoot@123执行:

    mysql> CREATE USER 'reply'@'%' IDENTIFIED BY 'Reply@123' PASSWORD EXPIRE NEVER;
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'reply'@'%';
    mysql> FLUSH PRIVILEGES;

    3.3 获取主节点二进制日志坐标

    登录主节点MySQL mysql -h10.10.2.231 -pRoot@123执行:

    mysql> FLUSH TABLES WITH READ LOCK;
    mysql> SHOW MASTER STATUS\G;
    ********************** 1. row **********************
    File: binlog.000003
    Position: 1540

    注意:记录FilePosition的值,后面会用到,并且不要退出当前MySQL连接,保证所有库表的锁定状态。

    3.4 从节点设置主从复制

    登录从节点MySQL mysql -h10.10.2.232 -pRoot@123执行:

    mysql> CHANGE REPLICATION SOURCE TO SOURCE_HOST='10.10.2.231',SOURCE_USER='reply',SOURCE_PASSWORD='Reply@123',SOURCE_LOG_FILE='binlog.000003',SOURCE_LOG_POS=1540;

    mysql> START SLAVE;

    执行完成后可通过SHOW SLAVE STATUS;确认从节点的同步状态:

    mysql> SHOW SLAVE STATUS;
    ********************** 1. row **********************
    (省略部分内容...)
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    (省略部分内容...)

    最后还要记得之前尚未关闭的主节点的MySQL连接,把它关闭掉

    4. 验证主从复制效果

    在主节点中创建数据库:mysql -h10.10.2.231 -pRoot@123 -e 'create database test;'

    在从节点中确认新创建的数据库已经同步到从节点:mysql -h10.10.2.232 -pRoot@123 -e 'show databases;'

    回到目录

    如果您发现笔者措辞不严谨、逻辑不合理,甚至代码有错误、结论很偏颇等等问题,欢迎联系QQ:562759534。笔者感激各位的讨论和指正,并在此不胜感激!拜谢!
  • 相关阅读:
    delphi 随意将函数执行权限提高到Ring0源代码
    delphi 使电脑睡眠代码
    delphi 监控文件系统
    在Delphi中使用系统对应文件类型的图标
    Panel
    delphi 读写记录类型文件Record
    C# winform 一次只能允许一个应用(使用mutex)
    winform捕获全局异常
    观察者模式实践-实现winform 窗体之间传值(事件实现)
    在wpf中利用异步lambda编程,模拟数据库连接,防止界面假死
  • 原文地址:https://www.cnblogs.com/LOVE0612/p/15540931.html
Copyright © 2020-2023  润新知