真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql怎么存儲數(shù)據(jù),mysql怎么存儲的

mysql中怎么存儲數(shù)組

mysql中不能存儲數(shù)組,但是可以通過傳入的字符串截取成多個字符然后傳入到臨時表中,然后使用游標(biāo)或者直接關(guān)聯(lián)表過濾數(shù)據(jù)來儲存。

公司主營業(yè)務(wù):做網(wǎng)站、成都網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出邯鄲免費做網(wǎng)站回饋大家。

具體步驟如下所示:

1、創(chuàng)建數(shù)據(jù)庫,就如下圖所示一樣。

2、根據(jù)學(xué)生編號批量刪除學(xué)生信息,如下圖所示。

3、聲明初始化變量,看到以下畫面。

4、獲取傳入?yún)?shù)數(shù)組長度,創(chuàng)建臨時表,所輸入的如下圖所示。

5、截取數(shù)組字符串并依次存入到臨時表中供后面業(yè)務(wù)使用。

怎樣將數(shù)據(jù)存入mysql數(shù)據(jù)庫

MySQL命令行導(dǎo)出數(shù)據(jù)庫:

1,進(jìn)入MySQL目錄下的bin文件夾:cd

MySQL中到bin文件夾的目錄

如我輸入的命令行:cd

C:\Program

Files\MySQL\MySQL

Server

4.1\bin

(或者直接將windows的環(huán)境變量path中添加該目錄)

2,導(dǎo)出數(shù)據(jù)庫:mysqldump

-u

用戶名

-p

數(shù)據(jù)庫名

導(dǎo)出的文件名

如我輸入的命令行:mysqldump

-u

root

-p

news

news.sql

(輸入后會讓你輸入進(jìn)入MySQL的密碼)

(如果導(dǎo)出單張表的話在數(shù)據(jù)庫名后面輸入表名即可)

3、會看到文件news.sql自動生成到bin文件下

命令行導(dǎo)入數(shù)據(jù)庫:

1,將要導(dǎo)入的.sql文件移至bin文件下,這樣的路徑比較方便

2,同上面導(dǎo)出的第1步

3,進(jìn)入MySQL:mysql

-u

用戶名

-p

如我輸入的命令行:mysql

-u

root

-p

(輸入同樣后會讓你輸入MySQL的密碼)

4,在MySQL-Front中新建你要建的數(shù)據(jù)庫,這時是空數(shù)據(jù)庫,如新建一個名為news的目標(biāo)數(shù)據(jù)庫

5,輸入:mysqluse

目標(biāo)數(shù)據(jù)庫名

如我輸入的命令行:mysqluse

news;

6,導(dǎo)入文件:mysqlsource

導(dǎo)入的文件名;

如我輸入的命令行:mysqlsource

news.sql;

mysql是怎么做數(shù)據(jù)存儲的

1,每個數(shù)據(jù)庫對應(yīng)一個文件夾,文件夾名和庫名相同;

2,(單獨的表空間中) 每張表對應(yīng)幾個文件,文件名和表名相同,innodb引擎中對應(yīng)兩個文件,后綴名為:frm、ibd;

frm文件:存儲的是表結(jié)構(gòu)信息。

ibd文件:存儲的是表里的數(shù)據(jù)、索引等。

k8s中的Mysql數(shù)據(jù)庫持久化存儲

一、配置:

環(huán)境:

CentOS7?

VMware

筆者配置了四臺虛擬機:

K8S-Master節(jié)點: 3GB內(nèi)存? ?2核CPU ? 20GB硬盤空間

K8S-node1節(jié)點:? 2GB內(nèi)存? ?2核CPU ? 30GB硬盤空間

K8S-node2節(jié)點:? 2GB內(nèi)存? ?2核CPU ? 30GB硬盤空間

鏡像倉庫節(jié)點:? ? ? 2GB內(nèi)存? ?2核CPU ? 50GB硬盤空間

二、節(jié)點規(guī)劃:

使用三臺虛擬機搭建K8S集群,使用一臺虛擬機搭建鏡像倉庫。

每臺虛擬機配置兩塊網(wǎng)卡,其中一塊為“NAT模式”,用于拉取鏡像等功能。

另外一塊網(wǎng)卡為“僅主機模式”,用于集群節(jié)點間的通信。歸劃如下:

K8s-master節(jié)點:

僅主機模式:10.10.10.200

NAT模式: ?192.168.200.130

K8S-node1節(jié)點:

僅主機模式:10.10.10.201

NAT模式: ?192.168.200.131

K8S-node2節(jié)點:

僅主機模式:10.10.10.202

NAT模式: ?192.168.200.132

鏡像倉庫節(jié)點:

僅主機模式:10.10.10.101

NAT模式: ?192.168.200.150

三、版本信息

Linux內(nèi)核版本:

Linux version 3.10.0-862.el7.x86_64 (builder@kbuilder.dev.centos.org)

(gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) )

#1 SMP Fri Apr 20 16:44:24 UTC 2018

K8s集群版本為1.15.0版本:

四、基于StatefulSet與PV/PVC的MySql持久化存儲實驗

1. 在每個節(jié)點安裝nfs服務(wù)

在“鏡像倉庫”節(jié)點,執(zhí)行以下命令:

yum install -y nfs-common nfs-utils rpcbind

在k8s集群,執(zhí)行以下命令:

yum install -y nfs-utils rpcbind

2. 在“鏡像倉庫”節(jié)點下,配置nfs服務(wù)器

mkdir /nfs_mysql

Chmod?777?/nfs_mysql/

(在測試環(huán)境中,為了不考慮用戶屬性,暫時賦予777權(quán)限,但在生產(chǎn)環(huán)境不推薦這樣做)

Chown?nfsnobody?/nfs_mysql/

echo “/nfs_mysql *(rw,no_root_squash,no_all_squash,sync)”? /etc/exports

cat /etc/exports

/nfs_mysql?*(rw,no_root_squash,no_all_squash,sync)

systemctl start rpcbind

systemctl start nfs

3. 測試nfs服務(wù)是否可用

mkdir /test

showmount -e 10.10.10.101

可見/nfs_mysql *已暴露于共享目錄,接下來測試掛載是否可用:

在master節(jié)點下執(zhí)行:

mount -t nfs 10.10.10.101:/nfs_mysql /test/

echo "hello-world"/test/1.txt

在鏡像倉庫節(jié)點下查看1.txt是否存在,若存在則掛載成功:

可見nfs服務(wù)可以正常使用,接下來刪除test目錄和1.txt

在鏡像倉庫下:

[root@hub nfs_mysql]# rm -f 1.txt

在Master節(jié)點下:

[root@k8s-master ~]# umount /test/

[root@k8s-master ~]# rm -rf /test/

同理,依照以上步驟同時創(chuàng)建:(提供多個mysql副本進(jìn)行掛載)

nfs_mysql1

nfs_mysql2

完成后需要重啟nfs服務(wù)

systemctl restart rpcbind

systemctl restart nfs

最終效果:

4. 將nfs封裝成pv

創(chuàng)建mysql_test文件夾,將yaml文件統(tǒng)一保存在此目錄下

mkdir mysql_test

cd mysql_test

vim mysql-pv.yml

mysql-pv.yml配置如下:

apiVersion: v1

kind: PersistentVolume

metadata:

name: mysql-pv

spec:

capacity:

storage: 5Gi

accessModes:

- ?ReadWriteOnce

persistentVolumeReclaimPolicy: Retain

storageClassName: nfs

nfs:

path: /nfs_mysql

server: 10.10.10.101

---

apiVersion: v1

kind: PersistentVolume

metadata:

name: mysql-pv1

spec:

capacity:

storage: 5Gi

accessModes:

- ?ReadWriteOnce

persistentVolumeReclaimPolicy: Retain

storageClassName: nfs

nfs:

path: /nfs_mysql1

server: 10.10.10.101

---

apiVersion: v1

kind: PersistentVolume

metadata:

name: mysql-pv2

spec:

capacity:

storage: 5Gi

accessModes:

- ?ReadWriteOnce

persistentVolumeReclaimPolicy: Retain

storageClassName: nfs

nfs:

path: /nfs_mysql2

server: 10.10.10.101

注意:

在k8s集群15版本中recycle回收策略已被刪除,只能用retain策略或者Delete策略。這里我們使用 persistentVolumeReclaimPolicy: Retain

執(zhí)行命令:

kubectl create -f mysql-pv.yml

kubectl get pv

如圖所示,即為Pv創(chuàng)建成功。

5. 部署MySQL,在mysql_test目錄下編寫mysql.yml,配置文件如下

apiVersion: v1

kind: Service

metadata:

name: mysql

labels:

app: mysql

spec:

ports:

- port: 3306

name: mysql

clusterIP: None

selector:

app: mysql

---

apiVersion: apps/v1

kind: StatefulSet

metadata:

name: mysql

spec:

selector:

matchLabels:

app: mysql

serviceName: "mysql"

replicas: 3

template:

metadata:

labels:

app: mysql

spec:

containers:

- name: mysql

image: mysql:5.6

env:

- name: MYSQL_ROOT_PASSWORD

value: password

ports:

- containerPort: 3306

name: mysql

volumeMounts:

- name: mysql-persistent-storage

mountPath: /var/lib/mysql

volumeClaimTemplates:

- metadata:

name: mysql-persistent-storage

spec:

accessModes: ["ReadWriteOnce"]

storageClassName: "nfs"

resources:

requests:

storage: 1Gi ?

執(zhí)行以下命令,部署mysql服務(wù):

kubectl create -f mysql.yml

如圖可知,mysql按StatefulSet依次創(chuàng)建了mysql-0 mysql-1 mysql-2

查看各個Pod部在哪個節(jié)點:

6. 通過創(chuàng)建臨時容器,使用MySQL客戶端發(fā)送測試請求給MySQL master節(jié)點

注意:

主機名為mysql-0.mysql;跨命名空間的話,主機名請使用mysql-0.mysql. [NAMESPACE_NAME].如果沒有指定命名空間,默認(rèn)為default,即 mysql-0.mysql. default。

這里筆者打算關(guān)閉node2節(jié)點來模擬node2宕機,來測試是否實現(xiàn)數(shù)據(jù)的持久化存儲,

所以我們向node2上的mysql1寫入數(shù)據(jù)。

執(zhí)行以下命令,訪問mysql1:

kubectl run mysql-client --image=mysql:5.6 -it --rm --restart=Never -- mysql -h mysql-1.mysql.default -p?password

創(chuàng)建數(shù)據(jù)庫demo,并向messages表中寫入hello-world

CREATE DATABASE demo;?

CREATE TABLE demo.messages (message VARCHAR(250));?

INSERT INTO demo.messages VALUES ('hello-world');

如圖所示

接下來我們來關(guān)閉k8s-node2虛擬機,模擬宕機

查看nodes的運行狀態(tài),可知node2的狀態(tài)已轉(zhuǎn)變?yōu)镹otReady

一段時間后,k8s將Pod MySql -1遷移到節(jié)點k8s-node1

由于時間過長,筆者把三個Pod都刪除重啟后,驗證數(shù)據(jù):

MySQL服務(wù)恢復(fù),數(shù)據(jù)完好無損!

MySQL 數(shù)據(jù)庫存儲類型

數(shù)值類型包含: int tinyint bigint float decimal

int 大整型(占 4 個字節(jié)的存儲空間)

tinyint 微小整型(占 1 個字節(jié)的存儲空間)

bigint 極大整型(占 8 個字節(jié)的存儲空間)

float 占4個字節(jié),最多顯示7個有效位。常用于成績。

float(5,2)取值范圍:

decimal 最多可以顯示 28 個有效位

存儲空間計算:整數(shù)部分和小數(shù)部分分開存儲,將 9 的倍數(shù)包裝成 4 個字節(jié),余數(shù)占用的字節(jié)數(shù)如下:

decimal 的整數(shù)位和小數(shù)位模9的余數(shù)和字節(jié)對照表

例如: decimal(19,9)

整數(shù)部分:

小數(shù)部分:

char 定長:當(dāng)列中存儲的字符串達(dá)不到最大長度時,使用空格進(jìn)行補足。

varchar 變長

char 浪費存儲空間,但性能高。 varchar 節(jié)約存儲空間,但存儲性能低。

text / longtext(4G)

數(shù)值類型寬度為顯示寬度,和占用存儲空間大小無關(guān);字符類型的寬度,超過則無法存儲:

對于枚舉類型的字段,字段值只能在列舉的范圍內(nèi)選擇。

日期時間類型: date time datetime timestamp

date 日期:

time 時間:

datetime 日期時間:

timestamp 日期時間:

日期時間函數(shù): NOW() CURDATE() CURTIME()

NOW() 返回服務(wù)器當(dāng)前的時間:

CURDATE() 返回當(dāng)前日期:

CURTIME() 返回當(dāng)前時間:

插入日期時間:

語法格式:

示例:

查詢1天以內(nèi)的記錄:

查詢2年前至今年的記錄:

五、MYSQL存儲過程和函數(shù)

? create procedure用來創(chuàng)建 存儲過程 ,create function用來創(chuàng)建 函數(shù)

? Delimiter命令是改變語句的結(jié)束符 ,MySQL默認(rèn)的結(jié)束符為;號,由于procedure和function中的;號并不代表創(chuàng)建的結(jié)束,所以要替換成另外的結(jié)束符以便表示創(chuàng)建的結(jié)束

? rontine_body子句可以包含一個簡單的SQL語句,也可以包含多個SQL語句, 通過begin…end將這多個SQL語句 包含在一起

? MySQL存儲過程和函數(shù)中也可以包含類似create和drop等DDL語句

? comment子句用來寫入對存儲過程和函數(shù)的注釋

? Language子句用來表示此存儲過程和函數(shù)的創(chuàng)建語言

? 存儲過程和函數(shù)被標(biāo)注為deterministic表明當(dāng)輸入相同的參數(shù)是會返回相同的結(jié)果,反之如果是not deterministic則表示相同參數(shù)不會是相同結(jié)果,默認(rèn)是not deterministic

? 相關(guān)屬性短語只有咨詢含義,并不是強制性的約束

? Drop procedure/function語句用來 刪除指定名稱的存儲過程或函數(shù)

? Begin…end語句通常出現(xiàn)在存儲過程、函數(shù)和觸發(fā)器中,其中 可以包含一個或多個語句 ,每個語句用;號隔開

? 標(biāo)簽label可以加在begin…end語句以及l(fā)oop, repeat和while語句

? 語句中通過iterate和leave來控制流程,iterate表示返回指定標(biāo)簽位置,leave表示跳出標(biāo)簽

? Declare語句通常用來聲明本地變量、游標(biāo)、條件或者h(yuǎn)andler

? Declare語句只允許出現(xiàn)在begin … end語句中而且必須出現(xiàn)在第一行

? Declare的順序也有要求,通常是先聲明本地變量,再是游標(biāo),然后是條件和handler

? 本地變量可以通過declare語句進(jìn)行聲明

? 聲明后的變量可以通過select … into var_list進(jìn)行賦值,或者通過set語句賦值,或者通過定義游標(biāo)并使用fetch … into var_list賦值

? 通過declare聲明變量方法:

? MySQL支持if,case,iterate,leave,loop,while,repeat語句作為存儲過程和函數(shù)中的 流程控制語句 ,另外return語句也是函數(shù)中的特定流程控制語句

? Case語句在存儲過程或函數(shù)中表明了 復(fù)雜的條件選擇語句

? IF語句在存儲過程或函數(shù)中表明了 基礎(chǔ)的條件選擇語句

其中在 function 里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我們開啟了 bin-log, 我們就必須為我們的 function 指定一個參數(shù)。

在 MySQL 中創(chuàng)建函數(shù)時出現(xiàn)這種錯誤的解決方法:

set global log_bin_trust_function_creators=TRUE;

? Iterate語句 僅出現(xiàn)在loop,repeat,while循環(huán)語句中,其含義表示重新開始此循環(huán)

? Leave語句表明 退出指定標(biāo)簽的流程控制語句塊

? 通常會用在begin…end,以及l(fā)oop,repeat,while的循環(huán)語句中

? Loop語句是存儲過程或函數(shù)中表達(dá) 循環(huán)執(zhí)行 的一種方式

? repeat語句是存儲過程或函數(shù)中表達(dá) 循環(huán)執(zhí)行 的一種方式

? while語句是存儲過程或函數(shù)中表達(dá) 循環(huán)執(zhí)行 的一種方式

? Return語句用在 函數(shù)中,用來終結(jié)函數(shù)的執(zhí)行并將指定值返回給調(diào)用者

? Cursor游標(biāo)用來 聲明一個數(shù)據(jù)集

? 游標(biāo)的聲明必須在變量和條件聲明之后,在handler聲明之前

? Cursor close語句用來 關(guān)閉之前打開的游標(biāo)

? Cursor declare語句用來聲明一個游標(biāo)和指定游標(biāo)對應(yīng)的數(shù)據(jù)集合, 通常數(shù)據(jù)集合是一個select語句

? Cursor fetch語句用來獲取游標(biāo)指定數(shù)據(jù)集的 下一行數(shù)據(jù) 并將各個字段值賦予后面的變量

? Open cursor語句用來打開一個之前已經(jīng) 聲明好的游標(biāo)

? Declare condition語句命名 特定的錯誤條件 ,而該特定錯誤可以在declare…h(huán)andler中指定 處理方法

? 比如在MySQL中1051error code表示的是unknown table的錯誤,如果要對這

個錯誤做特殊處理,可以用三種方法:

? Declare handler語句用來聲明一個handler來處理一個或多個特殊條件,當(dāng)其中的某個條件滿足時則觸發(fā)其中的statement語句執(zhí)行

? Statement可以是一個簡單SQL語句,也可以是begin…end組成的多個語句

? Handler_action子句聲明當(dāng)執(zhí)行完statement語句之后應(yīng)該怎么辦

Condition_value的值有以下幾種:

? 當(dāng)condition發(fā)生但沒有聲明handler時,則存儲過程和函數(shù)依照如下規(guī)則處理

? create trigger語句用來創(chuàng)建一個觸發(fā)器,觸發(fā)器的作用是當(dāng)表上有對應(yīng)SQL語句發(fā)生時,則觸發(fā)執(zhí)行

? 觸發(fā)器創(chuàng)建時需要 指定對應(yīng)的表名 tbl_name

? Definer關(guān)鍵詞用來指定trigger的安全環(huán)境

? Trigger_time指定觸發(fā)器的執(zhí)行時間,BEFORE和AFTER指定觸發(fā)器在表中的 每行數(shù)據(jù)修改前或者后 執(zhí)行

? Trigger_event指定觸發(fā)該觸發(fā)器的具體 事件

? INSERT當(dāng)新的一行數(shù)據(jù)插入表中時觸發(fā),比如通過執(zhí)行insert,load data,replace語句插入新數(shù)據(jù)

? UPDATE當(dāng)表的一行數(shù)據(jù)被修改時觸發(fā),比如執(zhí)行update語句時

? DELETE當(dāng)表的一行數(shù)據(jù)被刪除時觸發(fā),比如執(zhí)行delete,replace語句時

? 當(dāng)執(zhí)行insert into … on duplicate key update語句時,當(dāng)碰到重復(fù)行執(zhí)行update時,則觸發(fā)update下的觸發(fā)器

? 從5.7.2版本開始,可以創(chuàng)建具有相同trigger_time和trigger_event的同一個表上的多個觸發(fā)器,默認(rèn)情況下按照創(chuàng)建的時間依次執(zhí)行,通過 指定FOLLOWS/PRECEDES改變執(zhí)行順序 ,即FOLLOWS時表示新創(chuàng)建的觸發(fā)器后執(zhí)行,PRECEDES則表示新觸發(fā)器先執(zhí)行

? Trigger_body表示觸發(fā)器觸發(fā)之后要執(zhí)行的一個或多個語句,在內(nèi)部可以引用涉及表的字段, OLD.col_name表示行數(shù)據(jù)被修改或刪除之前的字段數(shù)據(jù),NEW.col_name表示行數(shù)據(jù)被插入或修改之后的字段數(shù)據(jù)

? Drop trigger語句用來 刪除一個觸發(fā)器

? If exists短語用來避免刪除不存在的觸發(fā)器時引發(fā)報錯

? 當(dāng)你執(zhí)行drop table時,表上的觸發(fā)器也被drop掉了


分享名稱:mysql怎么存儲數(shù)據(jù),mysql怎么存儲的
網(wǎng)址分享:http://weahome.cn/article/hdgcds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部