当前位置:Gxlcms > 数据库问题 > MySQL主从复制 搭建

MySQL主从复制 搭建

时间:2021-07-01 10:21:17 帮助过:4人阅读

节点设置:

  系统:CentOS7

  MySQL:最新

  192.168.100.101  node01    主

  192.168.100.102  node02    从

  192.168.100.103  node03    从

简单原理:

  技术图片

步骤:

 第一步:安装mysql(yum源安装,最简单,可自动替换mariaDB)

  1.安装wget命令 --CentOS7不能直接使用yum安装MySQL

    yum install -y wget 

  2.下载rpm源   --此处为最新mysql版本

    wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm 

  3.解压rpm

    rpm -ivh mysql57-community-release-el7-8.noarch.rpm

  3.安装mysql

    yum -y install mysql-server

  4.查看临时密码

    cat /var/log/mysqld.log  *A temporary password is generated for root@localhost:******

  5.修改root密码

    set global validate_password_policy=0;
    set global validate_password_length=1;
    ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘123456‘;

  6.可远程访问

    grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘123456‘ with grant option;
    flush privileges;

  7.启动

    systemctl start mysqld.service

    默认配置文件路径: 
    配置文件:/etc/my.cnf 
    日志文件:/var/log/var/log/mysqld.log 
    服务启动脚本:/usr/lib/systemd/system/mysqld.service 
    socket文件:/var/run/mysqld/mysqld.pid

  第二步:克隆虚拟机node02,node03

  第三步:主从配置

    1.在3个mysql上建库(相同的库)

      create database tmp;

    2.修改my.cnf配置文件

      node01(主):

      my.cnf添加

        log-bin=master-bin   --bin_log名称

        binlog-format=ROW    --共3种模式,ROW指的是把改变的内容复制过去,而不是把命令在从服务器上执行一遍,statement指的是在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。mixed指的是默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。

        server-id=1      --要求各个服务器的id必须不一样

        binlog-do-db=tmp     --同步数据库名称

      mysql中配置

        set global validate_password_policy=0;    --授权操作
        set global validate_password_length=1;    
        grant replication slave on *.* to ‘root‘@‘%‘ identified by ‘123456‘;    --允许从服务器可以复制内容
        flush privileges;               --刷新权限

      重启mysql服务:systemctl restart mysqld.service

      登录mysql:mysql -uroot -p123456

      查看binlog名称及位置:show master status\G    --复制一下binlog名称以及position位置

      node02(从):

       my.cnf中     

        log-bin=master-bin              --二进制文件的名称
        binlog-format=ROW             --二进制文件的格式
        server-id=2                 --服务器的id

         mysql中

        change master to master_host=‘192.168.100.101(主节点IP)‘,master_user=‘root‘,master_password=‘123456‘,master_port=3306,master_log_file=‘master-bin.000002(主节点binlog名称)‘,master_log_pos=154(position);

        start slave;

      

      node03(从):

       my.cnf中     

        log-bin=master-bin              --二进制文件的名称
        binlog-format=ROW             --二进制文件的格式
        server-id=3                 --服务器的id

         mysql中

        change master to master_host=‘192.168.100.101(主节点IP)‘,master_user=‘root‘,master_password=‘123456‘,master_port=3306,master_log_file=‘master-bin.000002(主节点binlog名称)‘,master_log_pos=154(position);

        start slave;

常见问题:

  wget不能安装(网络问题)

    ①vi /etc/sysconfig/network-scripts/ifcfg-ens33

     ONBOOT=yes

     MM_CONTROLLED=no

    ②vi /etc/resolve.cnf

     nameserver=8.8.8.8

  slave_IO_Running:No

    ①slave设置的监控主节点的binlog文件配置名称出错或位置出错,重新在从节点的mysql中设置主节点信息

      stop slave

      change master to master_host=‘192.168.100.101(主节点IP)‘,master_user=‘root‘,master_password=‘123456‘,master_port=3306,master_log_file=‘master-bin.000002(主节点binlog名称)‘,master_log_pos=154(position);

      start salve

    ②不同节点的UUID相同了,查看不同节点的/var/lib/mysql/auto.cnf是否相同

    如果相同,则将从节点的auto.cnf删除,它会重新生成一个新的UUID的

  Slave_SQL_Running:No  

    stop slave;
    SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;

    start slave;

MySQL主从复制 搭建

标签:row   adb   png   generated   ice   database   lease   centos   stat   

人气教程排行