MySQL主从复制

本文详细介绍了MySQL主从分离的概念及其实现过程,包括为何需要主从分离以优化数据库性能和提高数据安全性。此外,还阐述了如何在Docker环境中安装并配置MySQL,以及设置主从库的步骤,包括创建备份账号、配置日志和启动从库等。最后,文章通过实例验证了主从库的正确配置和同步。
摘要由CSDN通过智能技术生成

一、MySQL主从读写分离概念

1.什么是Mysql主从分离
将读操作和写操作分离到不同的数据库上,避免主服务器出现性能瓶颈;主服务器进行写操作时,不影响查询应用服务器的查询性能,降低阻塞,提高并发; 数据拥有多个容灾副本,提高数据安全性,同时当主服务器故障时,可立即切换到其他服务器,提高系统可用性;
2.为什么要实现Mysql主从分离
大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力。
在这里插入图片描述

二、docker安装MySQL

1.下载MySQL5.7

docker pull mysql:5.7

2.创建MySQL相关文件夹

mkdir -p /docker/mysql/log    # 日志文件
mkdir -p /docker/mysql/data   # 数据文件
mkdir -p /docker/mysql/conf   # 配置文件

3.新建MySQL配置文件my.cof,该文件放到/docker/mysql/conf路径下

vim /docker/mysql/conf/my.cnf  

内容:

1.[client]  
2.default_character_set=utf8  
3.[mysqld]  
4.collation_server = utf8_general_ci  
5.character_set_server = utf8  

4.启动MySQL

docker run -d --name mysql -p 3306:3306 --privileged=true -v /docker/mysql/log:/var/log/mysql -v /docker/mysql/data:/var/lib/mysql -v /docker/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7  

三、MySQL主从库配置

1.配置主库
(1).master上配置bin-log日志
修改主库的配置文件:vim docker/mysql/conf/my.cnf,如下内容,修改配置后需要重启mysql服务器。

log-bin= master-bin            	#[必须]启用二进制日志  
log-bin-index=master-bin.index  
server-id = 4                   #[必须]服务器唯一ID,默认是1,最好取ip的后3位  
expire-logs-days = 7          	#只保留7天的二进制日志,以防磁盘被日志占满  

在这里插入图片描述
(2).测试log_bin是否成功开启

show variables like '%log_bin%';  

log_bin为ON则表示开启成功,OFF表示开启失败
在这里插入图片描述
(3).查看主服务器状态

show master status

在这里插入图片描述
2.配置从库
(1).slave上配置relay-log
修改从库的配置文件:vim docker/mysql/conf/my.cnf,如下内容,修改配置后需要重启mysql服务器。

relay-log-index=slave-relay-bin.index  
relay-log=slave-bin  
server-id=22          #只要和master的server-id不一样就可以了  

在这里插入图片描述

四、关联主从服务器

1.主服务器配置
(1).master数据库建立备份账号
该语句须在主库执行

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.2.13' IDENTIFIED BY '123456';  
FLUSH PRIVILEGES;  
USE mysql;  

repl为用户名,192.168.2.13代表从数据库的主机地址,如上表示远程地址为密码为123456的,用户名是repl就可以连接到master主机,并为其授予 replication slave 权限。123456为master的连接密码。

SELECT user,authentication_string,HOST FROM user; 

在这里插入图片描述
2.从服务器配置
(1).slave数据库配置操作
注:如果启动slave后,该语句无法执行第二次,需要将slave停止才能执行
其中的master_log_file和master_log_pos,就是主库中File和Position,在主库中使用 show master status;就可以看到了。
该语句须在从库执行

CHANGE MASTER TO master_n ='192.168.2.7',  
master_port = 3306,  
master_user ='repl',  
master_password ='123456',  
master_log_file ='master-bin.000008',  
master_log_pos = 502;  

去主库查看状态

show master status; 

在这里插入图片描述
(2).启动、停止slave(打开/停止主从同步)

start slave;  
stop slave;  

(3).查看slave从机的状态

show slave status;

在从库状态中看到以下状态则说明启动成功
在这里插入图片描述
注:如果Slave_SQL_Running为NO,执行以下操作

stop slave;  
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;  

五、主从验证

1.在主库创建一个数据库
在这里插入图片描述
2.去从库中查看是否有该数据库
在这里插入图片描述

下篇文章:SpringBoot+MySQL使用Mycat实现读写分离

SpringBoot+MySQL使用Mycat实现读写分离

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值