1. 程式人生 > 其它 >Mysql介紹-以及二進位制方式安裝

Mysql介紹-以及二進位制方式安裝

第一章 MySQL MySQL DBA工作內容

(1)運維DBA

初級:各版本、各平臺安裝搭建、升級
中級:體系結構原理、基礎管理(啟動關閉、初始化配置檔案管理、多實 例管理、使用者許可權管理、基本SQL(增刪改查))、日誌管理、備份與恢復、主從複製(構建、狀態監控)
高階:高可用(MGR、InnoDB Cluster)、高效能(優化)

(2)開發DBA

懂至少一門開發語言 :JAVA、Python
基本SQL語句深入學習(增刪改查)、資料庫結構設計(建模)
高階SQL:儲存過程、函式、觸發器、檢視、事件

(3)中級DBA要求

(1)MySQL 5.7 安裝部署(二進位制)
(2)MySQL升級步驟擴充套件
(3)MySQL5.7 體系結構原理
(4)MySQL基礎管理
(5)基礎SQL語句使用
(6)SQL高階應用
(7)Information_schema獲取元資料
(8)索引、執行計劃管理(基礎優化)
(9)儲存引擎
(10)日誌管理
(11)備份與恢復
(12)主從複製及架構演變
(13)傳統的高可用及讀寫分離(MHA&Atlas)
(14)傳統分散式架構設計與實現-擴充套件(Mycat--->DBLE,DRDS)
(15)MySQL 5.7 高可用及分散式架構-擴充套件(MGR,InnoDB Cluster)
(16)MySQL優化(安全、效能)
(17)MySQL 監控(zabbix、Open-falcon)

第二章: MySQL 介紹和安裝

1、什麼是資料?

資料:文字、圖片、視訊。。。人類認知的資料表現方式
計算機:二進位制、16進位制的機器語言
基於資料的重要性和複雜性的不同,我們可能有不同的管理方式。
哪些資料是適合儲存到資料庫的呢?
重要性比較高的
關係較複雜的資料

2、什麼是資料庫管理系統(DBMS)?

RDBMS: 關係型資料庫管理系統
比較適合於,安全級別要求高的資料以及關係較複雜的資料
NoSQL:非關係型資料庫管理系統
適合於高效能存取資料,一般是配合RDBMS進行使用的
針對大資料處理分析,分散式架構更加擅長

3、資料庫管理系統種類RDBMS :

MySQL 、Oracle、MSSQL(SQL Server)、PG

NoSQL:Not Only SQL
鍵-值(key-value):Redis, memcached
文件(document):Mongodb

5、MySQL二進位制安裝

5.1.建立軟體目錄:
[root@db01 ~]# mkdir -p /app/
上傳軟體到此目錄
5.2. 解壓並改名為mysql
[root@db01 app]# mv mysql-5.7.20-linux-glibc2.12-x86_64 mysql[root@db01 app]# ls -l /app/mysql/
total 36
drwxr-xr-x  2 root root   4096 Mar  4 14:55 bin
-rw-r--r--  1 7161 31415 17987 Sep 13  2017 COPYING
drwxr-xr-x  2 root root     55 Mar  4 14:55 docs
drwxr-xr-x  3 root root   4096 Mar  4 14:55 include
drwxr-xr-x  5 root root    229 Mar  4 14:55 lib
drwxr-xr-x  4 root root     30 Mar  4 14:55 man
-rw-r--r--  1 7161 31415  2478 Sep 13  2017 README
drwxr-xr-x 28 root root   4096 Mar  4 14:55 share
drwxr-xr-x  2 root root     90 Mar  4 14:55 support-files

修改環境變數:

vim /etc/profile
export PATH=/app/mysql/bin:$PATH
[root@db01 bin]# source /etc/profile
5.3. 建立mysql使用者和組(如果已有可忽略)
useradd mysql 
5.4. 建立相關目錄並修改許可權
 mkdir /data/mysql -p 
 chown -R mysql.mysql /app/*
 chown -R mysql.mysql /data/*
5.5 初始化資料(建庫)

方法一:初始化資料,初始化管理員的臨時密碼

mysqld --initialize  --user=mysql --basedir=/app/mysql --datadir=/data/mysql

2019-04-18T03:21:53.381108Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).2019-04-18T03:21:54.583415Z 0 [Warning] InnoDB: New log files created, LSN=457902019-04-18T03:21:54.697859Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.2019-04-18T03:21:54.760821Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 1daa0c57-6189-11e9-bc80-000c294234c8.2019-04-18T03:21:54.770856Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.2019-04-18T03:21:54.772016Z 1 [Note] A temporary password is generated for root@localhost: 9LN.fh_Ea#uU
報錯原因: Linux系統中缺少libaio-devel 軟體包
解決:
yum install -y libaio-devel
報錯原因:
在/data/mysql 存在檔案
解決:
\rm -rf /data/mysql/*

方法二 :初始化資料,初始化管理員的密碼為空


\rm -rf  /data/mysql/*[root@db01 ~]# mysqld --initialize-insecure  --user=mysql --basedir=/app/mysql --datadir=/data/mysql

2019-04-18T03:37:43.146018Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).2019-04-18T03:37:43.892132Z 0 [Warning] InnoDB: New log files created, LSN=457902019-04-18T03:37:43.970412Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.2019-04-18T03:37:44.029490Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 5378f3b3-618b-11e9-9164-000c294234c8.2019-04-18T03:37:44.041469Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.2019-04-18T03:37:44.042348Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.[root@db01 ~]# 
[root@db01 ~]# cd /data/mysql/[root@db01 mysql]# ll
total 110628-rw-r----- 1 mysql mysql       56 Apr 18 11:37 auto.cnf
-rw-r----- 1 mysql mysql      419 Apr 18 11:37 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 Apr 18 11:37 ibdata1
-rw-r----- 1 mysql mysql 50331648 Apr 18 11:37 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Apr 18 11:37 ib_logfile1
drwxr-x--- 2 mysql mysql     4096 Apr 18 11:37 mysql
drwxr-x--- 2 mysql mysql     8192 Apr 18 11:37 performance_schema
drwxr-x--- 2 mysql mysql     8192 Apr 18 11:37 sys
[root@db01 mysql]# 
5.6 書寫預設配置檔案
vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/app/mysql
datadir=/data/mysql
server_id=1
port=3306
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
prompt=mysql [\\d]> //資料庫名
5.7 配置啟動指令碼:
[root@db01 mysql]# cd /app/mysql/support-files
[root@db01 support-files]# ./mysql.server start
Starting MySQL.Logging to '/data/mysql/db01.err'.
 SUCCESS! 
cp mysql.server    /etc/init.d/mysqld
5.8 使用systemd管理
mysqlvim /etc/systemd/system/mysqld.service 
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
注意:將原來模式啟動mysqld先關閉,然後再用systemd管理。systemctl  start/stop/restart/status   mysqld
6. 安裝後的簡單管理
[root@db01 ~]# mysqladmin -uroot -p password 123
Enter password: 
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

5.6版本:
select user,password,host from mysql.user;
5.7 中使用者基本資訊
select user,authentication_string,host from mysql.user;
desc  mysql.user;
管理員密碼修改 mysqladmin -uroot -p password xx