您现在的位置是:首页 > cms教程 > shopxo教程shopxo教程
shopxo怎么实现mysql备份
卫耿羿2025-07-28shopxo教程已有人查阅
导读完全备份full backup:备份全部字符集增量备份incremental backup:上次完全备份或增量备份以来改变的数据,不能单独使用,要借助于完全备份,备份的频率取决于数据的更新频率
1.为什么要进行mysql的备份?
(1)灾难恢复
(2)测试
(3)数据还原
2.备份的注意事项
(1)恢复数据所需要的时间
(2)恢复过程中是否需要停止数据库
(3)恢复的对象(库,表,多库,多表)
(4)可以容忍丢失多久的数据
3.备份的类型
(1)根据是否需要停止数据库分为:
冷备cold backup:需要关闭mysql服务,读写请求均不允许进行
温备warm backup:服务在线,但仅支持读请求,不允许写请求
热备hot backup:备份的同时,业务不受影响
注:
这种类型的备份,取决于业务的需求,而不是备份工具
MyISAM不支持热备;InnoDB支持热备,但需要专门的工具
(2)根据备份的数据 的范围分为:
完全备份full backup:备份全部字符集
增量备份incremental backup:上次完全备份或增量备份以来改变的数据,不能单独使用,要借助于完全备份,备份的频率取决于数据的更新频率
差异备份differential backup:上次完全备份以来改变了的数据
两种策略:
完全+增量+二进制日志
完全+差异+二进制日志
(3)根据备份数据或文件
物理备份:直接备份数据文件
优点:
备份和恢复操作都比较简单,可跨mysql版本;恢复速度快
建议:
不要假设备份一定可用,要进行测试
mysql> check table table_name;#测试表是否可用
逻辑备份:备份表中的数据和代码
优点:恢复很简单、备份的结果为ASCII文件,可用直接编辑
与存储引擎无关、可用通过网络备份和恢复
缺点:
备份或恢复都需要mysql服务器进程参与
备份结果占据更多的空间
浮点数可用会丢失精度
还原之后,索引需要重建
4.备份的对象
数据;配置文件;代码(存储过程,存储函数,触发器);
os相关的配置文件;复制相关的配置;二进制日志
5.备份和恢复的实现
(1)利用select into outfile实现数据的备份和还原
mysqldump常用来做<温备>,所以我们首先需要对想备份的数据施加读锁
施加读锁的方式:
(1)直接在备份的时候添加选项
--lock-all-tables #对备份的数据库的所有表施加读锁
--lock-table#仅对单张表施加读锁,即使是备份整个数据库(备份某张表时才使用)
(2)服务器端
增量备份
(1)灾难恢复
(2)测试
(3)数据还原
2.备份的注意事项
(1)恢复数据所需要的时间
(2)恢复过程中是否需要停止数据库
(3)恢复的对象(库,表,多库,多表)
(4)可以容忍丢失多久的数据
3.备份的类型
(1)根据是否需要停止数据库分为:
冷备cold backup:需要关闭mysql服务,读写请求均不允许进行
温备warm backup:服务在线,但仅支持读请求,不允许写请求
热备hot backup:备份的同时,业务不受影响
注:
这种类型的备份,取决于业务的需求,而不是备份工具
MyISAM不支持热备;InnoDB支持热备,但需要专门的工具
(2)根据备份的数据 的范围分为:
完全备份full backup:备份全部字符集
增量备份incremental backup:上次完全备份或增量备份以来改变的数据,不能单独使用,要借助于完全备份,备份的频率取决于数据的更新频率
差异备份differential backup:上次完全备份以来改变了的数据
两种策略:
完全+增量+二进制日志
完全+差异+二进制日志
(3)根据备份数据或文件
物理备份:直接备份数据文件
优点:
备份和恢复操作都比较简单,可跨mysql版本;恢复速度快
建议:
不要假设备份一定可用,要进行测试
mysql> check table table_name;#测试表是否可用
逻辑备份:备份表中的数据和代码
优点:恢复很简单、备份的结果为ASCII文件,可用直接编辑
与存储引擎无关、可用通过网络备份和恢复
缺点:
备份或恢复都需要mysql服务器进程参与
备份结果占据更多的空间
浮点数可用会丢失精度
还原之后,索引需要重建
4.备份的对象
数据;配置文件;代码(存储过程,存储函数,触发器);
os相关的配置文件;复制相关的配置;二进制日志
5.备份和恢复的实现
(1)利用select into outfile实现数据的备份和还原
#把需要备份的数据备份出来
mysql> use shopxo;#打开shopxo库
mysql> select * from s_app_home_nav into outfile '/data/mysql/app.txt';
#删除s_app_home_nav表
#使用load data infile恢复
mysql> drop table s_app_home_nav;
Query OK, 0 rows affected (0.37 sec)
#新建s_app_home_nav表
CREATE TABLE `s_app_home_nav` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
`platform` char(30) NOT NULL DEFAULT 'pc' COMMENT '所属平台(pc PC网站, h5 H5手机网站, app 手机APP, alipay 支付宝小程序, weixin 微信小程序, baidu 百度小程序)',
`event_type` tinyint(2) NOT NULL DEFAULT '-1' COMMENT '事件类型(0 WEB页面, 1 内部页面(小程序或APP内部地址), 2 外部小程序(同一个主体下的小程序appid), 3 打开地图, 4 拨打电话)',
`event_value` char(255) NOT NULL DEFAULT '' COMMENT '事件值',
`images_url` char(255) NOT NULL DEFAULT '' COMMENT '图片地址',
`name` char(60) NOT NULL DEFAULT '' COMMENT '别名',
`is_enable` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '是否启用(0否,1是)',
`is_need_login` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否需要登录(0否,1是)',
`bg_color` char(30) NOT NULL DEFAULT '' COMMENT 'css背景色值',
`sort` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '排序',
`add_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间',
`upd_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `platform` (`platform`),
KEY `is_enable` (`is_enable`),
KEY `sort` (`sort`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='手机 - 首页导航';
mysql> load data infile '/data/mysql/app' into table s_app_home_nav;
Query OK, 24 rows affected (0.16 sec)
Records: 24Deleted: 0Skipped: 0Warnings: 0
(2)利用mysqldump工具对数据进行备份和还原mysqldump常用来做<温备>,所以我们首先需要对想备份的数据施加读锁
施加读锁的方式:
(1)直接在备份的时候添加选项
--lock-all-tables #对备份的数据库的所有表施加读锁
--lock-table#仅对单张表施加读锁,即使是备份整个数据库(备份某张表时才使用)
(2)服务器端
mysql> flush tables with read lock; #施加读锁,表示把位于内存上的表统统都同步到磁盘上去,然后施加读锁
mysql> flush tables with read lock;
#释放读锁
#但这对于InnoDB存储引擎来讲,虽然你也能够请求到读锁,但是不代表它的所有数据都已经同步到磁盘上,
#因此当面对InnoDB的时候,我们要使用
mysql> show engine innodb status;
#看看InnoDB所有的数据都已经同步到磁盘上去了,才进行备份操作
#备份策略:完全+增量+二进制日志
例子:
#先给数据库做完全备份
[root@lfs ~]# mysqldump -uroot -p --single-transaction --master-data=2 --databases shopxo > /data/mysql/shopxo_`date +%F`.sql
#--single-transaction 此选项能实现热备innodb表,因此不需要同时使用--lock-all-tables
#--master-data=2 记录备份那一时刻的二进制日志的位置,并且注释掉,1为不注释
#--database 指定备份的数据库
#回到mysql服务器端更新数据
mysql> use shopxo;
mysql> create table tb1(id int);
#创建表
mysql> insert into tb1 values(1),(2);
#插入数据
#查看完全备份里的二进制日志位置
[root@lfs ~]# cat /data/mysql/shopxo_2020-08-25.sql |grep mysql-bin
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000026', MASTER_LOG_POS=214;
#查看此时的二进制日志位置,从备份文件里边记录的位置到此位置,即为增量的部分
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000026 |494 |||
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)增量备份
[root@lfs ~]# mysqlbinlog --start-position=214 --stop-position=494 /usr/local/mysql/data/mysql-bin.000026 > /data/mysql/shopxo_bin.sql
回到mysql
#插入一些记录
mysql> insert into tb1 values (4),(5);
#删除shopxo库
mysql> drop database shopxo;
导出这次的二进制日志
#查看删除操作时二进制日志的位置
[root@lfs ~]# mysqlbinlog --start-position=494 /usr/local/mysql/data/mysql-bin.000026
# at 564
#2008253:32:17 server id 1end_log_pos 659 Querythread_id=4exec_time=0error_code=0
use `shopxo`/*!*/;
SET TIMESTAMP=1598297537/*!*/;
insert into tb1 values (4),(5)
/*!*/;
# at 659
#2008253:32:17 server id 1end_log_pos 686 Xid = 625
COMMIT/*!*/;
#导出二进制日志
[root@lfs ~]# mysqlbinlog --start-position=494 --stop-position=686 /usr/local/mysql/data/mysql-bin.000026 >/data/mysql/shopxo_02.sql
先让mysql离线
#关闭二进制日志
mysql> set sql_log_bin=0;
#滚动下日志
mysql> flush logs;
恢复数据
#导入完全备份文件
[root@lfs ~]# mysql -uroot -p < /data/mysql/shopxo_2020-08-25.sql
#导入增量备份文件
[root@lfs ~]# mysql -uroot -p < /data/mysql/shopxo_bin.sql
#导入二进制日志文件
[root@lfs ~]# mysql -uroot -p < /data/mysql/shopxo_02.sql
#验证:
mysql> use shopxo;
Database changed
mysql> select * from tb1;
+------+
| id |
+------+
|1 |
|2 |
|4 |
|5 |
+------+
4 rows in set (0.00 sec)
本文标签:
很赞哦! ()
相关教程
图文教程
shopxo插件开发钩子引入静态css/js的方法
如果一些小插件,没有控制器,但是页面显示的内容可能需要css或者js,我们也可以在config.json里面定义 plugins_css 或 plugins_js 钩子
Ubuntu实现shopxo商城+Mysql主从复制+NFS
Ubuntu实现电商网站+Mysql主从复制+NFS1、环境准备提前准备:Mysql8.0.30安装包、Mysql安装脚本、shopxo2.3.0安装包、DNS脚本服务器 IP地址 作用 系统版本Mysql-master 10.0.0.103 shopxo网站主数据库 Ubuntu2004
shopxo的MySQL分组错误解决方法
MySQL5.7.5以上版本,实现了对功能依赖的检测。如果启用了only_full_group_by SQL模式(默认启用),那么MySQL就会拒绝执行 select list、HAVING condition或ORDER BY list引用
shopxo快手小程序注册方法
本文参考官方文档快手小程序文档>>注册快手开放平台在快手小程序开发者平台右上角【注册/登录】入口进入,点击下方立即注册,进行小程序注册。
相关源码
-
(自适应)高端集团跨国公司产业联盟机构网站模板免费下载基于PbootCMS内核开发的集团级企业网站模板,采用响应式设计架构,确保在各类移动设备上获得浏览体验。通过模块化布局与简约大气的视觉风格,帮助集团企业高效展示组织架构、发展历程和业务矩阵,建立专业的企业形象窗口。查看源码 -
自适应车行汽车租赁二手车行业企业网站模板为汽车租赁与二手车交易场景深度优化,采用PbootCMS内核开发,聚焦车辆展示、租赁流程与服务介绍三大核心模块。响应式布局确保PC与移动端数据实时同步,后台一键管理车辆信息查看源码 -
(自适应响应式)瓷砖大理石装修建材类网站pbootcms模板html5模板本模板基于PbootCMS开发,针对瓷砖、大理石等建材行业特点进行优化设计。采用响应式布局技术,确保产品展示效果在不同设备上都能合理呈现。模板特别强化了石材纹理的视觉表现力,帮助建材企业更好地展示产品质感。查看源码 -
(自适应)HTML5响应式双语绿色物流运输快递货运pbootcms源码本款基于PbootCMS开发的网站模板为物流运输、快递货运行业设计,采用HTML5技术构建,支持简繁字体切换。模板设计充分考虑了货运物流行业的特点,可专业展示运输服务、物流网络和业务优势等内容。查看源码 -
(自适应)证书授权书防伪查询系统pbootcms模板本模板基于PbootCMS系统开发,为各类证书查询机构设计,可快速构建高效安全的证书核验平台。采用响应式布局技术,自动适配手机端操作,支持批量导入证书数据,提供便捷的查询接口,满足机构证书管理及用户在线核验需求。查看源码 -
(自适应)APP应用软件落地页单页推广页网站模板下载基于PbootCMS内核开发的响应式单页模板,为企业产品展示、服务推广等应用场景设计。通过简洁直观的视觉布局与高效的技术架构,帮助用户快速构建专业级落地页面,实现移动端与PC端数据实时同步展示。查看源码
| 分享笔记 (共有 篇笔记) |
