MySQL主从数据库搭建

1. 安装mysql

准备两台虚拟机mysql-master和mysql-slave,分作作为主机和备机,对MySQL主备机进行模拟。
在这里插入图片描述
为了方便操作,在开启虚拟机后,可以改用MobaXterm连接虚拟机进行操作。
在这里插入图片描述
下载MySQL安装包
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
在这里插入图片描述

rpm -ivh mysql57-community-release-el7-9.noarch.rpm 
cd /etc/yum.repos.d/ 
yum install mysql-server

启动mysql服务

systemctl start mysqld

查看临时密码

grep 'temporary password' /var/log/mysqld.log

使用临时密码登录
在这里插入图片描述
修改验证策略、密码长度并设置密码

show variables like '%validate_password%'; //查看密码相关默认配置
set global validate_password_policy=LOW; //可选,只验证长度
set global validate_password_length=6; //可选,密码长度为6位
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; //修改密码

MySQL默认是没有开启远程控制的,必须添加远程访问的用户,即默认是只能自己访问,别的机器是访问不了的。

use mysql; 
select Host, User,authentication_string,plugin from user; // 查看主机、用户名和密码
update user set Host='%' where User='root'; // 把主机设置为%,即任意主机
flush privileges;

flush privileges: 当我们直接用DML语句修改系统权限表(mysql.user、mysql.db、mysql.tables_priv、mysql.columns_priv)时,内存中的权限数组是不会同步更新的,此时我们就需要flush privileges来更新内存权限数据了。
设置mysql开机启动

systemctl enable mysqld

设置mysql编码

vi /etc/my.cnf
添加 [mysqld] character_set_server=utf8 init_connect=‘SET NAMES utf8’

2. 主备搭建

2.1 MySQL的主从环境。

以上搭建模拟好了MySQL的主从环境。

角色IPOS/MySQL版本
主数据库192.168.11.10CentOS7 / MySQL5.7
备数据库192.168.11.30CentOS7 / MySQL5.7
2.2 主从数据库库原理

从库生成两个线程,一个I/O线程,一个SQL线程;i/o线程去请求主库 的binlog,并将得到的binlog日志写到relaylog(中继日志) 文件中;主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;

2.3 主从数据库的使用场

- 使用场景:
  - 灾备
  - 读写分离
  - 数据备份

2.4 配置主从环境

主机
编辑mysql配置文件

vi /etc/my.cnf

在文件末尾添加:

log_bin=master-bin
server-id=10010 #不要和别的冲突
expire-logs-days=7
binlog_ignore_db=mysql
binlog_ignore_db=information_schema
binlog_ignore_db=performation_schema
binlog_ignore_db=sys

重启mysql

systemctl restart mysqld

登录MySQL,并创建从库用户,并为它授权

create user 'repl'@'192.168.11.30' identified by '123456';
GRANT REPLICATION SLAVE ON *.* to 'repl'@'192.168.11.30' identified by '123456'; //REPLICATION SLAVE权限可以查看从服务器,从主服务器读取二进制日志。

注意(补充):当创建用户提示密码验证失败的话,可执行以下命令

show variables like '%validate_password%'; //查看密码相关默认配置
set global validate_password_policy=LOW; //可选,只验证长度
set global validate_password_length=6; //可选,密码长度为6位

在备机测试登录主数据库

mysql -h 192.168.11.10 -u repl -p123456 // 在备机上登录

在这里插入图片描述
如果登录失败,请尝试关闭防火墙

systemctl status firewalld.service // 查看防火墙状态
systemctl stop firewalld.service // 关闭防火墙
systemctl disable firewalld.service // 禁止防火墙开机启动

确认防火墙关闭后,再尝试登录mysql。


备机
编辑mysql配置文件/etc/my.cnf

server-id = 10011 #不要和别的冲突
relay-log = slave-relay-bin
relay-log-index = slave-relay-bin.index

重启mysql。
在主库查询以下命令

show master status;

在这里插入图片描述
主数据File和Position在后面会用到

登录mysql从数据库,指令以下命令

change master to
master_host='192.168.11.10',
master_port=3306,
master_user='repl',
master_password='123456',
master_log_file='master-bin.000004',
master_log_pos=154;

查看从数据库状态

start slave;
show slave status \G;

在这里插入图片描述
当看到Slave_IO_Running和Slave_SQL_Running的值均为Yes时,表示MySQL主备搭建成功。

2.5 主从数据库测试

在主数据库创建一个数据库test
在这里插入图片描述
在被数据库可以看到主数据刚创建的test数据库
在这里插入图片描述
可以看到对主数据库的修改都会被同步到从数据库中。

2.6 主从数据库的作用

主从复制适合与读多写少的场景,它的示意图如下:
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值