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 测试

posted on 2022-04-19 10:56  AnkangWenqiang  阅读(147)  评论(0编辑  收藏  举报

导航