Centos7虚拟机yum安装mysql实现主从复制案例教程

Centos7虚拟机yum安装mysql实现主从复制案例教程

mysql安装

首先,centos 默认安装有MariaDB, 属于mysql 分支, 安装mysql 时会覆盖掉MariaDB

  1. 使用wget下载mysql 官方Repository
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

在这里插入图片描述
2. 安装第一步下载的rpm文件

yum -y install mysql57-community-release-el7-10.noarch.rpm

在这里插入图片描述
3. 安装mysql 服务, 这一步需要花费一点时间

yum -y install mysql-community-server

在这里插入图片描述
下载依赖中, 耐心等待…
4. 启动mysql

systemctl start mysqld # 启动mysql
systemctl status mysqld  # 查看mysql 状态

在这里插入图片描述
5. 至此mysql 安装成功, 但是mysql 安装好后 我们需要知道他的初始化密码, 修改密码之后才能正式操作mysql 数据库

grep "password" /var/log/mysqld.log  # 产看mysql 初始化密码, root@localhost: 后面的就是初始化密码

在这里插入图片描述
6. 使用初始化密码登录mysql , 修改密码, 并授权其他机器可以链接mysql

mysql -u root -p  # 使用默认密码登录mysql
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';  # mysql 密码设置的时候会有强度校验 要求是 英文字母大小写, 特殊字符, 数字;  也可以修改密码校验强度(不建议修改, 养成习惯)指定比较简单的密码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7. 授权其他机器可以链接mysql

GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘密码’ WITH GRANT OPTION; # 授权命令  主要是授权其他机器 如navicat 等 以root账号 “Root@123” 密码链接数据库
FLUSH  PRIVILEGES;  #刷新授权  

在这里插入图片描述
在这里插入图片描述
8. 推出重新启动关闭防火墙 , 就可以使用navicat 操作数据库了

navicat 链接mysql配置

MySQL 刚安装好, 使用navicat 链接可能会报错, 但基本上两种情况:

  1. 防火墙
    解决方式是:粗暴的关掉防火墙
    使用 systemctl status firewalld 查看防火墙的状态
    使用 systemctl stop firewalld 暂时关闭防火墙
    使用 systemctl disable firewalld 永久关闭防火墙
  2. 未授权
    GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘密码’ WITH GRANT OPTION; 授权其他机器登录
    FLUSH PRIVILEGES; 刷新授权

主从复制

经过前面两部我们已经安装配置好数据库了, 接下来配置实现主从复制, 这里只准备了 192.168.171.111;192.168.171.112;两台虚拟机,实现一主一备(master-slave), 废话不多说, 开始…

角色系统环境mysql版本ip
mastercentos7mysql5.7192.168.171.111
slavecentos7mysql5.7192.168.171.112
  1. 首先来配置 192.168.171.111 主数据库, 授权从机登录用户,密码可以登录到主机
GRANT REPLICATION SLAVE ON *.* to 'user1'@'192.168.171.112' identified by 'Root@123';  # 授权从机登录用户名为 rep1,密码为 123,并且必须从
192.168.248.139这个地址登录,登录成功之后可以操作任意库中的任意表。其中,如果不需要限制登录地址,可以将 IP 地址更换为一个%
FLUSH PRIVILEGES; # 刷新授权 

在这里插入图片描述
2. 配置 111 的/etc/my.cnf

server-id=111           // 唯一   一般ip最后一段
log-bin=mysql-bin       // 开启binlog 日志
expire_logs_days= 7     // 过期清理时间
max_binlog_size= 100m   // binlog每个日志文件大小
binlog_cache_size= 4m   //binlog缓存大小
max_binlog_cache_size= 512m //最大binlog缓存大小
binlog-do-db=401_test  // 需要同步的数据库名称 

在这里插入图片描述
3. 进入数据库, 查看log_bin 是否开启成功 在这里插入图片描述
4. 使用 show master status\G 查看master 线程 信息 记录

File: mysql-bin.000001;  // 日志名称
Position: 336;           // 日志偏移量
Binlog_do_db:test;       // 需要同步的数据库
  1. 在111, 112 上面分别创建数据库 test待用;在这里插入图片描述
  2. 配置112 数据库 /etc/my.cnf
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-bin=mysql-bin       // 二进制文件
binlog_format=mixed
server-id=112          // 服务id
replicate-do-db=test   // 指定需要同步的数据库

在这里插入图片描述
7. 登录112数据库;开启同步操作命令

	CHANGE MASTER TO
    -> MASTER_HOST='192.168.171.111',     // 主机ip
    -> MASTER_USER='root',                // 登录账号
    -> MASTER_PASSWORD='Root@123',        // 密码  
    -> MASTER_LOG_FILE='mysql-bin.000001',// 第四步记录的日志文件 
    -> MASTER_LOG_POS=120;                // 第四步记录的日志偏移量

show slave status\G 查看slave 线程状态信息, 如果不对的话可以推出重启mysql 再试一下
在这里插入图片描述
如图代表数据主从配置成功

Slave_IO_Running为读取master的binaryLog的线程 Slave_SQL_Running为执行SQL的线程
  1. 效果展示:
    在这里插入图片描述
    在这里插入图片描述

拓展

  1. 这次主要讲述的是一主一从, 那么配置一主多从,只要在主机授权从机时不要指定具体的 ip地址 如下:
GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by 'Root@123';
  1. 互为主从的搭建, 现在需要在 112上授权111 的访问, 同事在111上配置112一样的slave 线程配置即可
grant replication slave on *.* to 'root'@'192.168.171.111' identified by 'Root@123';
  1. 主从复制的原理

主从的需要:
1.防止单机故障
2.如果数据库突然宕机.会导致数据丢失.
3.为了防止数据丢失,要进行实时备份

主从的过程:
1.主库进行更新操作会实时的将sql 语句写到二进制日志文件中
2.从库的slave线程,实时的监听主库的二进制文件,如果主库的二进制文件发送了改变,同步改变的二进制文件.
3.通过slave线程将读取的二进制文件写入到中继日志中.
4.Sql线程实时读取中继日志中的sql语句, 写入到slave 库中,实现数据同步。

图如:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值