安裝後目錄結構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
MySQL屬於關係型數據庫,關係型數據庫以行和列的形式存儲數據,以便於用戶理解。這一系列的行和列被稱爲表,一組表組成了數據庫。用戶用查詢(Query)來檢索數據庫中的數據。一個Query是一個用於指定數據庫中行和列的SELECT語句。
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工具驗證主服務器和從服務器的一致性 。
有複製就不須要備份了
請求<-->響應 的處理過程
多個操做被當作一個總體對待,要想看一個關係型管理數據庫系統是否支持事務就要看關係型數據庫系統是否知足ACID測試
MariaDB屬於插件式存儲引擎(存儲引擎也稱爲「表類型」;):存儲管理器有多種實現版本,彼此間的功能和特性可能略有區別;用戶可根據須要靈活選擇;
MySQL優勢有: 1.綜合統一 2.高度非過程化 3.面向集合的操做方式 4.以一種語法結構提供多種使用方式 5.語言簡潔,易學易用
本教程的系統平臺:CentOS release 6.6 (Final) 64位。
[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
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
二、解壓安裝包
$ tar zxvf cmake-3.1.1.tar.gz
三、進入安裝包目錄
$ cd cmake-3.1.1
四、編譯安裝
$ ./bootstrap $ make && make install
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
二、解壓安裝包
$ 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:
$ /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
七、鏈接 MySQL
$ /usr/local/webserver/mysql/bin/mysql -u root -p
mysqladmin -u用戶名 -p舊密碼 password 新密碼
或進入mysql命令行
SET PASSWORD FOR '用戶名'@'主機' = PASSWORD(‘密碼');
建立新用戶並受權:
grant all privileges on *.* to 用戶名@'%' identified by '密碼' with grant option;
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