ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL升级8.0与主从复制

2021-04-07 16:29:37  阅读:165  来源: 互联网

标签:8.0 主从复制 数据库 MySQL cnf mysql 从库 my


升级8.0

  1. 备份数据库配置文件

cd /etc
cp my.cnf my.cnf.back

  1. 停止连接数据库的应用,进行数据库备份(若有数据需要备份)

2.1、备份数据库(3选择1,不用)

创建目录 mkdir /home/hd/package/mysqlback
备份数据库 备份实例上所有的数据库
mysqldump -u root -p --all-databases > /home/user/package/mysqlback/all_db.sql

2.2、备份整个数据目录(3选择1,需要操作)

进入mysql数据目录(my.cnf的datadir) cd /var/lib/
备份数据目录 tar -czvf mysql.tar.gz mysql
解压目录(当前不用)tar -xzvf mysql.tar.gz

2.3、备份整个数据库(3选择1,需要操作)

进入目录 cd /usr/share/
备份目录 tar -czvf mysql-8.0.tar.gz mysql-8.0
解压目录(当前不用)tar -xzvf mysql-8.0.tar.gz

  1. 停数据库服务,卸载原来的数据库

service mysqld stop
rpm -qa|grep -i mysql 查看旧的数据库
mysql-community-client-8.0.16-2.el7.x86_64
mysql-community-libs-8.0.16-2.el7.x86_64
mysql-community-server-8.0.16-2.el7.x86_64
mysql-community-common-8.0.16-2.el7.x86_64
mysql-community-libs-compat-8.0.16-2.el7.x86_64
删除数据库,有顺序要求(common>libs>client>server)
rpm -e --nodeps mysql-community-common-8.0.16-2.el7.x86_64
rpm -e --nodeps mysql-community-libs-8.0.16-2.el7.x86_64
rpm -e --nodeps mysql-community-libs-compat-8.0.16-2.el7.x86_64
rpm -e --nodeps mysql-community-client-8.0.16-2.el7.x86_64
rpm -e --nodeps mysql-community-server-8.0.16-2.el7.x86_64
警告:/etc/my.cnf 已另存为 /etc/my.cnf.rpmsave

  1. 安装最新的数据库

进入目录 cd ~
创建目录 mkdir mysql
解压 tar xvf mysql-8.0.22-1.el7.x86_64.rpm-bundle.tar -C ./mysql
安装 cd mysql
sudo yum install mysql-community-{server,client,common,libs}-* --exclude=‘minimal
cd …
修改配置文件,将my.cnf.back的配置拷到my.cnf中
cd /etc
mv my.cnf my.cnf.back2
mv my.cnf.back my.cnf
启动mysql服务
sudo service mysqld start
mysql -V

数据备份:

8.0.16版本是个分水岭,之后的版本升级一步就可以解决。
1.将正在运行的8.0.20停掉,解压8.0.22的压缩包,删除旧的软链接指向新的8.0.22
目的是保持my.cnf 的一致性。
2.之后进入bin目录,datadir指向已存在数据目录
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir &
3.停止再重新启动

主从结构

为什么要主从复制
●做数据的热备

●如果主数据库宕机,可以快速将业务系统切换到从数据库上,可避免数据丢失。

●业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低。

●在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。通过做主从复制(读写分离)来减轻主数据库的负载。
主从复制流程:
( 1 )首先, MySQL主库在事务提交时会把数据变更作为事件 Events 记录在二进制日志文件Binlog中; MySQL主库上的 sync_binlog参数控制 Binlog日志刷新到磁盘。
( 2 )主库推送二进制日志文件 Binlog中的事件到从库的中继日志 Relay Log, 之后从库根据中继日志 Relay Log重做数据变更操作, 通过逻辑复制以此来达到主库和从库的数据一致。

MySQL通过3个线程来完成主从库间的数据复制:
当在从库上启动复制时,首先创建I/O程连接主库, 主库随后创建 Binlog Dump线程读取数据库事件并发送给 I/O线程, IO线程获取到事件数据后更新到从库的中继日志 Relay Log中去,之后从库上的 SQL线程读取中继日志RelayLog中更新的数据库事件并应用。

在这里插入图片描述

一主一从

在这里插入图片描述

一个主节点,一个从节点,简单方便

双主结构:「互为主从」

在这里插入图片描述

●容易产生的问题:数据不一致;因此慎用
●考虑要点:自动增长id
解决方法:修改UUID
通过mysql生成一个uuid,等会用于修改

select uuid()

生成的uuid
c3e68eed-8e40-11eb-9d18-fefcfee28c83

修改236的uuid
vim /mysql/data/auto.cnf

server-uuid=c3e68eed-8e40-11eb-9d18-fefcfee28c83

一主多从

常用于「扩展系统读取性能」,因为「读是在从库读取」的。
在这里插入图片描述

多主一从

从MySQL 5.7版本开始支持,也叫「多源复制」,数据流向是从多个主库同步数据到一个从库
多应用于:
数据汇总,可将多个主数据库同步汇总到一个从数据库中,方便数据统计分析。
读写分离,从库只用于查询,提高数据库整体性能。
在这里插入图片描述

级联复制

在主从复制的基础上,主从之间存在一个级联复制的从服务器,当级联复制的主机复制了主服务器的数据,「级联复制主机充当为主服务器,从服务器复制级联复制主机的数据及二进制日志数据」。
中间级联复制的主机无法将二进制日志传递到其他从服务器上,因此需要加上log_slave_updates选项,「目的是为了将主服务器的二进制日志文件能写入到从服务器上」。

在这里插入图片描述

标签:8.0,主从复制,数据库,MySQL,cnf,mysql,从库,my
来源: https://blog.csdn.net/qq_44961149/article/details/115485523

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有