MySQL数据库字典的创建和使用方法 (数据库字典 mysql)

MySQL是一种开源的关系型数据库管理系统,它被广泛应用于各种类型的应用程序和网站。其中,MySQL数据库字典是一种非常有用的工具,它可以帮助开发者更好地理解和管理MySQL数据库。在本篇文章中,我们将介绍。

一、MySQL数据库字典的定义

MySQL字典是MySQL数据库的文档化信息。它包含如下的内容:

1. 数据库的结构(包括表名,字段名称,字段数据类型,以及索引等信息)

2. 数据库的物理结构(包括表空间,块大小等信息)

3. 数据库的MSQL命令语法

4. 安全信息(包括用户和密码)

二、MySQL数据库字典的创建方法

1. 使用MySQL Workbench

MySQL Workbench是一种用于设计,开发和管理MySQL数据库的工具,它提供了一个创建数据库字典的功能。下面是使用MySQL Workbench创建MySQL数据库字典的步骤:

步骤1:打开MySQL Workbench

步骤2:单击”Server”选项卡

步骤3:单击”Data Export”选项卡

步骤4:在Data Export面板中,单击”Start Export”按钮

步骤5:选择要导出的表,并选择要导出的导出选项

步骤6:单击”Export to Self-Contned File”选项

步骤7:设置字典文件的名称和位置

步骤8:单击”Start Export”按钮

2. 使用Navicat

Navicat是一种流行的MySQL管理工具,它提供了创建MySQL数据库字典的功能。下面是使用Navicat创建MySQL数据库字典的步骤:

步骤1:打开Navicat

步骤2:连接到MySQL数据库

步骤3:右键单击需要导出的数据库

步骤4:从弹出菜单中选择”Export Database Structure”选项

步骤5:根据需要选择导出格式

步骤6:设置导出选项

步骤7:单击”Start”按钮

三、MySQL数据库字典的使用方法

创建MySQL数据库字典之后,我们可以使用其来管理和维护MySQL数据库。下面是使用MySQL数据库字典的一些场景:

1. 数据库的性能优化

通过分析MySQL数据库字典,我们可以查找潜在的性能问题,并采取优化措施。例如,可以检查表索引的使用情况,识别可以优化的查询等。

2. 新表的设计

MySQL数据库字典可以帮助我们更好地了解数据库的结构,包括表、列、索引和约束等。在设计新表时,我们可以参考现有数据库的结构,以确保表的一致性和可扩展性。

3. 数据库备份和恢复

在备份和恢复MySQL数据库时,MySQL数据库字典可以发挥重要作用。通过查看字典,我们可以了解数据库中的表、列和存储引擎等信息,以确保备份文件的正确性和完整性。

4. 表维护

使用MySQL数据库字典还可以轻松地管理和维护数据库中的数据表。我们可以编辑表结构,添加或删除列或索引等,以及执行其他管理任务。

结论

MySQL数据库字典是管理和维护MySQL数据库的关键工具之一。通过创建MySQL数据库字典,可以更好地了解数据库的结构和性能,以及更轻松地管理和维护数据库。在使用MySQL数据库字典时,需要注意保护数据库的安全性和完整性,避免误删除、修改数据库结构和数据。

相关问题拓展阅读:

本机运行的MySQL 数据库 如何安全的备份/还原

要想简单点的就去下一个Navicat for MySQL,这是MySql界面化的软件,更好下载一个中文版的,装上软件之后瞎罩御,那里有很详细的向导设置磨岩,你肯定可以学闷睁会。

一般是即时备份。做主从。或者是每天增量备份。

本文是在linux下,mysql 4.1.14版本下测试的,经过适当修改可能适合mysql 4.0,5.0及其其他版本.

本文适合于没有启动复制功能的mysql,如果启动了复制,可能不需要采取这种备份策略或者需要修改相关参数.

每个人的备份策略都可能不同,所以请根据实际情况修改,做到举一反三,不要照搬照抄,可能会造成不必要的损失.

希望你明白这个脚本要干什么工作!

脚本描述

每7天备份一次所有数据,每天备份禅贺团binlog,也就是增量备份.

(如果数据少,每天备份一次完整数据即可,可能没必要做增量备份)

作者对shell脚本不太熟悉,所以很多地方写的很笨 🙂

开启 bin log

在mysql 4.1版本中,默认只有错误日志,没有其他日志.可以通过修改配置打开bin log.方法很多,其中一个是在/etc/my.cnf中的mysqld部分加入:

log-bin

这个日志的主要作用是增量备份或者复制(可能还有其他用途).

如果想增量备份,必须打开这个日志.

对于数据库操作频繁的mysql,这个日志会变得很大,而且可能会有多个.

在数据库中flush-logs,或者使用mysqladmin,mysqldump调用flush-logs后并且使用参数delete-master-logs,这些日志文件会消失,并产生新的日志文件(开始是空的).

所以如果从来不备份,开启日志可能没有必要.

完整备份的同时可以调用flush-logs,增量备份之前flush-logs,以便备份最新的数据.

完整备份脚本

如果数据库数据比较多,我们一般是几天或者一周备份一次数据,以免拍芹影响应用运行,如果数据量比较小,那么一天备份一次也无所谓了.

#!/bin/sh

# mysql data backup script

# by scud

#

#

# use mysqldump –help,get more detail.

#

BakDir=/backup/mysql

LogFile=/backup/mysql/mysqlbak.log

DATE=`date +%Y%m%d`

echo ” ” >> $LogFile

echo ” ” >> $LogFile

echo “-” >> $LogFile

echo $(date +”%y-%m-%d %H:%M:%S”) >> $LogFile

echo “” >> $LogFile

cd $BakDir

DumpFile=$DATE.sql

GZDumpFile=$DATE.sql.tgz

mysqldump –quick –all-databases –flush-logs

–delete-master-logs –lock-all-tables

> $DumpFile

echo “Dump Done” >> $LogFile

tar czvf $GZDumpFile $DumpFile >> $LogFile 2>&1

echo “Backup Success!” >> $LogFile

rm -f $DumpFile

#delete previous daily backup files:采用增量备份的文件,如果完整备份后,则删除增量备份的文件.

cd $BakDir/daily

rm -f *

cd $BakDir

echo “Backup Done!”

echo “please Check $BakDir Directory!”

echo “copy it to your local disk or ftp to somewhere !!!”

ls -al $BakDir

上面的脚本把mysql备份到本地的/backup/mysql目录,增量备份的文件放在/backup/mysql/daily目录贺橘下.

注意:上面的脚本并没有把备份后的文件传送到其他远程计算机,也没有删除几天前的备份文件:需要用户增加相关脚本,或者手动操作.

增量备份

增量备份的数据量比较小,但是要在完整备份的基础上操作,用户可以在时间和成本上权衡,选择最有利于自己的方式.

增量备份使用bin log,脚本如下:

#!/bin/sh

#

# mysql binlog backup script

#

/usr/bin/mysqladmin flush-logs

DATADIR=/var/lib/mysql

BAKDIR=/backup/mysql/daily

###如果你做了特殊设置,请修改此处或者修改应用此变量的行:缺省取机器名,mysql缺省也是取机器名

HOSTNAME=`uname -n`

cd $DATADIR

FILELIST=`cat $HOSTNAME-bin.index`

##计算行数,也就是文件数

COUNTER=0

for file in $FILELIST

do

COUNTER=`expr $COUNTER + 1 `

done

NextNum=0

for file in $FILELIST

do

base=`basename $file`

NextNum=`expr $NextNum + 1`

if

then

echo “skip lastest”

else

dest=$BAKDIR/$base

if(test -e $dest)

then

echo “skip exist $base”

else

echo “copying $base”

cp $base $BAKDIR

fi

fi

done

echo “backup mysql binlog ok”

增量备份脚本是备份前flush-logs,mysql会自动把内存中的日志放到文件里,然后生成一个新的日志文件,所以我们只需要备份前面的几个即可,也就是不备份最后一个.

因为从上次备份到本次备份也可能会有多个日志文件生成,所以要检测文件,如果已经备份过,就不用备份了.

注:同样,用户也需要自己远程传送,不过不需要删除了,完整备份后程序会自动生成.

访问设置

脚本写完了,为了能让脚本运行,还需要设置对应的用户名和密码,mysqladmin和mysqldump都是需要用户名和密码的,当然可以写在脚本中,但是修改起来不太方便,假设我们用系统的root用户来运行此脚本,那么我们需要在/root(也就是root用户的home目录)创建一个.my.cnf文件,内容如下

password =password

user= root

user=root

password=password

注:设置本文件只有root可读.(chmod 600 .my.cnf )

此文件说明程序使用mysql的root用户备份数据,密码是对应的设置.这样就不需要在脚本里写用户名和密码了.

自动运行

为了让备份程序自动运行,我们需要把它加入crontab.

有2种方法,一种是把脚本根据自己的选择放入到/etc/cron.daily,/etc/cron.weekly这么目录里.

一种是使用crontab -e放入到root用户的计划任务里,例如完整备份每周日凌晨3点运行,日常备份每周一-周六凌晨3点运行.

简单的话,找到数据库文件,直接复制备份,具置看你的mysql配置

数据备份是数据容灾碰卜的最后一道防线,即便有着两地三中心的架构,备份扒猜也依然重要。如果备份出问题,备份时影响了交易业务,备份数据无法恢复,这些也是企业难以承受的。所以选择合适的备份工具尤为重要。

每个企业级数据库都会有配套的备份工具,MEB(MySQL Enterprise Backup)就是MySQL企业版中非常重要的工具之一,是为企业级客户提供的数据备份方案。

Xtrabackup一直作为MEB 开源版备胎而存在,从MySQL 8.0开始情况可能会变得有所不同。

在 MySQL 8.0的Backup Lock、Redo Log Archiving、Page Tracking等新特性的加持下,MEB备份/恢复体验会更好,目前xtrabackup还不支持这些特性。

MySQL 企业版还有哪些功能?

特性1:Backup Lock

8.0之前使用xtrabackup或MEB做物理备份,为了保证备份时InnoDB引擎表与其他引擎数据文件、及binlog日志的一致性会上全局读锁,再拷贝非InnoDB文件,这期间MySQL会变成只读,数据无法写入。表数量越多,可能加上时间越长,如果使用的xtrabackup 不小心没加rsync参数,逐个拷贝frm文件,锁定时间会更长,对业务影响较大。

我曾遇到过部署在虚拟机的实例有12023多张表,当时使用的xtrabackup,备份脚本中没加rsync参数,结果锁了十几分钟,而MEB就没有这样的问题。

MySQL 8.0支持轻量级备份锁 LOCK INSTANCE FOR BACKUP,数据字典也重构了由InnoDB存储。若不创建非InnoDB表,MEB默认使用备份锁获取binlog日志一致性位置,并阻止DDL操作,但不影响DML操作。

只有InnoDB表,仅上备份锁

请点击输入图片描述

若有非InnoDB表,上全局锁

请点击输入图片描述

特性2:Redo Log Archiving

MEB能做到在线热备,备份时不影响数据库读写,这是利用了InnoDB事务日志,在备份期间持续监视redo log的变化,读取增量变化,写入到ibbackup_logfile,也就不需要上锁来保障备份一致性。(对非InnoDB的文件需要上读锁拷贝)

如笑此穗果备份期间数据库写入负载特别大,而写入ibbackup_logfile速度较慢,redo log size也不大,很可能会出现ibbackup_logfile的写入速度跟不上redo log记录生成速度,redo log 空间不够时需要覆写日志文件,那么来不及写入ibbackup_logfile的记录会丢失,导致备份失败。

MEB 4.1对此做了优化,将redo log处理线程拆分成多线程分工合作,提高处理redo log的效率,降低了redo log覆写造成备份失败的概率,但redo log新增速度和ibbackup_logfile写入速度悬殊太大,问题依然会发生。

MySQL 8.0.17支持了redo log archiving 彻底解决了此问题,备份前设置innodb_redo_log_archive_dirs,指定redo log归档目录。MEB备份时自动开启日志归档,当checkpoint时会将旧记录归档到此目录,后续从归档文件中读取redo日志记录,避免了覆写可能导致的redo记录丢失。

请点击输入图片描述

注意:innodb_redo_log_archive_dirs 不能在数据目录下,目录权限要求是700

特性3:Page Tracking

Page Tracking 是为优化增量备份效率,减少不必要的数据页扫描。

增量备份当前有3种扫描模式:

page-track:利用LSN精确跟踪上次备份之后被修改页面,仅复制这些页面,效率最快。

optimistic:扫描上次备份之后被修改的InnoDB 数据文件中,找出并拷贝修改的页面。依赖系统时间,使用存在限制。

full-scan:扫描所有InnoDB数据文件,找出并拷贝自上次备份之后修改的页面,效率最慢

1、利用page-track增量备份,需先安装备份组件

mysql> INSTALL COMPONENT “

2、在全备前开启page-track

SELECT mysqlbackup_page_track_set(true);

3、全备之后,做增量备份时指定若满足page tracking条件,默认会使用page-track模式,否则会使用full-scan模式,也可以指定–incremental=page-track。

mysqlbackup –incremental-backup-dir=backup_incr –trace=3 –incremental=page-track –incremental-base=history:last_full_backup backup

incremental-base有3种选择

last_backup:基于前一次备份做增备,前一次备份可能是增备,也可能是全备。这种方式全备之间可能会有多个增备,每次增量可能比较小,但恢复时需要逐个合并。

last_full_backup:基于前一次全备做增备。这种方式增备会越往后体积可能越大,但恢复时只需要合并最后一次增量备份。

dir:基于前一次的备份目录,前一次备份可能是增备,也可能是全备。

测试对比full-scan 和page-track ,在变更页小于总体50%的情况下 ,备份效率至少能有1倍的速度提升。

page-track 模式 磁盘读写均衡,说明读写的都是修改页面。

请点击输入图片描述

full-scan模式 磁盘读写差别很大,说明读了很多未修改的页面。

请点击输入图片描述

应该所有的贺悄数据库操作软件都有备份功能的吧?

难道你没用任何工具?

关于数据库字典 mysql的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » MySQL数据库字典的创建和使用方法 (数据库字典 mysql)