自建数据库和云数据库区别和使用(以MySQL为例)

举报
马拉松程序员 发表于 2020/08/23 15:02:21 2020/08/23
【摘要】 自建Mysql数据库和云数据库的区别和使用,供学习工作参考使用


在程序员这个群体中,多数人是从事应用开发,在应用开发中一定会跟数据打交道。很多程序员入门学习就是Mysql数据库,它不仅仅是找工作面试最常问的,也是干私活必备的数据库。当然在如今数字基建的背景下,云数据库应运而生,这是对开发人员很友好的一个存在,作为开发时不用过多关注数据库怎么搭建维护,只需要以最简单的方式使用好数据库,从而可以专注于应用的开发。


那么今天我就分享一下以自建Mysql数据库和云数据库的区别和使用,供学习工作参考使用。


【MySQL】

MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。开源,免费。 世界上最流行的开源数据库系统,功能足够强大,足以应付web应用。使用C和C++编写,支持包括window,linux 在内的等多种操作系统上运行。支持多线程,充分利用CPU资源。提供TCP/IP、ODBC和JDBC等多种数据库连接途径。【来源百度百科】


【裸机linux搭建MySQL数据库】


前提:linux机器可以自己用VM创建一个虚拟机,但是我更推荐直接去华为云市场撸一台,毕竟828的福利不能错过。


本来我想用


现在就直接上手撸命令


1.找到mysql数据库yum源
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

2.安装升级软件包
rpm -Uvh mysql57-community-release-el7-11.noarch.rpm

2.1查看yum源是否生效
yum repolist enabled | grep mysql

3.yum安装mysql  安装过程中需要下载时间比较长 (这个过程我用了一个多小时)
yum install mysql-community-server
中间提示选择y

4.服务启动
service mysqld start
 4.1查看mysql服务
 service mysqld status

5.查看初始密码(5.7默认不允许使用空密码登录)
cat /var/log/mysqld.log | grep 'A temporary password'
 6.使用初始密码登录mysql
注意 u 和p 后面不能加空格,否则报错
mysql -uroot -p'临时密码' 



 登录完成后现在你做什么操作都会有下面的提示
You must reset your password using ALTER USER statement before executing this statement (使用数据库前必须重置密码)

7.修改初始密码(以下都是在数据库中操作,不是在linux 系统中。以mysql>开头的命令行操作)
密码为强密码
要求包含大小写字母、数字及特殊字符,长度在6位以上
ALTER user 'root'@'localhost' identified by 'Mlscoder@123.';


7.1 以后就可以使用新密码登录
mysql -uroot -p'Mlscoder@123.'

9.开启远程登录 mysql 默认只能本地localhost登录,增加远程登录的权限 (方便使用navicat等工具远程链接)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Mlscoder@123.' WITH GRANT OPTION;

9.1查看当前用户的相关信息
select User,Host,authentication_string from user;

10.创建数据库

create database myuser;

使用数据库
use myuser;

查看当前数据库中的所有表
show tables ;

11.创建表
create  table user (
id  int (10) not null AUTO_INCREMENT comment  'id',
name varchar (100) comment '姓名',
age int (3) comment '年龄',
address varcahr(255) comment '地址',
PRIMARY key (id)
)DEFAULT CHARSET=utf8mb4  comment  '用户信息表' ;

 11.1 查看表结构

 desc user ;

12.表中插入数据
insert into user (id,name,age,address ) values (1,'张三',20,'上海市浦东新区') ;

12.1 查看表数据

select * from user ;


12.2 不指定id插入数据,在创建表DDL中,AUTO_INCREMENT 表示主键自增。
insert into user (name ,age ,address)  values ('李四',25,'上海市徐汇区');

select  * from user;



当然很少人会这样用数据库,即便是大佬,也是使用navicat、toad、PL/SQL等等一系列的数据库管理工具,当然一些并不是免费的。


整完了自己搞的,我们上手做一个云数据库吧,体验一把什么叫上云,也是拿华为云RDS来演示使用。


【华为云数据库RDS是啥】

华为云关系型数据库(Relational Database Service,简称RDS)是一种基于云计算平台的即开即用、稳定可靠、弹性伸缩、便捷管理的在线关系型数据库服务。通过华为云关系型数据库服务的管理控制台,用户几乎可以执行所有必需任务而无需编程,简化运营流程,减少日常运维工作量,从而专注于开发应用和业务发展。创建RDS实例后,您可以通过多种方式连接实例,连接后可以进行数据导入导出,以及创建数据库和帐户等操作。


行了废话不多说了,动手直接搭建一下。

前后从创建到可以使用也就2分钟,比起自己下载来快多了,其实也是依托着镜像容器来处理的,一个数据库实例放在一个容器中,这个在深一点就是高级运维工程师需要做的内容,容器集群的管理。


华为云的web在线数据管理页面感觉还是很大气的


 然后我也是同样的新建一个user表,在操作mysql的数据库的时候都是执行的DDL或者DML语句,不管是在线管理还是客户端工具,可以协助生成SQL语句,不过像这种创建表的语句还是可以的设置的, 但是复杂的查询语句还是需要自己来写。


SQL的中文名叫结构化查询语言(Structured Query Language),不管是mysql、oracle还是sql server 都是用sql来搞。


换句话说, sql 跟Java、Python一样,也是一个语言。




通过生成的DDL语句,来执行操作,这个也比较简单。


但是让我比较中意的功能是SQL诊断慢查询日志


我用之前做的一个项目的demo来演示一下什么叫SQL诊断。从我的本地库中导入云数据库一个数据库,因为是这个开发库,毕竟生产生的数据有些敏感,这里仅仅演示功能使用。




目标:用华为云数据库诊断一下我们上面的这个SQL 是否存在性能问题,以方便我们开发有针对性的优化这个问题哦


先把数据库结构和数据导入


之后进入到刚刚导入的库中,打开SQL 性能诊断,复制上刚刚的sql语句,提交诊断,很快就可以得到诊断结果。



 

看下图的相关结果:



在诊断结果中,有比较详细的优化的建议,简直是神器。


除此之外还有一个就是慢查询日志,这个功能在云DBA中,需要开启DAS收集慢日志的功能。



不过由于本身没有太多的生产数据,仅仅做下演示了。在日志收集上除了收集慢查询,还可以增加一下热点点击,比如像知道那个功能使用的多,那个查询最频繁,知道用户的用为,反馈到运营上,更有针对的对产品做出优化。


【总结】


在使用和操作上,云数据库在快速搭建上有着不可比拟的优势,主要是依托于镜像容器的解决方案实现秒级搭建,从设置到使用,前后不过1分钟,极大的减少了开发人员的在数据库上搭建的时间。其次便捷的web操作界面、SQL诊断、慢查询日志等在分析,为企业级别开发也是如虎添翼。同时,减少了自购服务器的繁琐和成本,本身具有的弹性伸缩的特点,保障了日后业务增长可能需要的快速扩容,成为企业用户或者个人开发者的一个不错的选择。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。