MySQLデータベースの基盤---データベース管理と高可用性

序文

  • 情報爆発の時代にあって、大量のデータや情報が絶えず生み出されており、それらを安全かつ効果的に保存、検索、管理する方法が付随しています。データの効果的な保存、効率的なアクセス、便利な共有、およびセキュリティ制御は、情報化時代において解決すべき問題になっています。

1.データベースの紹介

1.1データベースを使用する必要性

  • データベースはデータを効率的かつ明確に保存できるため、人々はデータをより迅速かつ便利に管理できます。
  • データベースには次の特徴があります。
可以结构化存储大量的数据信息,方便用户进行有效的检索和访问;
可以有效地保持数据信息的一致性、完整性,降低数据冗余;
可以满足应用的共享与安全方面的要求
  • データベース技術は、コンピュータサイエンスのコア技術の1つであり、完全な理論的基盤を持っています。

1.2データベースの基本概念

1.2.1データ

  • シンボルレコード
  • 数字、テキスト、グラフィック、画像、音声、ファイルレコードなどを含みます。
  • 「レコード」の形式で統一された形式で保存する

1.2.2データシート

  • さまざまなレコードをまとめる
  • 特定のデータを保存するために使用されます

1.2.3データベース

  • テーブルのコレクションは、データを格納するためのウェアハウスです。
  • 特定の組織に保存されている関連データのコレクション

1.2.4データベース管理システム(DBMS)

  • データベースリソースへの効果的な編成、管理、アクセスを実現するシステムソフトウェアです。

1.2.5データベースシステム

  • これは、ハードウェア、OS、データベース、DBMS、アプリケーションソフトウェア、およびデータベースユーザーで構成されるマンマシンシステムです。
  • ユーザーはDBMSまたはアプリケーションを介してデータベースを操作できます

ここに画像の説明を挿入

1.3データベースシステム開発の歴史

1.3.1第1世代データベース

  • 1960年代以降、第1世代のデータベースシステムが登場しました。
  • 階層型モデルとネットワークモデルのデータベースシステムです
  • データの統合管理と共有を強力にサポートします

1.3.2第2世代データベース

  • 1970年代初頭、第2世代のデータベース-リレーショナルデータベースが登場し始めました
  • 1980年代初頭、IBMのリレーショナルデータベースシステムDB2が登場し、階層型およびメッシュモデルデータベースに徐々に取って代わり始め、業界の主流になりました。
  • これまでのところ、リレーショナルデータベースシステムは依然としてデータベースアプリケーションの主要な位置を占めています

1.3.3第3世代データベース

  • 1980年代以降、さまざまな分野に適応した新しいデータベースシステムが登場しています。
  • 強力な実用性と幅広い適応性を備えたオブジェクト指向データベースシステム
  • 1990年代後半、複数のデータベースシステムが共同でアプリケーションをサポートする状況が形成されました。
  • -いくつかの新しい要素が主流のデータベースシステムに追加されました。たとえば、Oracleでサポートされている「relation-object」データベースモデルです。

1.4現在の主流データベースの紹介

  • SQL Server(Microsoft Corporationの製品):
    Windowsオペレーティングシステム用。シンプルで使いやすい
    ここに画像の説明を挿入

  • オラクル(オラクル社の製品):
    すべての主流プラットフォーム向け。安全で、完全で、操作が複雑です。
    ここに画像の説明を挿入

  • DB2(IBMの製品):
    すべての主流プラットフォーム用;空の形をした、安全で完全な
    ここに画像の説明を挿入

  • MySQL(Oracleが買収):
    無料、オープンソース、サイズが小さい
    ここに画像の説明を挿入

1.5リレーショナルデータベース

1.5.1概要

  • リレーショナルデータベースシステムは、リレーショナルモデルに基づくデータベースシステムです。
  • リレーショナルモデルのデータ構造は、シンプルで理解しやすい2次元データテーブルを使用しています
  • リレーショナルモデルは、単純な「実体関連」(ER)図で表すことができます。
  • ERダイアグラムには、エンティティ(データオブジェクト)、関係、属性の3つの要素が含まれています。

ここに画像の説明を挿入

1.5.2各モジュールの概要

  • エンティティ:インスタンスとも呼ばれ、「銀行の顧客、銀行口座など」など、現実の世界の他のオブジェクトと区別できる「イベント」または「モノ」に対応します。
  • 属性:エンティティの特定の特性。エンティティは複数の属性を持つことができます。たとえば、銀行の顧客エンティティセットの各エンティティには、名前、住所、電話番号などの属性があります。
  • 連絡先:エンティティセット間の対応する関係は連絡先と呼ばれ、関係とも呼ばれます。たとえば、銀行の顧客と銀行口座の間には「貯蓄」関係があります
  • すべてのエンティティとその接続のコレクションは、リレーショナルデータベースを構成します

1.5.3リレーショナルデータベースの構造の概要

  • リレーショナルデータベースのストレージ構造は2次元テーブルです
  • 各2次元テーブルで
    は、各行はレコードと呼ばれ、オブジェクトの情報を説明するために使用され、
    各列はフィールドと呼ばれ、オブジェクトの属性を説明するために使用されます。

1.5.4リレーショナルデータベースの適用

  • リレーショナルデータベース:
    Oracle、MySQL
    SQLServer、Sybase
    Informix、アクセス
    DB2、FoxPRO

  • 適用例:
    12306ユーザー情報システム
    タオバオアカウントシステム
    チャイナユニコム携帯電話番号情報システム
    銀行ユーザーアカウントシステム
    ウェブサイトユーザー情報システム

1.6非リレーショナルデータベースの概要

  • 非リレーショナルデータベースはNoSQL(sQLだけでなく)とも呼ばれます
  • 保存されたデータはリレーショナルモデルに基づいておらず、固定のテーブル形式を必要としません
  • 非リレーショナルデータベースの利点:
    データベースは
    高い同時読み取りと書き込みが可能であり、大量のデータを効率的に格納およびアクセスできます。
    データベースは、高いスケーラビリティと高可用性を備えています。
  • 一般的に使用される非リレーショナルデータベース:Redis、mongoDBなど。

2.MySQLサービス基盤

2.1MySQLデータベースの概要

  • 人気のあるオープンソースのリレーショナルデータベース
  • Oracle製品
  • GPL契約に準拠し、無料で使用および変更できます
  • 特徴:
    優れたパフォーマンス、安定したサービス、
    オープンソース、著作権制限なし、低コスト
    、マルチスレッド、マルチユーザー、
    CIS(クライアント/サーバー)アーキテクチャに基づく、
    安全で信頼性の高い

2.2MySQLデータベースをコンパイルしてインストールする

2.2.1準備

  • MySQLコンポーネントパッケージを準備する必要があります
  • 他のデータベースがインストールされている場合は、最初にそれらをアンインストールします
yum -y remove 数据库名

2.2.2ソースコードのコンパイルとインストール

  • 関連ツールをインストールする
yum -y install ncurses ncurses-devel cmake
		'//ncurses-devel是字符终端下屏幕控制的基本库'
		'//cmake跨平台编译安装工具'
  • 実行中のユーザーを作成する
useradd -s /sbin/nologin mysql	'//创建不可登录的用户'
  • 開梱
tar zxvf mysql-boost-5.7.20.tar.gz	'//解包'
cd mysql-5.7.20/
  • cmakeのインストールと構成
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
  • コンパイルしてインストール
make && make install		'//编译安装'

2.3インストール後のその他の調整

  • データベースディレクトリに権限を設定する
cd
chown -R mysql:mysql /usr/local/mysql/		'//设置属主和数组'
  • 構成ファイル/etc/my.cnfを作成します
rm -rf /etc/my.cnf		'//如果原来的/etc/文件夹下有 my.cnf 文件可以删除'

vi /etc/my.cnf
[client]
port = 3306
default-character-set = utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set = utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server = utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
  • 環境変数を設定する
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile		'//使配置立即生效'
  • データベースを初期化します
mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

2.4システムサービスを追加して開始する

cd /usr/local/mysql/
cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system
systemctl daemon-reload	 	'//守护进程重新加载'
systemctl start mysqld
systemctl enable mysqld
netstat -anpt | grep 3306		'//查看端口信息'

2.5MySQLデータベースへのアクセス

  • MySQLサーバーにログインします
mysql -uroot -p		'//初始化密码,第一次以空密码登录'

ここに画像の説明を挿入

  • 設定したログインパスワードを変更することもできます
mysqladmin -uroot -p password 'abc123'  //给root账号设置密码为abc123
mysql -uroot -pabc123	//以"abc123"为密码登录数据库

ここに画像の説明を挿入

  • MySQL操作ステートメントを実行します
mysql> show databases;	//查看当前mysql服务器中包含的库
mysql> show tables;  //查看当前所在库中包含的表

ここに画像の説明を挿入

  • 「mysql>」オペレーティング環境を終了します
mysql> exit
Bye
[root@localhost ~]#

3.基本的なデータベース操作コマンド

  • SQL言語
Structured Query Language的缩写,即结构化查询语言
关系型数据库的标准语言
用于维护管理数据库:包括数据查询、数据更新、访问控制、对象管理等功能

3.1データベースの分類

3.1.1データの分類

  • 構造化データ
    2次元論理テーブルで表現できるデータは構造化データです
  • 非構造化データ
    2次元論理テーブルの使用に不便なデータは非構造化データです

3.1.2データベースの分類

  • リレーショナルデータベースリレーショナルデータベースに
    格納されているデータはテーブル形式であるため、データテーブルの行と列に格納されます。データテーブルを相互に関連付けて格納できるため、データの抽出が容易になります。
  • 非リレーショナルデータベース非リレーショナルデータベースのデータは
    、テーブル形式でのアクセスには適していませんが、大きなブロックにまとめられ、通常はデータセットに格納されます。これは、ドキュメント、画像、その他のデータの格納に便利です。
  • mysqlデータベースで一般的に使用されるステートメントの分類
DDL (Data Definition Language,数据定义语言)﹔
用来建立数据库、数据库对象和定义字段,如 CREATE、ALTER、DROP。

DML (Data Manipulation Language,数据操纵语言)∶
用来插入、删除和修改数据库中的数据,如 INSERT、UPDATE、DELETE。

DQL (Data Query Language,数据查询语言):用来查询数据库中的数据,如 SELECT。

DCL (Data Control Language,数据控制语言):
用来控制数据库组件的存取许可、存取权限等,如 COMMIT、ROLLBACK、GRANT、REVOKE。

3.2MySQLの一般的な管理操作

  • データベース構造を表示する
  • ライブラリとテーブルの作成と削除
  • 管理テーブルレコード

3.2.1データベース構造を表示する

查看数据库列表信息的命令

show databases;
查看数据库中的数据表信息

use 数据库名;
show tables;
显示数据表的结构(字段)

describe [数据库名.]表名;
或
use 数据库名;
describe 表名;

3.2.2ライブラリとテーブルの作成と削除

  • 新しいライブラリを作成する
create database 数据库名;

刚创建的数据库是空的,其中不包含任何表,在/usr/local/mysql/data目录下会自动生成一个与新建的库名相同的空文件夹
  • 新しいテーブルを作成する
create table 表名(字段 1 名称 类型,字段 1 名称 类型,...,PRIMARY KEY(主键名))

创建表之前,应先明确数据表格的结构、各字段的名称和类型等信息。
  • データテーブルを削除する
DROP TABLE 库名.表名

おすすめ

転載: blog.csdn.net/weixin_42449832/article/details/111563737