一 常用数据库
MySQL:社区版免费。最常见的web开发数据库之一,lnmp中的M。
mariadb:免费。MySQL被收购后,基于MySQL源码产生的新的分支,基本和MySQL相同。
postgresql:免费。相对于MySQL功能和配置项更多。
sqlite:免费。轻型数据库,多用于嵌入式开发。
Oracle:功能最强大的数据库之一。
sqlserver:微软出品的数据库,对windows系统支持较好。

二 常用数据库管理工具
heidisql:免费。支持 MariaDB、MySQL、Microsoft SQL Server、PostgreSQL、SQLite。
DBeaver:免费。支持几乎所有主流数据库。
Navicat:收费。支持几乎所有主流数据库。
PL/SQLDeveloper:收费。针对Oracle的数据库管理工具。
SQLServer Management:sqlserver安装包中可选择安装的数据库管理工具。

三 sql常用语法
SQL 结构化查询语言 Structured Query Language
database:数据库名称,连接数据库时,除了需要用户名、密码和端口外,多数工具还需要填写数据库的名称。
table:具体存储数据的表。
value:每种数据库有不同的数据类型命名方式,一般都是int,double,varchar,date,bool等。
增删改查:
创建数据库:CREATE DATABASE my_db;
创建表:CREATE TABLE table_name(ID int(255));
增:INSERT INTO table_name VALUES (value1,value2,value3,...);
INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
删:DELETE FROM table_name WHERE some_column=some_value;
改:UPDATE table_nameSET column1=value1,column2=value2,... WHERE some_column=some_value;
查:SELECT column_name,column_name FROM table_name;

四 关于数据库性能优化
ORM 对象关系映射 Object Relational Mapping
目前多数的开发框架不再需要程序员直接操作数据库,而是使用其自带的ORM来对数据库进行操作。
比如说PHP的开发框架中,laravel使用的是Eloquent,yii使用的是Active Record。
比如说java框架中的Hibernate和mybatis。
所以对于运维工程师和后台工程师来说,直接用sql语句对数据库的数据进行操作的时候并不多,索引和联合查询基本都是自动完成。
大多数情况下,运维工程师对数据库进行调优,可以分为sql语句的优化和数据库配置的优化。
sql语句的优化主要是查询日志,找出耗时较长的语句,或重复执行次数过多的语句,与后台工程师一起分析原因,比如说字段属性的调整。
数据库配置的优化,主要是根据实际情况,配置Redis、Memcache,或者对数据库进行分区。这些都需要根据实际情况,与后台工程师进行确认。

五 数据库的备份和恢复
不同的数据库备份语句不同,没有统一的sql语句。
比如oracle的exp,MySQL的mysqldump,SqlServer的BACKUP等,需要根据需要编写脚本。
也可以用Navicat的计划任务功能,对数据库进行定时的异地备份。

数据库急速入门.txt

启动错误信息如下:

mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: failed (Result: start-limit) since Mon 2021-12-20 10:30:05 CST; 1s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 2996 ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/mysqld.pid $MYSQLD_OPTS (code=exited, status=1/FAILURE)
  Process: 2978 ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)

Dec 20 10:30:05 iZbp188uiv7i1p64qq0oicZ systemd[1]: Failed to start MySQL Server.
Dec 20 10:30:05 iZbp188uiv7i1p64qq0oicZ systemd[1]: Unit mysqld.service entered failed state.
Dec 20 10:30:05 iZbp188uiv7i1p64qq0oicZ systemd[1]: mysqld.service failed.
Dec 20 10:30:05 iZbp188uiv7i1p64qq0oicZ systemd[1]: mysqld.service holdoff time over, scheduling restart.
Dec 20 10:30:05 iZbp188uiv7i1p64qq0oicZ systemd[1]: Stopped MySQL Server.
Dec 20 10:30:05 iZbp188uiv7i1p64qq0oicZ systemd[1]: start request repeated too quickly for mysqld.service
Dec 20 10:30:05 iZbp188uiv7i1p64qq0oicZ systemd[1]: Failed to start MySQL Server.
Dec 20 10:30:05 iZbp188uiv7i1p64qq0oicZ systemd[1]: Unit mysqld.service entered failed state.
Dec 20 10:30:05 iZbp188uiv7i1p64qq0oicZ systemd[1]: mysqld.service failed.

一 查找配置文件
find / -name my.cnf
/usr/local/mysql/etc/my.cnf

二 查看日志文件路径
cat /usr/local/mysql/etc/my.cnf | grep log-error
/web/logs/mysql/mysqld.log

三 查看日志文件尾页
tail -200 /web/logs/mysql/mysqld.log
2021-12-20T02:30:03.534858Z 0 [ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock.
2021-12-20T02:30:03.534864Z 0 [ERROR] Unable to setup unix socket lock file.
2021-12-20T02:30:03.534867Z 0 [ERROR] Aborting

四 排除ERROR内容
rm -rf ./mysql.sock.lock

首先替换掉换行符前面的空格(不能是换行符后面的,否则有些文档的缩进会出现问题)。
CTRL+H 选择特殊格式中的段落标记
^p替换城^p(多次重复)

然后替换掉多余的换行符
^p^p替换城^p(多次重复)