• MySQL的主从模式搭建


    一、安装 MySQL

    1、在虚拟机中先装两台 centos7 

    2、然后分别在两台 cnetos7 中安装 mysql,并配置好 mysql 的相关权限等

    3、使用MySQL数据库连接工具 SQLyog 或者 Navicat 测试数据库的连接,将两个 MySQL 数据库分别作为 主库、从库

    1)例如:我虚拟机中 centos7 中的两个 MySQL 数据库连接地址分别为:192.168.7.83、192.168.49.130 

    主库(Master):192.168.7.83         ( 对应虚拟机: centos7 )

    从库(Slave):192.168.49.130     ( 对应虚拟机:centos7 - 04 )

    二、Master[主库] 配置

    1)修改 Master 配置文件

     vim  /etc/my.cnf

    修改 my.cnf 为下面的内容 (加上下面标红的两句内容)

     # 修改为

    # MySQL 服务唯一标识
    # server_id 任意配置,只要是数字即可
    但是server_id Master 唯一标识数字必须小于 Slave 唯一标识数字.
    server_id=1
    # 开启日志功能以及日志文件命名
    # 变量的值就是日志文件名称.是日志文件名称的主体.
    # MySQL数据库自动增加文件名后缀和文件类型. 如 master_log.xxxxxxxxxxxxxxxx
    # 这里设置的 log_bin 就是主库中的 Binary log 文件,用来了被从库读取
    log_bin=master_log

     加入后的内容

    my.cnf 文件默认的内容:

    # For advice on how to change settings please see

    # http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html

    [mysqld]

    #

    # Remove leading # and set to the amount of RAM for the most important data

    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

    # innodb_buffer_pool_size = 128M

    #

    # Remove the leading "# " to disable binary logging

    # Binary logging captures changes between backups and is enabled by

    # default. It's default setting is log_bin=binlog

    # disable_log_bin

    #

    # Remove leading # to set options mainly useful for reporting servers.

    # The server defaults are faster for transactions and fast SELECTs.

    # Adjust sizes as needed, experiment to find the optimal values.

    # join_buffer_size = 128M

    # sort_buffer_size = 2M

    # read_rnd_buffer_size = 2M

    #

    # Remove leading # to revert to previous value for default_authentication_plugin,

    # this will increase compatibility with older clients. For background, see:

    # https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin

    # default-authentication-plugin=mysql_native_password

    datadir=/var/lib/mysql

    socket=/var/lib/mysql/mysql.sock

    log-error=/var/log/mysqld.log

    pid-file=/var/run/mysqld/mysqld.pid

    2)重启 MySQL

     systemctl  restart  mysqld

    3)配置 Master

    # 访问MySQL(命令行登陆到 MySQL)

    mysql  -u  root  -p          # 然后输入密码 123456

    创建用户(创建用来访问 该主库的用户)

    • 在 MySQL 数据库中,为不存在的用户授权,就是同步创建用户并授权。此用户是 从库Slave 访问主库使用的用户,ip地址不能写为%,

    • 因为主从备份中,当前创建的用户,是给 从库Slave 访问 主库Master 使用的,用户必须有指定的访问地址,不能是通用地址,

     set global validate_password_policy=0; 

    set global validate_password_length=4; 
    创建 slave 用户,并给 slave 用户授权 ;ON *.* 表示所有库下面的所有的表 , IDENTIFIED BY 'slave'  表示密码是 slave
    这里的ip地址换成你的从库的ip地址
    GRANT ALL PRIVILEGES ON *.* TO 'slave'@'192.168.49.130' IDENTIFIED BY 'slave' WITH GRANT OPTION;   
    FLUSH PRIVILEGES; 

     创建用户流程:

     查看用户

    use mysql;     # 使用 mysql 数据库

    select host,user from user;    # 查询 mysql 数据库下的 user 表中的 host、User 字段

     使用 mysql 库中的 user 表,查看用户创建的情况

    查看 mysql 库中的所有表

    查询 user 表的 user 和 host 字段 

     查看 Master 信息

    show  master  status;

     查看 master 相应的信息  (这里就可以看到 master_log.000001 就是之前我们在 my.conf 中配置的 二进制文件 )

     查看 master_log.000001 文件所在的位置:/var/lib/mysql  并进入该位置查看 master_log 文件

     

     master_log.000001 文件我们无法查看,但我们可以使用 cat 命令查看 master_log.index,其实 master_log.index 的内容表示的是 master_log.000001 所在的位置

    到这里 主库Master 的配置就算是配好了

    三、Slave[从库] 配置

    1)修改 Slave 配置文件

     vim  /etc/my.cnf

    修改为下列的内容:

     # MySQL 服务唯一标识 

    # server_id 任意配置,只要是数字即可 
    # server_id Master 唯一标识数字必须小于 Slave 唯一标识数字. 
    server_id=2

     从库 的 server_id 一定要比 主库 的大

    2)重启 MySQL

     systemctl r estart  mysqld

     3)配置 Slave

     先访问一下 MySQL:

    mysql  -u  root  -p         # 然后输入密码 123456

     停止 Slave 功能:(在 mysql 命令行中执行)

    stop  slave;             # 先停止后,才能执行配置主库的命令

     

    在 从库 中 配置 主库 信息:

    • 需要修改的数据是依据Master信息修改的.

    • ip是Master 所在物理机IP.

    • 用户名和密码是Master提供的Slave访问用户名和密码.

    • 日志文件是在Master中查看的主库信息提供的.

    • 在Master中使用命令show master status查看日志文件名称。

     # 需要主库的ip地址、mysql的 用户名 和 密码

    change master to master_host='192.168.7.83',master_user='root',master_password='123456',master_log_file='master_log.000001';

    这里配置的 master_log_file 文件一定是要在 主库 中使用 show master status 命令查找出来的 File (一定是要对应的,不对应时,需要重新执行一下change命令) 

    在主库中 查找到的 日志文件,因为 从库 读取的就是这个 主库 中的文件

    启动Slave功能:(在 mysql 命令行中执行)

    start  slave;

     

     查看 Slave 配置:

    show  slave  status  \G;        # \G 表示格式化输出信息

     

    如果这里的 Error 有问题,说明没有配置成功

     四、测试主从

    1)使用 SQLyog 或者 Navicat,分别连接 主库 192.168.7.83  root/123456 名称为 mycat-master、从库 192.168.49.130 root/123456 名称为 mycat-slave 

    主库 连接  

    从库 连接 

    2)建库,测试是否同步成功

     然后在 主库 中新建一个 test 数据库,选择 utf8mb4,utf8mb4_general_ci

     刷新 从库,然后就自动同步了 主库 的内容

     3)建表,测试是否同步成功

    在 主库 的 test 数据库中,新建一张 user 表,表有 id 和 name 字段 

     

    刷新 从库,然后就自动同步了 主库 中的表内容

     

     

  • 相关阅读:
    设计模式-10组合模式(组合模式设计模式)详解
    输入一个三位数,使用递归实现,按位输出
    Linux之高级IO相关内容整理分析
    Spring之文件上传下载,jrebel,多文件上传
    SpringCloud网关服务
    利用TreeMap来解决P3029 [USACO11NOV] Cow Lineup S
    Promise初体验
    webgl 系列 —— 着色器语言
    2022全国政治会议
    java计算机毕业设计花卉网站源码+mysql数据库+系统+lw文档+部署
  • 原文地址:https://blog.csdn.net/IT_Boy_/article/details/126072557