mysql搭建主从复制架构

本文详细介绍了如何搭建MySQL主从复制架构,包括半同步复制和并行复制,以及实现读写分离的策略。通过主从复制确保数据高可用,通过半同步复制减少数据丢失风险,通过并行复制解决从库延迟问题。此外,文章还提到了双主模式以及MMM和MHA架构在故障自动切换中的应用,为数据库高可用提供了全面的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hello大家好,我是魔笑,希望这篇文章对你有帮助

下面的文章会对如下几点进行讲解

1,搭建主从复制架构

目的:实现数据库的高可用,实现数据的读写分离

2,升级为半同步复制

 目的:解决数据丢失的问题并行复制

3,升级为并行复制

目的:解决从库复制延迟的问题

4,实现读写分离

5,升级为双主模式,介绍实现故障自动切换的MMM架构,MHA架构

目的:实现高可用,

一,搭建主从复制建构

原理:

1,首先Master会有一个线程BinlogDump Thread,将数据写入Binlog日志当中.

2,Slave的I/O Thread将读取到的Binlog信息写入到本地Relay Log中,

3,Slave的SQL Thread检测到Relay Log的变更请求,解析relay log中内容在从库上执行。

1,下载数据库

下载地址:

https://downloads.mysql.com/archives/community/

下载mysql5.7.28

2,为了搭建主从架构,我们得有两个服务器,有钱的可以买两台云服务器,如果没钱,那就下载虚拟机vmare,再用xshell连接,方便操作,可以看我这篇文章

(47条消息) VmWare的下载和虚拟机安装_魔笑的博客-优快云博客

3,将两台服务器都进行如下安装,将下载的mysql包导入服务器,并且解压,随后我们按一定的顺序去进行安装,因为包与包之间有依赖

[root@localhost mysql]# tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
 //解压文件
mysql-community-embedded-5.7.28-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
mysql-community-devel-5.7.28-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.28-1.el7.x86_64.rpm
mysql-community-libs-5.7.28-1.el7.x86_64.rpm
mysql-community-test-5.7.28-1.el7.x86_64.rpm
mysql-community-common-5.7.28-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.28-1.el7.x86_64.rpm
mysql-community-client-5.7.28-1.el7.x86_64.rpm
mysql-community-server-5.7.28-1.el7.x86_64.rpm
//安装包的时侯按这个顺序执行
[root@localhost mysql]# rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm 
[root@localhost mysql]# rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
[root@localhost mysql]# rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
[root@localhost mysql]# rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
[root@localhost mysql]# rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
root@localhost mysql]# rpm -ivh mysql-community-devel-5.7.28-1.el7.x86_64.rpm
//初始化数据库
[root@localhost mysql]# mysqld --initialize --user=mysql
//查看数据的密码
[root@localhost ~]# cat /var/log/mysqld.log
如下部分数据,密码是:.8)0x>uL_sUr

2021-07-08T13:07:08.302187Z 1 [Note] A temporary password is generated for root@localhost: .8)0x>uL_sUr
//将mysql做成自动启动
[root@localhost ~]# systemctl start mysqld.service
//连接数据库
[root@localhost log]# mysql -uroot -p
//重新设置密码
mysql> set password=password('root');
//关闭防火墙
[root@localhost log]# systemctl stop firewalld
//禁用防火墙
[root@localhost log]# systemctl disable firewalld.service
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.


如果遇到如下错误:

3.1,

错误:依赖检测失败:
libcrypto.so.10()(64bit) 被 mysql-community-libs-compat-5.7.28-1.el7.x86_64 需要
libcrypto.so.10(libcrypto.so.10)(64bit) 被 mysql-community-libs-compat-5.7.28-1.el7.x86_64需要
libssl.so.10()(64bit) 被 mysql-community-libs-compat-5.7.28-1.el7.x86_64 需要
libssl.so.10(libssl.so.10)(64bit) 被 mysql-community-libs-compat-5.7.28-1.el7.x86_64 需要
安装的时候最好在root权限下安装

在命令后面加如下命令即可

--nodeps --force

rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm --nodeps --force

3.2,

[root@localhost lib64]# mysql -uroot -p
如下:
错误:error while loading shared libraries: libncurses.so.5: cannot open shared object file
解决,找到/usr/lib64 或者是 /usr/lib 找到libncurses.so的高版本用如下命令:

sudo ln -s /usr/lib64/libncurses.so.6.1 /usr/lib64/libncurses.so.5
如下:
错误:error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
同样的解决方法
sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5

接下来我们就进入正题开始搭建

4 配置master主库

4.1修改/etc/my.cnf文件

###在my.cnf文件里添加
#开启binlog日志
log_bin=mysql-bin
#设置主库的id
server-id=1
#立即同步到binglog里面
sync-binlog=1
#不同步那些数据
b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值