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