重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
通用规律只有使用 --all-databases (-A) 会 ERROR 1356,那就看看他到底备份了什么东西。于是喊上同事一起 less 看了下,上下扫了两眼。突然发现:1. 备份 SQL 文件里 DROP 掉了 mysql.proc;2. 后CREATE了一个新的 mysql.proc;3. LOCK TABLES 和 UNLOCK TABLES 中间居然没有备份 CREATE ROUTINE 任何数据?这不就是相当于每次导入全备都给我一个没有任何 sys schema routines 的全新 mysql.proc 表?那这不就异常的尴尬?
创新互联建站是一家专业提供安龙企业网站建设,专注与网站设计、成都网站建设、HTML5建站、小程序制作等业务。10年已为安龙众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
---- Table structure for table `proc`--
---- Dumping data for table `proc`-
真相大白在官方文档【sys-schema-usage】官方文档明确的告诉我们不会备份 sys 库。但在使用 mysqldump 在执行 --all-databases 会清空 mysql.proc 导致 sys 无法正常使用;这是一个 BUG,并且只存在于 MySQL 5.7.x !
1、mysql_upgrade install or upgrade sys schema
这个方案适用于 sys 库已经因为 mysqldump 导入而损坏的情况下使用。
注意:mysql_upgrade 在修理 sys 库的同时,还修理 mysql 库和用户库表(期间加锁且速度一般),有极小可能会误伤;使用 mysql_upgrade 的时候要加上 --upgrade-system-tables,不然会扫描用户库表。
2、全备时同时备份 sys 库
这个方案适用于需要还原的数据库,sys 库也不太正常的情况下使用;在全备后额外再备份一份 sys 库用于修复。
注意:不适用于做主从时使用它。
3、使用 databases 全备
这个方案适用于所有场景的全备需求,100% 安全。
4、使用 mysql-sys 开源代码
如果你的数据库 sys 全部中招了,又是生产库。那你只能用这个方法;
mysql-sys:
中记录了 sys 库的创建语句将文件下载到本地,然后根据数据库版本,执行以下命令即可。
1、运行mysql安装文件。 2、 按Next,然后选择安装方式,有"Typical(默认)"、"Complete(完全)"、"Custom(用户自定义)",选择第二个选项"Custom",下一步,MySQL Server(mysql服务器),Developer Components(开发者部分),Debug Symbols(调试符号),Server data files(服务器数据文件)默认 3、改变安装路径;原路径是"C:\Program Files\MySQL\MySQL Server 5.5\",也可以修改为:"E:\Program Files\MySQL Server 5.5\"。下一步,安装,会弹出窗口,点下一步,再点下一步,选择"Launch the MySql instance Configuration Wizard",意思是启动MySQL实例配置向导,再点击Finish,再点下一步,Detailed Configuration(详细配置)和Standard Configuration(标准配置),选择详细配置,下一步 4、选择服务器类型,"Developer Machine(开发测试类,mysql占用很少资源)"、"Server Machine(服务器类型,mysql占用较多资源)"、"DedicatedMySQL Server Machine(专门的数据库服务器,mysql占用所有可用资源)",根据自己的类型选择,测试软件选"Developer Machine",服务器选"Server Machine",下一步。 5、选择创建MySQL表时使用的表处理器,"Multifunctional Database"(通用多功能型,好,同时使用InnoDB和MyISAM储存引擎)、"Transactional Database Only"(服务器类型,专注于事务处理,主要使用InnoDB只偶尔使用MyISAM,一般)、"Non-Transactional DatabaseOnly"(非事务处理型,较简单,完全禁用InnoDB储存引擎,将所有服务器资源指派给MyISAM储存引擎),随自己的用途而选择.[13]
633M -rw-rw---- 1 mysql mysql 632M Oct 25 17:51 url_comment_0.ibd
12K -rw-rw---- 1 mysql mysql 8.7K Oct 25 18:16 url_comment_0.frm
178M -rw-rw---- 1 mysql mysql 178M Oct 25 18:53 url_comment_0.MYD
99M -rw-rw---- 1 mysql mysql 98M Oct 25 18:53 url_comment_0.MYI结论:由上面数据可知innodb plugin能有效压缩innodb数据文件,近50%,另外相同的情况下使用MyISAM表也可较大的减少数据大小(178+99633M).
当然实际的压缩比例和表的结构等有关,如字段为varchar会有较大的压缩比,而int类型压缩率会低些~
其它的压缩技术还可以使用myisampack,ARCHIVE,infobright等技术,但是这些技术常是用于数据表归档操作,令数据表有较大压缩比,但有不能进行update,insert操作等缺点,不在本文讨论范围~
1:官方百万级别的测试数据库:
官方测试数据库github网址:
下载到目录,解压即可,运行命令:
2:自己创建简单测试数据库:
快速随机生成测试语言的网站:
选择sql和想生成的字段,点击生成Generate!生成即可。
在MySQL输入生成的语句即可。
3:测试备份还原时用到的命令
删库跑路测试(先备份好)
还原后查询库的表数据是否完整。
采用复制整个数据存放目录
1:查看数据库数据存放位置
有两种方法:
1):在数据库中用命令 show variables like 'datadir'; 查看
2):在配置文件中查看,配置了 datadir 目录的可查看。没有配置的默认为 /var/lib/mysql/ 位置
Linux中查看配置文件
2:复制目录或者目录下某个数据库名
3:还原时直接复制文件夹到数据库目录即可
mysqldump又可叫做全量备份。
参数 --databases 同 -B ,单独一个库,也可省略。
1、备份命令mysqldump格式
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 database 数据库名 文件名.sql
备份testDatabase数据库
2、备份MySQL数据库为带删除表的格式
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
3、直接将MySQL数据库压缩备份
备份并压缩
4、备份MySQL数据库某个(些)表
备份testDatabase中的myTable表,不需要用参数 --databases 或者 -B
5、同时备份多个MySQL数据库
同时备份testDatabase和 employees两个库
6、备份服务器上所有数据库
参数 --all-databases 同 -A
7、还原MySQL数据库的命令
1) 不指定数据名还原,默认生成原数据库名称,还原所有数据库。
2) 指定数据名还原,还原指定单个数据库,需在数据库种预先创建一个testDatabase名称。
3) 还原压缩的MySQL数据库
4) 进入数据库用source导入
增量备份是针对于数据库的bin-log日志进行备份的,增量备份是在全量的基础上进行操作的。增量备份主要是靠mysql记录的bin-log日志。
1:查看是否开启bin-log日志
进入mysql输入命令可查看。
显示如下为开启状态,日志文件在/var/lib/mysql/以binlog.00001的格式保存。
如未开启,需要在配置文件种配置
2:查看目前使用的bin-log日志文件
进入mysql查看命令。
显示如下,目前使用的是binlog.000022文件,所有操作都记录在此文件。
查看当前testDatabase的表myTable数据如下,
3:刷新日志,使用新的日志文件(备份)
在命令端执行命令
日志文件从 binlog.000022 变为 binlog.000023
这时相当与已经备份成功,备份文件即为上次的binlog.000022日志文件。
4:删除数量,从日志还原数据
1) 删除ABC行
查询以及没有ABC行列。
2) 恢复数据ABC行
退出mysql,在命令端用mysqlbinlog命令恢复到binlog.000022日志状态。
进入数据库再次查看数据,ABC已经恢复。
增量备份完成。
我们在Windows系统中安装过MySQL数据库,那么如何在Ubuntu系统中安装呢?下面我给大家分享演示一下。
工具/材料
Ubuntu
01
首先我们需要登录MySQL的官方平台下载Ubuntu的安装包,如下图所示,大家选择红框中的安装包即可
02
接下来打开Ubuntu中的命令行,执行apt install numactl安装MySQL的依赖库numactl,如下图所示
03
然后执行apt install命令继续安装依赖包libaio-dev,如下图所示
04
接下来我们运用tar命令解压刚才下载的mysql压缩包,如下图所示
05
接着我们需要通过groupadd命令给Ubuntu系统添加一个mysql的用户组,如下图所示
06
然后添加一个mysql用户到mysql用户组中,如下图所示,这里主要用了useradd命令
07
接下来我们需要将解压后的压缩包移动到/usr/local/mysql文件夹下面,如下图所示
08
然后给移动后的文件夹添加目录权限到mysql用户组,如下图所示
09
接下来我们就可以对mysql数据库执行初始化命令了,如下图所示
10
最后我们在命令行开启MySQL服务即可完成数据库的安装了,如下图所示