• mysql5.7主从环境搭建


    环境准备 1.卸载原有的mariadb或mysql rpm -qa | grep -i mysql rpm -qa | grep -i mariadb

    rpm -e mariadb-xxxx
    #注:如上命令删除不成功,有别的软件依赖无法删除时,如下操作:
    yum remove mariadb-xxxx

    rpm -e --nodeps mariadb-xxx
    1. 关闭 seLinux 一、查看SELinux状态命令:   1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态   SELinux status: enabled   2、getenforce ##也可以用这个命令检查

      二、关闭SELinux方法:   1、临时关闭(不用重启机器):   代码如下:   setenforce 0 #设置SELinux 成为 permissive 模式   #setenforce 1 设置SELinux 成为 enforcing 模式

        2、修改配置文件需要重启机器:   修改/etc/selinux/config 文件   将SELINUX=enforcing 改为 SELINUX=disabled   重启机器即可

    2. 下载 mysql 安装源 https://dev.mysql.com/downloads/repo/yum/ wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

      yum install -y mysql80-community-release-el7-3.noarch.rpm

      ls -la /etc/yum.repos.d/|grep mysql -rw-r--r--. 1 root root 2076 4月 24 2019 mysql-community.repo -rw-r--r--. 1 root root 2108 4月 24 2019 mysql-community-source.repo

      <!-- 查看所有可用的安装软件列表 关闭其他的mysql软件 打开5.7 并安装mysql --> yum repolist yum repolist all |grep mysql yum -y install yum-utils yum-config-manager --disable mysql80-community yum-config-manager --enable mysql57-community yum install -y mysql-community-server mysql yum-config-manager --enable mysql57-community* yum install -y mysql-community-server mysql

    3. 启动MySQL 并初始化密码 [mysqld] datadir=/data/mysql/data #datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock #socket=/data/mysql/data/mysql.sock symbolic-links=0

      log-error=/data/mysql/log/mysqld.log #log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid

      把数据目录修改为 mysql 用户 权限

      ls -la /data/ total 28 d-wx--x--x 4 mysql mysql 29 Jul 15 07:10 mysql

      systemctl daemon-reload systemctl start mysqld systemctl enable mysqld systemctl status mysqld systemctl restart mysqld systemctl stop mysqld

    4. MySQL用户密码配置

      mysql 第一次安装会初始化一个密码

      grep 'password' /data/mysql/log/mysqld.log mysql -uroot -p'VNV&P,c3O?EQ' alter user 'root'@'localhost' identified by 'Hao.123456'; select version(); grant all privileges on . to root@'%' identified by 'Hao.123456' with grant option; flush privileges;

    5. 其他配置,用其他用户启动MySQL /usr/local/mysql/bin/mysqld --initialize --user=root --basedir=/usr/local/mysql --datadir=/data/gpmm/mysql/data /usr/local/mysql/bin/mysqld --daemonize --user=root --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data grep 'temporary password' /usr/local/mysql/logs/error.log grep 'password' /data/mysql/log/mysqld.log f9/g:BXn6KG mysql -uroot -p'f9/g:BXn6KG' alter user 'root'@'localhost' identified by '1qaz@WSX'; select version(); grant all privileges on . to root@'%' identified by '1qaz@WSX' with grant option; flush privileges; 修改服务的配置文件 cat /usr/lib/systemd/system/mysqld.service

    mysql 主从复制(读写分离)设置

    1. Mysql 读写分离主从复制模式概述

      主(master)从(slave)复制,就是一台机器的mysql充当主服务器,其他充当从服务器。 更新操作(insert、update、delete)在主(master)服务器 读取在从服务器(select)

    1.1 mysql 支持的复制类型

    1. 基于语句复制,MySQL默认采用基于语句的复制,效率比较高。一旦发现没法精确复制时, 会自动选着基于行的复制。   
    在主服务器上执行的SQL语句,
    在从服务器上执行同样的语句。
    2. 基于行复制,把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 从mysql5.0开始支持
    3. 混合类型复制,默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。

    1.2 复制解决的问题

    MySQL复制技术有以下一些特点:

    数据分布 (Data distribution )
    负载平衡(load balancing)
    备份(Backups)
    高可用性和容错行 High availability and failover

    1.3 复制如何工作

    1. master 将改变记录到二进制(binary log)中。
    2. slave 将 master 的binary log events 拷贝到他的中继日志(relay log)
    3. slave 重做中继日志中的事件,将改变反映他自己的数据。
    1. 复制配置

      主(master)192.168.0.112 从(slave)192.168.0.113

    2.1 master 建立账号赋权

    在 Master 中创建账号 backup,并允许每个 slave 节点有 PEPLICATION SLAVE 权限。用户名的密码都会存储在文本文件 master.info 中

    ‘backup’@’%’ 表示用还可以从远程登录

    CREATE USER ‘backup’@’%’ IDENTIFIED BY ‘password’;
    授权
    mysql > GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO backup@’%’ IDENTIFIED BY ‘1234’;

    2.2 拷贝数据

    新安装服务器不需要

    2.3 配置 master 节点

    查找 my.cnf 文件

    find / -name 'my.cnf'
    现在在 /etc/my.cnf

    编辑

    vi /etc/my.cnf
    在文本后增加

    server-id=1
    log-bin=master-bin
    log-bin-index=master-bin.index
    保存文件后

    systemctl restart mysqld
    进入mysql

    show master status

    2.4 配置 slave 节点

    配置 my.cnf 文件如下:

    og_bin= mysql-bin
    server_id = 2
    relay_log= mysql-relay-bin
    log_slave_updates = 1
    read_only= 1

    2.5 启动 slave

    接下来就是让slave连接master,并开始重做master二进制日志中的事件。你不应该用配置文件进行该操作,而应该使用CHANGE MASTER TO语句,该语句可以完全取代对配置文件的修改,而且它可以为slave指定不同的master,而不需要停止服务器。如下:

    mysql> CHANGE MASTER TO MASTER_HOST='server1',

      -> MASTER_USER='repl',

      -> MASTER_PASSWORD='p4ssword',

      -> MASTER_LOG_FILE='mysql-bin.000001',

      -> MASTER_LOG_POS=0;
    测试

    mysql> start slave;
    显示,注意命令是大写的G,查看输出结果 在这里主要是看: Slave_IO_Running=Yes Slave_SQL_Running=Yes

    msyql> show slave status \G
    在 master 端输入 show processlist\G

    msyql> show processlist \G

    2.6 停止 slave

    stop slave
    只有再停止了 slave 后才能修改配置文件。

    2.7 问题

    :The slave I/O thread stops because master and slave have equal MySQL server UUIDs

    最后检查发现他们的auto.cnf中的server-uuid是一样的。。。

    [root@localhost ~]# vim /var/lib/mysql/auto.cnf

    [auto]
    server-uuid=4f37a731-9b79-11e8-8013-000c29f0700f
    问题解决
    停止从库的mysqld服务,删除他的auto.cnf文件,再启动数据库服务即可:

    [root@localhost mysql]# systemctl stop mysqld.service

    [root@localhost mysql]# mv /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf.bak

    [root@localhost mysql]# systemctl start mysqld.service

    2.8 测试

  • 相关阅读:
    笔试-2020软件工程师Java(上海)中科创达(收获很多,自己基础还是不行)
    SpringCloud-Spring Cloud 2 Finchley.M9报错问题
    IDEA 实体类生成serialVersionUID
    idea创建maven项目时出现Unable to import maven project: See logs for details
    Eclipse可以执行jsp文件却无法访问Tomcat主页
    已知n个正数:wi, 1<=i<=n, 和M。要求找出{wi }的所有子集使得子集内元素之和等于M。例如: n=4, (w1,w2,w3,w4)=(11,13,24,7),M=31 则满足要求的子集是(11,13,7)和(24,7)。
    嵌入式系统外部中断实验(按下按键,LED灯依次熄灭)
    嵌入式系统按键实现(按下按钮,LED灯熄灭)
    如何跳转一个由两个框架组成的页面
    对某个页面的过滤
  • 原文地址:https://www.cnblogs.com/AnKangwenqiang/p/16164235.html
Copyright © 2020-2023  润新知