CentOS release 6.6 安裝MySQL 5.6.15

MySQL 簡介

  • 安裝後目錄結構mysql

    • mysql.exe:客戶端c++

    • mysqld.exe:服務器web

    • my.ini:總配置文件sql

  • 在windows下開戶和關閉mysql服務器數據庫

    • net start mysqlbootstrap

    • net stop mysqlwindows

  • 登陸和退出mysql客戶端安全

    • mysql -u用戶名 -p密碼 -hIP服務器

    • exit或quit數據結構

 

                                             SQL

  • 解釋:結構化查詢語言

  • ISO:國際標準化組織

  • ISO定義了不少SQL標準,例如:SQL99

  • 各個數據庫廠商須要遵循這個標籤!但各個廠商也有本身的方言

  • SQL的分類

    • DDL:數據定義語言

    • DML:數據操做語言

    • DCL:數據控制語言

    • DQL(不在標準中):數據查詢語言

DDL:數據定義語言

  • 數據庫的操做

    • create database

    • show databases

    • use mydb1

    • alter database

    • drop database

 

  • 表的操做

    • create table

    • show tables

    • desc mytable1

    • drop table

    • alter table

      • add

      • modify

      • change

      • drop

      • rename to

DML:數據操做語言

  • 插入記錄

  • 修改記錄

  • 刪除記錄

    • delete

    • truncat

DCL:數據控制語言

  • 建立用戶

  • 受權

  • 撤消權限

  • 查看權限

  • 刪除用戶

DQL:數據查詢語言

  • 基本查詢

    • 查看整張表

      • select * from 表名

    • 列控制

      • 列運算:select sal * 1.5 from emp

      • 列運算:鏈接字符串:select concat(‘個人名稱是’, ename) from emp

      • 處理NULL值:select sal + IFNULL(comm, 0) from emp

      • select ename 姓名 from emp

      • 去除徹底重複的行:select distinct comm from emp

  • 條件查詢

    • 模糊查詢

      • 下劃線

      • 百分號

  • 排序

    • 降序:desc

    • 升序:asc

  • 聚合函數

    • 數量:count

    • 求最小值:min

    • 求最大值:max

    • 求和:sum

    • 求平均:avg

  • 分組

    • group by

    • having

    • limit

約束

  • 約束保證數據的完整性和一致性

  • 約束分爲表級約束和列級約束

    • 對一個數據列創建的約束,列級約束

    • 對多個數據列創建的約束,表級約束

  • 約束類型包括:

    • NOT NULL

    • PRIMARY KEY

    • UNIQUE KEY

    • DEFAULT

    • FOREIGN KEY

中文沒法插入解決辦法

  • dos 下不支持直接使用utf8;

  • set names gbk,再插入便可。

鏈接類型

  • 內鏈接

    • 顯示左表及右表符合鏈接條件的記錄

  • 左外鏈接

    • 顯示左表的所有記錄及右表符合鏈接條件的記錄

  • 右外鏈接

    • 顯示右表的所有記錄及左表符合鏈接條件的記錄

  • 自身鏈接

    • 同一個數據表對其自身進行鏈接

 

MySQL常見的擴展方式Scale Up、Scale Out。

MySQL數據庫的切分:垂直切分:分庫、水平切分:分表。

MySQL存儲引擎之InnoDB、MyISAM引擎。

數據庫定義了存儲信息的結構。以表的方式存儲信息。

索引:將表中的某一個或某些字段抽取出來,單獨將其組織一個獨特的數據結構中,相似一本書的目錄;

 

數據庫的概述

  • DBMS:關係型數據庫管理系統

    • 庫管+N個倉庫

  • 常見的數據庫管理系統

    • MySQL

    • Orcale

    • DB2

    • SQL Server

    • Sybase

經常使用存儲引擎介紹;

  • MyISAM :不支持事務;表級鎖,崩潰後不保證安全恢復
  • MyISAM :Aria:加強版,崩潰後能夠修復
  • InnoDB :XtraDB 支持 行級鎖,外鍵,熱備

MySQL屬於關係型數據庫,關係型數據庫以行和列的形式存儲數據,以便於用戶理解。這一系列的行和列被稱爲表,一組表組成了數據庫。用戶用查詢(Query)來檢索數據庫中的數據。一個Query是一個用於指定數據庫中行和列的SELECT語句

 

在數據庫的應用方面,通常又分爲兩種角色:

  • 一種是應用開發者,在公司裏通常被稱爲「服務器工程師」或「web開發工程師」
  • 一種是數據庫管理者,在公司通常被稱爲「DBA」(DataBase Administrator)或「運維;

數據庫的使用方面分爲三個層次

  1. 數據庫的基本使用
  2. 利用面向對象的思惟使用數據庫
  3. 在項目中應用分佈式數據庫

 

MySQL複製環境

MySQL複製種類  : 

一、標準異步複製

異步複製意味着事務徹底在本地環境中完成,而且不受複製從屬自己的影響。完成更改後,主服務器將使用數據修改或實際語句(基於行的複製或基於語句的複製之間的差別會在以後講)填充二進制日誌。此轉儲線程讀取二進制日誌並將其發送到從IO線程。從站使用其IO線程將其置於本身的預處理隊列(稱爲中繼日誌)中。從站使用SQL線程執行從站數據庫上的每一個更改。

二、半同步複製

半同步複製意味着從設備和主設備相互通訊以保證事務的正確傳輸。主設備僅填充binlog並繼續其會話,其中一個從設備確認事務已正確放置在從設備的中繼日誌中。

半同步複製可確保正確複製事務,但不保證明際發生從設備上的提交。

須要注意的是,半同步複製可確保主服務器等待繼續處理特定會話中的事務,直到至少有一個從服務器確認接收到事務(或達到超時)。這與異步複製不一樣,由於半同步容許額外的數據完整性。

請記住,半同步複製會影響性能,由於它須要等待來自從站的實際ACK的往返。

 

三、組複製

這是MySQL Community Edition 5.7中引入的新概念,而且在MySQL 5.7.17中進行了GA。這是一個用於虛擬同步複製的新插件。

每當在節點上執行事務時,插件都會嘗試與其餘節點達成共識,而後再將其返回給客戶端。 雖然與標準MySQL複製相比,該解決方案是徹底不一樣的概念,但它基於使用binlog生成和處理日誌事件。

如下是組複製的示例體系結構。

 

注意   :  

標準異步複製不是同步集羣。請記住,標準和半同步複製不保證環境服務於同一數據集。使用Percona XtraDB Cluster時,每一個服務器實際上須要分別處理每一個更改。若是不是,則從羣集中刪除受影響的節點。異步複製不具備此故障安全性,在不一致的狀況下,仍然能夠接受讀操做。

從理論上講,環境應具備可比性。可是,有許多參數會影響數據傳輸的效率和一致性。只要使用異步複製,就沒法保證事務正確發生。使用者能夠經過加強配置的持久性來避免這種狀況,但這會帶來性能損失。

使用pt - table - checksum工具驗證主服務器和從服務器的一致性 。

有複製就不須要備份了

 

MySQL的事務

請求<-->響應 的處理過程

多個操做被當作一個總體對待,要想看一個關係型管理數據庫系統是否支持事務就要看關係型數據庫系統是否知足ACID測試

  • ACID 事務的一個基本標準
    • A:原子性
    • C:一致性
    • I:隔離性
    • D:持久性

SQL語句對數據庫管理經常使用的兩種方式:

  • DDL:數據定義語言-主要是用在定義或改變表(TABLE)的結構,數據類型,表之間的連接和約束等初始化工做上,他們大多在創建表時使用,建立表的時候有問題看這裏
    • CREATE: 建立
    • ALTER:改變
    • DROP: 刪除
    • SHOW: 顯示
  • DML:數據操縱語言-這4條命令是用來對數據庫裏的數據進行操做的語言,修改表的時候有問題看這裏
    • INSERT: 添加
    • DELETE: 刪除
    • SELECT: 選擇
    • UPDATE: 修改

這裏通配符有兩個須要注意:

  • %:任意長度的任意字符;
  • _:任意單個字符;

MySQL與MariaDB

MariaDB屬於插件式存儲引擎(存儲引擎也稱爲「表類型」;):存儲管理器有多種實現版本,彼此間的功能和特性可能略有區別;用戶可根據須要靈活選擇;

MySQL優勢有:
1.綜合統一
2.高度非過程化
3.面向集合的操做方式
4.以一種語法結構提供多種使用方式
5.語言簡潔,易學易用

MySQL 安裝

本教程的系統平臺:CentOS release 6.6 (Final) 64位。

1、安裝編譯工具及庫文件

[root@localhost ~]# cd /usr/local/src
 

yum -y install gcc gcc-c++ make autoconf libtool-ltdl-devel gd-devel freetype-devel libxml2-devel libjpeg-devel libpng-devel openssl-devel curl-devel bison patch unzip libmcrypt-devel libmhash-devel ncurses-devel sudo bzip2 flex libaio-devel

2、 安裝cmake 編譯器

cmake 版本:cmake-3.1.1。

一、下載地址:http://www.cmake.org/files/v3.1/cmake-3.1.1.tar.gz

$ wget http://www.cmake.org/files/v3.1/cmake-3.1.1.tar.gz

mysql1

二、解壓安裝包

$ tar zxvf cmake-3.1.1.tar.gz

三、進入安裝包目錄

$ cd cmake-3.1.1

四、編譯安裝 

$ ./bootstrap
$ make && make install

3、安裝 MySQL

MySQL版本:mysql-5.6.15。

一、下載地址: http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz

$ wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz

mysql2

二、解壓安裝包

$ tar zxvf mysql-5.6.15.tar.gz

三、進入安裝包目錄

$ cd mysql-5.6.15

四、編譯安裝 

$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql/ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_INNODB_MEMCACHED=1 -DWITH_DEBUG=OFF -DWITH_ZLIB=bundled -DENABLED_LOCAL_INFILE=1 -DENABLED_PROFILING=ON -DMYSQL_MAINTAINER_MODE=OFF -DMYSQL_DATADIR=/usr/local/webserver/mysql/data -DMYSQL_TCP_PORT=3306
$ make && make install

五、查看mysql版本:

$ /usr/local/webserver/mysql/bin/mysql --version

到此,mysql安裝完成。

MySQL 配置

一、建立mysql運行使用的用戶mysql:

$ /usr/sbin/groupadd mysql
$ /usr/sbin/useradd -g mysql mysql

二、建立binlog和庫的存儲路徑並賦予mysql用戶權限

$ mkdir -p /usr/local/webserver/mysql/binlog /www/data_mysql
$ chown mysql.mysql /usr/local/webserver/mysql/binlog/ /www/data_mysql/

三、建立my.cnf配置文件

將/etc/my.cnf替換爲下面內容

$ cat /etc/my.cnf

[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
user = mysql
port = 3306
socket = /tmp/mysql.sock
basedir = /usr/local/webserver/mysql
datadir = /www/data_mysql
log-error = /usr/local/webserver/mysql/mysql_error.log
pid-file = /usr/local/webserver/mysql/mysql.pid
open_files_limit = 65535
back_log = 600
max_connections = 5000
max_connect_errors = 1000
table_open_cache = 1024
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 1M
join_buffer_size = 1M
thread_cache_size = 600
#thread_concurrency = 8
query_cache_size = 128M
query_cache_limit = 2M
query_cache_min_res_unit = 2k
default-storage-engine = MyISAM
default-tmp-storage-engine=MYISAM
thread_stack = 192K
transaction_isolation = READ-COMMITTED
tmp_table_size = 128M
max_heap_table_size = 128M
log-slave-updates
log-bin = /usr/local/webserver/mysql/binlog/binlog
binlog-do-db=oa_fb
binlog-ignore-db=mysql
binlog_cache_size = 4M
binlog_format = MIXED
max_binlog_cache_size = 8M
max_binlog_size = 1G
relay-log-index = /usr/local/webserver/mysql/relaylog/relaylog
relay-log-info-file = /usr/local/webserver/mysql/relaylog/relaylog
relay-log = /usr/local/webserver/mysql/relaylog/relaylog
expire_logs_days = 10
key_buffer_size = 256M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
interactive_timeout = 120
wait_timeout = 120
skip-name-resolve
#master-connect-retry = 10
slave-skip-errors = 1032,1062,126,1114,1146,1048,1396
#master-host = 192.168.1.2
#master-user = username
#master-password = password
#master-port = 3306
server-id = 1
loose-innodb-trx=0 
loose-innodb-locks=0 
loose-innodb-lock-waits=0 
loose-innodb-cmp=0 
loose-innodb-cmp-per-index=0
loose-innodb-cmp-per-index-reset=0
loose-innodb-cmp-reset=0 
loose-innodb-cmpmem=0 
loose-innodb-cmpmem-reset=0 
loose-innodb-buffer-page=0 
loose-innodb-buffer-page-lru=0 
loose-innodb-buffer-pool-stats=0 
loose-innodb-metrics=0 
loose-innodb-ft-default-stopword=0 
loose-innodb-ft-inserted=0 
loose-innodb-ft-deleted=0 
loose-innodb-ft-being-deleted=0 
loose-innodb-ft-config=0 
loose-innodb-ft-index-cache=0 
loose-innodb-ft-index-table=0 
loose-innodb-sys-tables=0 
loose-innodb-sys-tablestats=0 
loose-innodb-sys-indexes=0 
loose-innodb-sys-columns=0 
loose-innodb-sys-fields=0 
loose-innodb-sys-foreign=0 
loose-innodb-sys-foreign-cols=0

slow_query_log_file=/usr/local/webserver/mysql/mysql_slow.log
long_query_time = 1
[mysqldump]
quick
max_allowed_packet = 32M

四、初始化數據庫

$/usr/local/webserver/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf  --user=mysql

顯示以下信息:

Installing MySQL system tables...2015-01-26 20:18:51 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
OK

Filling help tables...2015-01-26 20:18:57 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
OK
...

五、建立開機啓動腳本

$ cd /usr/local/webserver/mysql/
$ cp support-files/mysql.server /etc/rc.d/init.d/mysqld 
$ chkconfig --add mysqld 
$ chkconfig --level 35 mysqld on

六、啓動mysql服務器

$ service mysqld start

mysql4

七、鏈接 MySQL

$ /usr/local/webserver/mysql/bin/mysql -u root -p

mysql5

修改MySQL用戶密碼

mysqladmin -u用戶名 -p舊密碼 password 新密碼

或進入mysql命令行

SET PASSWORD FOR '用戶名'@'主機' = PASSWORD(‘密碼');

建立新用戶並受權:

grant all privileges on *.* to 用戶名@'%' identified by '密碼' with grant option;

其餘命令

  • 啓動:service mysqld start
  • 中止:service mysqld stop
  • 重啓:service mysqld restart
  • 重載配置:service mysqld reload

 

啓動MySQL服務器程序,確認狀態

1)啓動MySQL服務程序

啓動服務並查看狀態:

[root@dbsvr1 pub]# service mysql start
Starting MySQL...                                     [肯定]
[root@dbsvr1 pub]# service mysql status
MySQL running (31724)                                 [肯定]

服務器進程爲mysqld,監聽的默認端口爲TCP 3306:

[root@dbsvr1 pub]# netstat -anpt | grep mysql
tcp        0      0 :::3306        :::*       LISTEN      31724/mysqld

2)查看MySQL服務器進程、運行用戶

提供鏈接服務的進程爲mysqld,由其父進程mysqld_safe啓動。

[root@dbsvr1 pub]# ps -elf | grep mysqld

4 S root     31619     1  0  80   0 -  2834 wait   15:14 pts/0    00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid file=/var/lib/mysql/dbsvr1.tarena.com.pid

4 S mysql    31724 31619  0  80   0 - 252496 poll_s 15:14 pts/0   00:00:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/dbsvr1.tarena.com.err --pid-file=/var/lib/mysql/dbsvr1.tarena.com.pid

數據庫的默認存放位置爲 /var/lib/mysql:

[root@dbsvr1 pub]# ls /var/lib/mysql/
auto.cnf               ibdata1      mysql               RPM_UPGRADE_HISTORY
dbsvr1.tarena.com.err  ib_logfile0  mysql.sock          RPM_UPGRADE_MARKER-LAST
dbsvr1.tarena.com.pid  ib_logfile1  performance_schema  test

 

參考連接  : 

百度百科 :https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_9326379813681396417%22%7D&n_type=1&p_from=4

相關文章
相關標籤/搜索