mysql数据备份-主从同步恢复

news2025/2/22 20:46:32

【1】数据库备份和恢复

1、xtrabackup-物理备份

全量备份主库数据:xtrabackup --backup --user=root --password=xxx --port=3306 --target-dir=/comProject/backup/db/full_20220831
将full_20220831文件上传到从库服务器上
关闭存库服务:service mysqld stop
对数据进行“预备”(Prepare)操作,使数据文件完全一致:xtrabackup --prepare --target-dir=/comproject/backup/db/full/
复制数据到从库:xtrabackup --copy-back --target-dir=/comproject/full_20220831/
修改用户和用户组权限:chown -R mysql:mysql /comproject/db
启动数据库:service mysqld start

备注:

壹:xtrabackup备份还原速度极快,备份的是ibd文件。mysql的db文件30GB左右,30分钟以内完成备份还原。

贰:备份还原过程,测试环境和正式环境xtrabackup版本、mysql版本需保持一致。

2.mydumper-逻辑备份

mydumper高性能多线程备份和恢复工具。 -t 代表线程数
备份:mydumper -h 127.0.0.1 -u root -p password-P 3306 -G -E -R -B xxdb -o xxdb_bak/ -v 3 -t 4 -k
还原:myloader -u root -p password -B xxdb -q 25000 -d  xxdb_bak/ -v 3 -t 4
还原:myloader -u root -p password -B xxdb -q 25000 -d  ./xxdb/ -v 3 -t 4 -o

注意:对每张表的表结构和表数据分别进行备份,备份速度快,但是还原速度有点慢,但是比mysqldump的还原方式要快很多。

3.mysqldump-逻辑备份

备份:mysqldump -u 用户名 -pPASSWORD数据库名 > 数据库名.sql
还原:mysql -uroot -pPASSWORD 数据库名 < 数据库名.sql

注意:将整个库表结构和表数据进行备份,导出为一个巨大的sql文件,导出速度很快,恢复速度最慢

4、数据库升级

升级前全量备份db.
数据库全库备份
文件解压:tar xvf mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar
停止mysql服务:service mysqld stop
备份配置文件:cp /etc/{my.cnf,my.cnf.bak0918}
升级:rpm -Uvh mysql-community-*.rpm 
查询mysql版本:mysql -V
还原配置文件:mv /etc/my.cnf.bak0918 /etc/my.cnf
重新加载单位:systemctl daemon-reload
重启:systemctl start mysqld.service

5.sql语句在控制台执行方式‍

执行单个sql文件:mysql> source  test.sql
批量执行sql文件:cat /folds/*.sql | mysql -u root -p cgdb

6、innodb_force_recovery

innodb_force_recovery=0   表示当需要恢复时执行所有的恢复操作;
innodb_force_recovery=1   表示忽略检查到的corrupt页;
innodb_force_recovery=2   表示阻止主线程的运行,如主线程需要执行full purge操作,会导致crash;
innodb_force_recovery=3   表示不执行事务回滚操作;
innodb_force_recovery=4   表示不执行插入缓冲的合并操作;
innodb_force_recovery=5   表示不查看重做日志,InnoDB存储引擎会将未提交的事务视为已提交;
innodb_force_recovery=6   表示不执行前滚的操作,强制重启!

说明:数据库损坏,服务无法启动,在/etc/my.cnf配置文件添加强制启动配置。从0-6尝试,直到服务启动为止。服务启动成功后,注释该配置,重新启动数据库服务。如果启动失败,导出全量数据,重新安装数据库服务,导入数据,恢复数据库数据。

【2】数据库主从恢复-xtrabackup

1、mysql数据库主节点
mysql -A -uadmin -ppsw -h127.0.0.1 -P 7001
select * from backends;
2、mysql数据库从节点

mysql -A -uroot -ppsw
show slave status\G;
3、mysql从库恢复(和主库全量同步)

全量备份主库数据:xtrabackup --backup --user=root --password=xxx --port=3306 --target-dir=/comProject/backup/db/full_20220831
将full_20220831文件上传到从库服务器上
关闭存库服务:service mysqld stop
对数据进行“预备”(Prepare)操作,使数据文件完全一致:xtrabackup --prepare --target-dir=/comproject/backup/db/full/
复制数据到从库:xtrabackup --copy-back --target-dir=/comproject/full_20220831/
修改用户和用户组权限:chown -R mysql:mysql /comproject/db
启动数据库:service mysqld start 
修复从节点的master info :
根据/comproject/backup/db/full_20220831/xtrabackup_binlog_info,获取master_log_file和master_log_pos值
change master to master_host='10.68.128.2',master_port=3306,master_user='root',master_password='xxx',master_log_file='mysql-bin.000026',master_log_pos=243;
启动从库心跳:start slave;
查看从库连接状态:show slave status\G;
4、主从恢复后,查看从库心跳状态

图片

5、查看主从节点同步情况,从节点仍然处于down的状态
图片

执行下述脚本,重启cetus服务,主从恢复正常
从库:

create user if not exists "cetus"@"localhost" identified by "123456";
GRANT SELECT, PROCESS, FILE, REFERENCES, INDEX, SHOW DATABASES, SUPER, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, SHOW VIEW ON *.* TO 'cetus'@'localhost'; 
revoke INSERT, UPDATE, DELETE, CREATE, DROP on *.* from cetus@'localhost';
update user set host='%' where user='cetus';
GRANT SELECT, PROCESS, FILE, REFERENCES, INDEX, SHOW DATABASES, SUPER, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, SHOW VIEW ON *.* TO 'cetus'@'%'; 
revoke INSERT, UPDATE, DELETE, CREATE, DROP on *.* from cetus@'%';
FLUSH PRIVILEGES;

主库:
create user if not exists "cetus"@"localhost" identified by "123456";
GRANT ALL PRIVILEGES ON *.* TO `cetus`@`localhost`;
update user set host='%' where user='cetus';
GRANT ALL PRIVILEGES ON *.* TO `cetus`@`%`;
FLUSH PRIVILEGES;
CREATE DATABASE if not exists proxy_heart_beat;
USE proxy_heart_beat;
CREATE TABLE if not exists tb_heartbeat ( p_id varchar(128) NOT NULL, p_ts timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (p_id) ) ENGINE = InnoDB DEFAULT CHARSET = utf8;

重启cetus服务:service cetus restart

【3】数据库主从恢复-复制db

复制主库db到从库
备份db文件下面的auto.cnf,重启mysql服务会重新生成auto.cnf
重启从库
查看主节点信息:show master status;
建立主从库连接:change master to master_host='10.68.128.2',master_port=3306,master_user='root',master_password='xxx',master_log_file='mysql-bin.000026',master_log_pos=243;
重启从节点:start slave;
查看从节点状态:show salve status\G;
重启cetus服务:service cetus start
查看主从状态:select * from backends;

【4】常用sql

1.update命令不能与order by limit配合使用

错误写法:update student1 set status=1 where name in (select name from student2 ORDER BY id limit 3)
正确写法:update student1 set status=1 where name in (select name from student2 where date>‘2022-09-01’)
2.多表关联update
update student1 a ,student2 b set a.status=b.status where a.name=b.name
3.查看个数据库大小

select 
table_schema as '数据库',
sum(table_rows) as '记录数',
sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',
sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'
from information_schema.tables
group by table_schema
order by sum(data_length) desc, sum(index_length) desc;

4.查看某个数据库中表大小

select 
table_schema as '数据库',
table_name as '表名',
table_rows as '记录数',
truncate(data_length/1024/1024, 2) as '数据容量(MB)',
truncate(index_length/1024/1024, 2) as '索引容量(MB)'
from information_schema.tables
where table_schema='xxxdb'
order by data_length desc, index_length desc;

5、创建视图

create view vc_test as (select * from test_table)

6、substring灵活用法

name列内容为:num3_4
selecct * from test_table where substring(a.name, 4, 1) > substring(a.name, 6, 1)

7、case when用法

select
ID,
NAME,
GENDER
case when GENDER = 1 THEN '男'
else '女'
end '性别'

8.数字转换为百分数

concat拼接:select concat(num,'%') from test_table
floor函数:select concat(floor(0.82*100),'%') from  test_table--82%
去掉小数点后两位:truncate(0.889*100,2)
四舍五入:round(0.8897*100,2)

9.表字段可以设置默认值
通过可视化工具设置默认值。
或者通过create语句,设置default值
10.清空表数据
truncate table table_name

数据库操作注意事项:
1、操作库之前先备份db。
2、操作表之前先备份表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/587482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

将一维数组作为一列合并到二维数组中的numpy.column_stack()方法

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将一维数组作为一列合并到二维数组中 numpy.column_stack() 选择题 关于以下代码说法错误的一项是? import numpy as np a np.array([0,0]) b np.array([[1,2],[3,4]]) print("【显示…

C++ 线性数据结构系列之低调而强大的单调栈

1. 前言 单调栈是在栈基础上进行变化后的数据结构。除了遵循栈的先进后出的存储理念&#xff0c;在存储过程中还需保持栈中数据的有序性。 根据栈中数据排序的不同&#xff0c;单调栈分为&#xff1a; 单调递增栈&#xff1a;从栈顶部向栈的底部&#xff0c;数据呈递增排序。…

【JY】ABAQUS正交各向异性弹性本构模型

写在前文 材料的线弹性本构模型能够很好的描述处于工作荷载水平下的材料性能情况&#xff0c;后续材料的塑性理论也需要在弹性本构模型的基础上进行开展。由于砌体结构所采用的砌体材料具有明显的正交各项异性&#xff0c;故先从正交各向异性弹性入手&#xff0c;根据弹性理论中…

Java基础篇 | Java开发环境的搭建

✅作者简介&#xff1a;大家好&#xff0c;我是Cisyam&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Cisyam-Shark的博客 &#x1f49e;当前专栏&#xff1a; Java从入门到精通 ✨特色…

中创“六一”公益关爱活动 | 慈善守护童心,爱心筑梦未来

每一个孩子都是一朵花 有的盛开在春天&#xff0c;有的绽放在夏天 每一朵花&#xff0c;都有与众不同的美好 年年盛夏&#xff0c;如约出发&#xff1a; 在第73个“六一国际儿童节”来临之际&#xff0c;中创算力开展“六一公益关爱活动”&#xff0c;希望通过这样一个爱心…

我用低代码结合ChatGPT开发,每天多出1小时摸鱼

&#x1f449;腾小云导读 GPT 出现之后&#xff0c;很多人推测大量的软件都会因为其出现而重写。本文主要是低代码平台与 ChatGPT 结合的一些思考以及实践。期望与各位读者一起搭上 AI 这列快车&#xff0c;为开发提提速&#xff5e; &#x1f449;目录 1 背景 2 Demo 演示 3 思…

2022年软件测试人员调查统计——数据统计

1、软件测试从业人员的年龄分布 测试行业的主力军年龄分布主要是集中在 26-30 岁这个区间&#xff0c;这部分的群体承担着行 业发展的主导力量&#xff0c;占 43.2%。根据数据显示&#xff0c;被调查者中占比最多的是 26-30 岁区间的软件测试从业人员&#xff0c;26-30 岁的测试…

14 种免费 GIS 软件:在开源中绘制世界地图

如果你想绘制一幅世界地图&#xff0c;会选择什么GIS软件呢&#xff0c;ArcGIS、GlobalMapper这些都是国外比较出名的商业GIS软件&#xff0c;当然在国内很容易找到可用的版本&#xff0c;但是也可以使用免费的GIS软件完成所有操作。 这些免费的GIS软件为您提供了完成工作的效…

使用 VSCode SSH 公网远程连接本地服务器开发 - cpolar内网穿透

文章目录 前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转…

Socket(六)

文章目录 1. 构造服务器Socket2. 构造但不绑定端口3. 获得服务器Socket的有关信息4. Socket选项5. SO_TIMEOUT6. SO_REUSEADDR7. SO_RCVBUF8. 服务类型 1. 构造服务器Socket 有四个公共的ServerSocket构造函数 public ServerSocket(int port) throws BindException, IOExcept…

第33步 机器学习分类实战:误判病例分析

填最后一个坑&#xff0c;如何寻找误判的病例。 之前我们在介绍AUC的时候&#xff0c;提到了两个函数&#xff1a;predict和predict_proba&#xff0c;复习一下&#xff1a; auc_test roc_auc_score(y_test, y_testprba) roc_auc_score的参数呢&#xff0c;包括两个&#…

用一杯星巴克的钱,训练自己私有化的ChatGPT

点击蓝字 关注我们 文章摘要&#xff1a;用一杯星巴克的钱&#xff0c;自己动手2小时的时间&#xff0c;就可以拥有自己训练的开源大模型&#xff0c;并可以根据不同的训练数据方向加强各种不同的技能&#xff0c;医疗、编程、炒股、恋爱&#xff0c;让你的大模型更“懂”你….…

想知道如何给游戏视频配音?有三个好方法教给你

现在越来越多的小伙伴会在闲暇之余打打游戏&#xff0c;也会观看一些游戏视频&#xff0c;其中不少游戏视频都有配音。游戏视频配音是一项有趣而富有创造力的任务&#xff0c;它可以让你为游戏画面注入声音&#xff0c;增强观众的体验。无论你是一个游戏爱好者还是一个内容创作…

前端vscode插件bito

GPT-4和ChatGPT越来越火&#xff0c;前端人员是否也能在日常工作中尝试体验其带来的乐趣呢&#xff1f; 答案是可以的&#xff01;安排&#xff01;&#xff01; 今天介绍一款vscode的插件 【bito】。 安装 安装后只需要自己注册一下&#xff0c;创建一个workspace就可以使用…

【满分】【华为OD机试真题2023B卷 JAVAJS】经典屏保

华为OD2023(B卷)机试题库全覆盖,刷题指南点这里 经典屏保 知识点循环迭代编程基础 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: DVD机在视频输出时,为了保护电视显像管,在待机状态会显示“屏保动画”,如下图所示,DVD Logo在屏幕内来回运动,碰到边缘会反弹…

凡亿教育荣获2023 STM32峰会“生态合作伙伴”奖项

作为中国知名的电子设计在线教育领域的优秀企业&#xff0c;凡亿教育喜迎好消息&#xff01;2023年5月12日&#xff0c;STM32峰会在深圳重磅回归&#xff0c;凡亿教育荣获STM32峰会颁发的“生态合作伙伴”奖项&#xff0c;这一殊荣充分肯定了凡亿教育在STM32生态系统中的杰出贡…

C进阶:数据在内存中的存储(1)

引入&#xff1a; 大家好&#xff0c;感谢大家最近的支持&#xff0c;今天也是开始了C进阶一系列的博文的创作&#xff0c;欢迎大佬们来指点&#xff0c;欢迎来一起沟通&#xff01;&#xff01;&#xff01; 数据类型的介绍 我们都知道&#xff1a;C语言具有以下几种数据类…

拼多多继续ALL IN

2023年注定是中国电商不平凡的一年。 随着网购用户数量见顶&#xff0c;经济形势进入新常态&#xff0c;电商平台已经来到了短兵相接的肉搏战阶段。 此刻的618大促&#xff0c;硝烟弥漫&#xff0c;刀光剑影&#xff0c;电商“决战”似乎是迫在眉睫。对各个平台来说&#xff0c…

SpringBoot:WebSocket实现消息撤回、图片撤回

下面只是讲述一下实现思路&#xff0c;代码基本没有哈&#xff01;有时间单独发表一篇关于websocket的相关操作的博客。 1. 消息撤回、图片撤回 个人觉得关于撤回&#xff0c;需要下述几个过程&#xff1a; 发送的消息的标签上可以定义一个属性&#xff0c;这个属性的值应该是…

18- 弹幕系统设计

1、弹幕系统设计 场景分析&#xff1a;客户端针对某一视频创建了弹幕&#xff0c;发送后端进行处理&#xff0c;后端需要对所有正在观看该视频的用户推送该弹幕。 1.1、实现方式 使用短连接进行通信或使用长连接进行通信。 1.1.1、短连接实现方案 所有观看视频的客户端不断…