最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

數(shù)據(jù)庫(kù)高可用MHA和PXC集群搭建 存儲(chǔ)引擎

2023-02-18 13:13 作者:bili_39183997178  | 我要投稿

?

??? MHA軟件介紹

MHA(Master High Availability)

由日本DeNA公司youshimaton開(kāi)發(fā)

是一套優(yōu)秀的實(shí)現(xiàn)MySQL高可用的解決方案

數(shù)據(jù)庫(kù)的自動(dòng)故障切換操作能做到在0~30秒之內(nèi)完成

MHA能確保在故障切換過(guò)程中最大限度保證數(shù)據(jù)的一致性,以達(dá)到真正意義上的高可用

?

MHA集群缺點(diǎn)總結(jié):

??? ??? 必須要有vip地址

? ? ??宕機(jī)的主服務(wù)器需要手動(dòng)添加到集群里,還需要手動(dòng)同步宕機(jī)期間的數(shù)據(jù)

? ? ??管理服務(wù)發(fā)現(xiàn)主服務(wù)器宕機(jī)后,會(huì)調(diào)用故障切換腳本,

?????? 把vip地址部署在新的主數(shù)據(jù)庫(kù)服務(wù)器上。管理服務(wù)會(huì)

?????? 自動(dòng)停止,需要手動(dòng)啟動(dòng)管理服務(wù)器,才能監(jiān)視新的主數(shù)據(jù)服務(wù)器

? ? ? ?故障切換期間會(huì)有數(shù)據(jù)丟失的情況

軟件有2部分組成

???????? 1 管理端軟件(管理節(jié)點(diǎn)) : 安裝管理集群主機(jī)上的軟件

???????? 2 數(shù)據(jù)端軟件(數(shù)據(jù)節(jié)點(diǎn)) : 安裝在數(shù)據(jù)庫(kù)服務(wù)器上的軟件

MHA集群的工作過(guò)程

???? 由Manager定時(shí)探測(cè)集群中的master節(jié)點(diǎn)

???? 當(dāng)master故障時(shí),Manager自動(dòng)將擁有最新數(shù)據(jù)的slave提升為新的master

???? (如果有多個(gè)從的話,剩下的從會(huì)自動(dòng)更新為新主服務(wù)器的從主機(jī))

?配置MHA集群,具體步驟如下:

?????? 第一步:集群環(huán)境準(zhǔn)備 (在3臺(tái)數(shù)據(jù)庫(kù)服務(wù)器都要做的配置)

????????????? 1)公共配置(3臺(tái)數(shù)據(jù)庫(kù)服務(wù)器都要配置)

???????????????????? #啟用binlog日志?

???????????????????? #開(kāi)啟半同步復(fù)制模式

???????????????????? #禁止刪除本機(jī)的中繼日志文件

???????????????????? #重啟數(shù)據(jù)庫(kù)服務(wù)

???????????????????? #添加從服務(wù)器拷貝sql命令時(shí)連接使用的用戶

三臺(tái)公共步驟

vim /etc/my.cnf?????????

[mysqld]

plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"

rpl_semi_sync_master_enabled=1

rpl_semi_sync_slave_enabled=1

relay_log_purge=0

server_id=51

log_bin=master51

:wq

[root@host51 ~]# mysql -uroot -p123qqq...A

mysql> grant replication slave on *.* to repluser@"%" Identified by "123qqq...A";

mysql> exit;

2)配置ssh免密登錄

????????????????? ?2.1 所有數(shù)據(jù)庫(kù)服務(wù)器之間可以彼此免密登錄

3)配置MySQL 一主多從 同步結(jié)構(gòu)

? ? ? ? ? ? ? ?#配置主數(shù)據(jù)庫(kù)服務(wù)器?

???????????????????????????? 1 啟用binlog日志? (公共配置已經(jīng)配置了)

???????????????????????????? 2 用戶授權(quán)(公共配置已經(jīng)配置了)

???????????????????????????? 3 查看日志信息

[root@host51 ~]# mysql -uroot -p123qqq...A -e 'show master status'

#配置從數(shù)據(jù)庫(kù)服務(wù)器 192.168.4.52

???????????????????????????? 1 指定server_id? 并重啟數(shù)據(jù)庫(kù)服務(wù) (公共配置已經(jīng)做了)

???????????????????????????? 2 確保數(shù)據(jù)一致(如果一樣就不用做了)

???????????????????????????? 3 指定主服務(wù)器信息

[root@host52 ~]# mysql -uroot -p123qqq...A

mysql> change master to? master_host="192.168.4.51",master_user="repluser",

master_password="123qqq...A",master_log_file="master51.000001",master_log_pos=441;

? ? ? ? ? ? ? ?4 啟動(dòng)slave進(jìn)程

?MySQL>start slave;

? ? ? ? ? ? ? ? ? ?? ?5 查看狀態(tài) (IO線程和 SQL線程都是yes狀態(tài))

mysql> show slave status \G

#配置從數(shù)據(jù)庫(kù)服務(wù)器 192.168.4.53

???????????????????????????? 1 指定server_id? 并重啟數(shù)據(jù)庫(kù)服務(wù)(公共配置已經(jīng)做了)

???????????????????????????? 2 確保數(shù)據(jù)一致(如果一樣就不用做了)

???????????????????????????? 3 指定主服務(wù)器信息

[root@host53 ~]# mysql -uroot -p123qqq...A

mysql> change master to? master_host="192.168.4.51",master_user="repluser",

master_password="123qqq...A",master_log_file="master51.000001",master_log_pos=441;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4 啟動(dòng)slave進(jìn)程?

MySQL>start slave;

???????????????????????????? 5 查看狀態(tài) (IO線程和 SQL線程都是yes狀態(tài))

mysql> show slave status \G


管理主機(jī)

#安裝依賴軟件

cd mha-soft-student/

yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm

yum -y install perl-*.rpm

yum -y install? perl-ExtUtils-*?? perl-CPAN*

tar -xf mha4mysql-manager-0.56.tar.gz

cd mha4mysql-manager-0.56/??????????????????????

[root@mgm57 mha4mysql-manager-0.56]# perl Makefile.PL?

*** Module::AutoInstall version 1.03

*** Checking for Perl dependencies...

[Core Features]

- DBI?????????????????? ...loaded. (1.627)

- DBD::mysql??????????? ...loaded. (4.023)

- Time::HiRes?????????? ...loaded. (1.9725)

- Config::Tiny????????? ...loaded. (2.14)

- Log::Dispatch???????? ...loaded. (2.41)

- Parallel::ForkManager ...loaded. (1.18)

- MHA::NodeConst??????? ...loaded. (0.56)

*** Module::AutoInstall configuration finished.

Checking if your kit is complete...

Looks good

Writing Makefile for mha4mysql::manager

Writing MYMETA.yml and MYMETA.json

[root@mgm57 mha4mysql-manager-0.56]#? make?? && make? install??

2了解相關(guān)管理命令

[root@mgm57 mha4mysql-manager-0.56]# masterha_ 按2次tab鍵列出所有命令

masterha_check_repl?????? masterha_conf_host????? ??masterha_master_switch???

masterha_check_ssh??????? masterha_manager????????? masterha_secondary_check?

masterha_check_status???? masterha_master_monitor?? masterha_stop????????????

[root@mgm57 mha4mysql-manager-0.56]#

3創(chuàng)建并編輯管理服務(wù)的主配置文件 (!!!重要!??!)

?????? ????????????? 3.1 創(chuàng)建工作目錄?

[root@mgm57 ~]# mkdir /etc/mha

? ? ? ? ? ? ? ? ? ?3.2 拷貝模板文件創(chuàng)建主配置文件

[root@mgm57 mha-soft-student]# cd? mha4mysql-manager-0.56

[root@mgm57 mha4mysql-manager-0.56]# cp samples/conf/app1.cnf? /etc/mha/

? ? ? ? ? ? ? ? ? ? ?3.3 編輯主配置文件

???????????????????????? 說(shuō)明:模版文件是個(gè)半成品 需要根據(jù)環(huán)境準(zhǔn)備完善

[root@mgm57 ~]# vim /etc/mha/app1.cnf??? (沒(méi)有第4臺(tái)數(shù)據(jù)庫(kù)服務(wù)器所有把[server4]刪除)???????????????????

[server default]

manager_workdir=/etc/mha

manager_log=/etc/mha/manager.log

master_ip_failover_script=/etc/mha/master_ip_failover

?ssh_user=root

ssh_port=22

?repl_user=repluser

repl_password=123qqq...A

?user=plj

password=123qqq...A

?#定義監(jiān)視的數(shù)據(jù)庫(kù)服務(wù)器

[server1]

hostname=192.168.4.51

port=3306

candidate_master=1

?[server2]

hostname=192.168.4.52

port=3306

candidate_master=1

?[server3]

hostname=192.168.4.53

port=3306

candidate_master=1

:wq

?????????? 4創(chuàng)建故障切換腳本

????????????????? 創(chuàng)建腳本并指定vip地址部署在哪塊網(wǎng)卡上

[root@mgm57 mha-soft-student]# cp master_ip_failover? /etc/mha/

[root@mgm57 mha-soft-student]# chmod +x /etc/mha/master_ip_failover

?

[root@mgm57 mha-soft-student]# vim +35 /etc/mha/master_ip_failover

my $vip = '192.168.4.100/24';? # Virtual IP

my $key = "1";

my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";

my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";

把故障切換腳本里指定的vip地址

????????????? ?? 配置在當(dāng)前主從結(jié)構(gòu)種的主數(shù)據(jù)庫(kù)服務(wù)器?主機(jī)上

[root@host51 ~]# ifconfig? eth0:1 192.168.4.100/24

[root@host51 ~]# ifconfig? eth0:1

eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>? mtu 1500

??????? inet 192.168.4.100? netmask 255.255.255.0? broadcast 192.168.4.255

??????? ether 52:54:00:98:33:28? txqueuelen 1000? (Ethernet)

2)安裝軟件(3臺(tái)數(shù)據(jù)庫(kù)器軟件都要安裝)

???????????????????? #先安裝依賴

[root@host51 ~]# cd mha-soft-student/

[root@host51 mha-soft-student]# yum -y install perl-*.rpm

? ? ? ? ? ? ? #在安裝主軟件

[root@host51 mha-soft-student]# yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm?????

? ? ? ? ? ? ?3) 添加監(jiān)控用戶

只需在master服務(wù)器添加 在slave服務(wù)器查看

[root@host51 ~]# mysql -uroot -p123qqq...A

mysql> grant all on *.*? to plj@"%"? identified by "123qqq...A";

mysql> exit;

測(cè)試配置,在管理主機(jī)mgm57 如下測(cè)試

? ? ? ? ? ? ??1) 測(cè)試ssh免密登錄配置

[root@mgm57 ~]# masterha_check_ssh? --conf=/etc/mha/app1.cnf????????????

Sat Nov 20 16:31:08 2021 - [info] All SSH connection tests passed successfully.? #成功提示

? ? ? ? ??2)測(cè)試主從同步配置

[root@mgm57 ~]# masterha_check_repl --conf=/etc/mha/app1.cnf

MySQL Replication Health is OK.?? #成功提示

啟動(dòng)管理服務(wù)管理主機(jī)

nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf ?\

--ignore_last_failover 2> /dev/null &

?[root@mgm57 ~]# jobs

[1]+? 運(yùn)行中?????????????? nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover 2> /dev/null &

[root@mgm57 ~]# masterha_check_status? --conf=/etc/mha/app1.cnf;

app1 (pid:1977) is running(0:PING_OK), master:192.168.4.51

[root@mgm57 ~]#

[root@host51 ~]# ifconfig? eth0:1

eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>? mtu 1500

??????? inet 192.168.4.100? netmask 255.255.255.0? broadcast 192.168.4.255

??????? ether 52:54:00:98:33:28? txqueuelen 1000? (Ethernet)


PXC集群

?????? 1.1? PXC介紹

Percona XtraDB Cluster(簡(jiǎn)稱PXC)

是基于Galera的MySQL高可用集群解決方案

Galera Cluster是Codership公司開(kāi)發(fā)的一套免費(fèi)開(kāi)源的高可用方案

PXC集群主要由兩部分組成:

Percona Server with XtraDB和Write Set Replication patches(同步、多主復(fù)制插件)

官網(wǎng)http://galeracluster.com

?

????????????? 1.2? pxc集群特點(diǎn)

1、數(shù)據(jù)強(qiáng)一致性、無(wú)同步延遲

2、沒(méi)有主從切換操作,無(wú)需使用虛擬IP

3、支持InnoDB存儲(chǔ)引擎

4、多線程復(fù)制

5、部署使用簡(jiǎn)單

6、支持節(jié)點(diǎn)自動(dòng)加入,無(wú)需手動(dòng)拷貝數(shù)據(jù)

??1.3? 相關(guān)端口號(hào)

3306 數(shù)據(jù)庫(kù)服務(wù)端口

4444 SST 端口

4567 集群通信端口

4568 IST 端口

SST? State Snapshot Transfer 全量同步

IST Incremental State Transfer 增量同步


?二配置pxc集群

? ? ??第1步:安裝軟件 (3臺(tái)主機(jī)都要安裝)

必須按照順序安裝 因?yàn)檐浖g有依賴

cd pxc/

yum -y install libev-4.15-1.el6.rf.x86_64.rpm

yum -y install percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm

yum -y install qpress-1.1-14.11.x86_64.rpm

tar -xf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar

yum -y install Percona-XtraDB-Cluster-*.rpm

?

?

?????? ??????? 第2步:修改配置文件

????????????? ??????? 2.1 指定集群中主機(jī)的server_id? 修改 mysqld.cnf文件

??????????????????????? 2.2 指定集群信息 修改 wsrep.cnf文件

?

????????????? ??????? #修改71主機(jī)的server_id

???????????????????? vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf

???????????????????? server_id=71

? ? ? ? ? ? ? ? ? ? #修改72主機(jī)的server_id

???????????????????? vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf

???????????????????? server_id=72

? ? ? ? ? ? ? ? ? ??#修改73主機(jī)的server_id

???????????????????? vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf

???????????????????? server_id=73

? ? ? ? ? ? ? ? ? ???#修改71主機(jī)的wsrep.cnf 文件

???????????????????? ]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf

???????????????????? 8 wsrep_cluster_address=gcomm://192.168.4.71,192.168.4.72,192.168.4.73

???????????????????? 25 wsrep_node_address=192.168.4.71

???????????????????????? 27 wsrep_cluster_name=pxc-cluster

???????????????????? 30 wsrep_node_name=pxcnode71

??????????????????? 39 wsrep_sst_auth="sstuser:123qqq...A"

???????????????????? :wq

? ? ? ? ? ? ? ? ? ???#修改72主機(jī)的wsrep.cnf 文件

???????????????????? ]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf

???????????????????? 8 wsrep_cluster_address=gcomm://192.168.4.71,192.168.4.72,192.168.4.73

???????????????????? 25 wsrep_node_address=192.168.4.72

???????????????????????? 27 wsrep_cluster_name=pxc-cluster

???????????????????? 30 wsrep_node_name=pxcnode72

???????????????????? 39 wsrep_sst_auth="sstuser:123qqq...A"

???????????????????? :wq

? ? ? ? ? ? ? ? ? ??#修改73主機(jī)的wsrep.cnf 文件

???????????????????? ]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf

???????????????????? 8 wsrep_cluster_address=gcomm://192.168.4.71,192.168.4.72,192.168.4.73

???????????????????? 25 wsrep_node_address=192.168.4.73

???????????????????????? 27 wsrep_cluster_name=pxc-cluster

???????????????????? 30 wsrep_node_name=pxcnode73

???????????????????? 39 wsrep_sst_auth="sstuser:123qqq...A"

???????????????????? :wq

? ?第3步:初始化集群

??? ?????? 說(shuō)明:在任意1臺(tái)服務(wù)器上執(zhí)行初始化集群操作都可以(僅需要執(zhí)行一遍)

? ? ? ? ? ? ? ? ? 統(tǒng)一在71 主機(jī)執(zhí)行 ,具體步驟如下? ? ? ?

????????????????? ??? 1、啟動(dòng)服務(wù)

????????????????? ??? 2、使用初始密碼連接服務(wù)

????????????????? ??? 3、添加授權(quán)用戶sstuser

????????????????? ??? 4、查看數(shù)據(jù)庫(kù)服務(wù)器端口 3306

????????????????? ??? 5、查看集群端口4567

????????????????? ??? 6、管理員root 登錄 建庫(kù)表存儲(chǔ)記錄

? ? ? ? ? ? ? ? ?[root@pxcnode71 ~]# systemctl? start mysql@bootstrap.service??? 初始化集群

?[root@pxcnode71 ~]# ls /var/lib/mysql? 查看數(shù)據(jù)數(shù)據(jù)庫(kù)文件列表 有文件說(shuō)明成功

auto.cnf???????? gvwstate.dat??? mysqld_safe.pid?????? pxcnode71-bin.000002

ca-key.pem?????? ib_buffer_pool? mysql.sock??????????? pxcnode71-bin.index

ca.pem?????????? ibdata1???????? mysql.sock.lock?????? server-cert.pem

client-cert.pem? ib_logfile0???? performance_schema??? server-key.pem

client-key.pem?? ib_logfile1???? private_key.pem?????? sys

galera.cache???? ibtmp1????????? public_key.pem??????? xb_doublewrite

grastate.dat???? mysql?????????? pxcnode71-bin.000001

[root@pxcnode71 ~]# netstat? -utnalp? | grep 3306? #查看數(shù)據(jù)庫(kù)服務(wù)端口

tcp6?????? 0????? 0 :::3306???????????????? :::*???????? ???????????LISTEN????? 5359/mysqld????????

[root@pxcnode71 ~]#

[root@pxcnode71 ~]# netstat? -utnalp? | grep 4567 #查看集群端口

tcp??????? 0????? 0 0.0.0.0:4567??????????? 0.0.0.0:*?????????????? LISTEN????? 5359/mysqld? ? ? ??

[root@pxcnode71 ~]# grep password /var/log/mysqld.log? 查看管理員初始化密碼

2021-11-22T02:49:33.621967Z 1 [Note] A temporary password is generated for root@localhost: UfjF5UQGb/fq

[root@pxcnode71 ~]# mysql -uroot -p'UfjF5UQGb/fq'??? 初始密碼登錄?????????????

mysql> alter user root@"localhost" identified by "123456";? 強(qiáng)制修改密碼

mysql> exit 斷開(kāi)連接

[root@pxcnode71 ~]# mysql -uroot -p123456? 使用修改后的密碼登錄????????????????

mysql> grant all on *.*? to? sstuser@"localhost" identified by "123qqq...A";? 添加全量同步用戶sstuser

Query OK, 0 rows affected, 1 warning (0.10 sec)

?

錯(cuò)誤統(tǒng)一解決辦法

? ? ? 1、查看mysql服務(wù)的父進(jìn)程pid 通過(guò)kill -9?? 殺死父進(jìn)程

?????????? ]# which?? pstree || yum? -y install psmisc

???? ?? ]# pstree -p | grep mysqld

???? ?? ]# kill? -9? pid號(hào)

? ??2、清空數(shù)據(jù)庫(kù)目錄? rm? -rf? /var/lib/mysql/*

? ? 3、檢查 mysqld.cnf?? 和 wsrep.cnf 文件的配置項(xiàng)目??

???? 4、檢查 防火墻和 selinux服務(wù)關(guān)閉了嗎

? ? 如果初始集群失敗,就重新執(zhí)行集群初始化

???? 如果啟動(dòng)MySQL服務(wù)錯(cuò)誤,就重新執(zhí)行啟動(dòng)mysql服務(wù)


存儲(chǔ)引擎

MySQL服務(wù)軟件自帶的功能程序

當(dāng)對(duì)表里的數(shù)據(jù)做select 或insert 訪問(wèn)時(shí),

會(huì)根據(jù)表使用的存儲(chǔ)引擎對(duì)數(shù)據(jù)做處理。不同的存儲(chǔ)引擎有不同的功能和數(shù)據(jù)存儲(chǔ)方式。

作為可插拔式的組件提供?????????

MySQL 5.0/5.1 (MyISAM)????

MySQL 5.5/5.6 (InnoDB)

1)MySQL服務(wù)體系結(jié)構(gòu) (mysql服務(wù)的功能分類)

? ? ? ? ? ? ?1 管理工具: 安裝MySQL服務(wù)軟件后,提供的管理命令

? ? ? ? ? ? ??2連接池:驗(yàn)證客戶端連接時(shí)使用的用戶和密碼是否正確 同時(shí)驗(yàn)證數(shù)據(jù)庫(kù)服務(wù)器是否有mysqld進(jìn)程相應(yīng)連接

? ? ? ? ? ? ?3 SQL接口: 把用戶執(zhí)行的SQL命令傳遞給本機(jī)的mysqld 進(jìn)程

? ? ? ? ? ? ?4分析器:檢查SQL命令的語(yǔ)句及對(duì)數(shù)據(jù)的訪問(wèn)權(quán)限

? ? ? ? ? ? ?5優(yōu)化器:對(duì)要執(zhí)行的 SQL命令做優(yōu)化(是內(nèi)存自動(dòng)功能程序)

? ? ? ? ? ? 6查詢緩存:劃分出一定的物理內(nèi)存空間給MySQL服務(wù)存儲(chǔ)查找過(guò)的數(shù)據(jù)。

? ? ? ? ? ? 7存儲(chǔ)引擎:當(dāng)對(duì)表里的數(shù)據(jù)做查詢(select) 或?qū)懖僮鳎╥nsert /update /delete)會(huì)調(diào)用存儲(chǔ)引擎對(duì)表中的數(shù)據(jù)做處理,至于如何處理取決表使用的存儲(chǔ)引擎的功能

? ? ? ? ? ?8文件系統(tǒng):通常指的就是電腦的硬盤

? ? ? ? ? ??2)MySQL服務(wù)的工作過(guò)程

????????????????? 2.1 處理查詢select訪問(wèn)的工作過(guò)程

???????????????????? 第1步: 客戶端向服務(wù)器發(fā)起連接請(qǐng)求

???????????????????? 第2步: 服務(wù)器接收到客戶端連接請(qǐng)求并響應(yīng)

???????????????????? 第3步:如果客戶端執(zhí)行的selcet 訪問(wèn),先在查詢緩存里提取數(shù)據(jù)

回復(fù)給客戶端,

如果數(shù)據(jù)庫(kù)服務(wù)器在查詢緩存里沒(méi)有找到用戶訪問(wèn)的數(shù)據(jù),這

時(shí)就要到數(shù)據(jù)庫(kù)服務(wù)器的表里查找數(shù)據(jù),對(duì)數(shù)據(jù)庫(kù)目錄下的表

做訪問(wèn)是就會(huì)調(diào)用表使用的存儲(chǔ)引擎對(duì)表做處理,

然后把查找到的數(shù)據(jù)先放到查詢緩存 在回復(fù)給客戶端

在數(shù)據(jù)庫(kù)服務(wù)器查看與查詢緩存相關(guān)的配置項(xiàng)

???????????????????? ? mysql> show variables like "%query_cache%";

2.2 處理存儲(chǔ)(insert)訪問(wèn)的工作過(guò)程

???????????????????????? 第1步: 客戶端向服務(wù)器發(fā)起連接請(qǐng)求

???????????????????????? 第2步: 服務(wù)器接收到客戶端連接請(qǐng)求并響應(yīng)

???????????????????????? 第3步: 根據(jù)表使用的存儲(chǔ)引擎 對(duì)表中的數(shù)據(jù)做對(duì)應(yīng)的處理。

???????????????????????? 第4步: 斷開(kāi)連接

??? 2.2 存儲(chǔ)引擎管理

?????? ??? 1查看存儲(chǔ)引擎

????????????????? 1.1 查看數(shù)據(jù)庫(kù)服務(wù)支持的存儲(chǔ)引擎和默認(rèn)使用的存儲(chǔ)引擎

mysql> show?? engines;

.2 查看當(dāng)前已有表使用的存儲(chǔ)引擎

mysql> show create table DB1.t3 \G

?修改存儲(chǔ)引擎

????????????????? 2.1 修改數(shù)據(jù)庫(kù)服務(wù)默認(rèn)使用的存儲(chǔ)引擎??

[root@host50 ~]#vim /etc/my.cnf

???????? [mysqld]

???????? default-storage-engine=myisam

??

說(shuō)明:

????????????????? memory存儲(chǔ)引擎的表 每個(gè)表對(duì)應(yīng)1個(gè)表文件

????????????????? innodb存儲(chǔ)引擎的表 每個(gè)表對(duì)應(yīng)2個(gè)表文件

????????????????? myisam存儲(chǔ)引擎的表 每個(gè)表對(duì)應(yīng)3個(gè)表文件

? ?

??? 2.3修改表使用的存儲(chǔ)引擎(一般在表存儲(chǔ)存儲(chǔ)數(shù)據(jù)之前修改)

????????????????? 說(shuō)明:存儲(chǔ)引擎修改了,存儲(chǔ)數(shù)據(jù)的位置也會(huì)改變,

2.3 常用存儲(chǔ)引擎特點(diǎn)(生產(chǎn)環(huán)境下常用的存儲(chǔ)引擎)

?????????? 1) myisam存儲(chǔ)引擎特點(diǎn)

???????????? 支持表級(jí)鎖 、不支持事務(wù)、事務(wù)回滾、外鍵

???????????? ?myisam存儲(chǔ)引擎的表 每個(gè)表對(duì)應(yīng)3個(gè)表文件

???????????? ?表名.frm? 存儲(chǔ)表頭信息????? mysql> desc? 庫(kù).表;

???????????? ?表名.MYI? 存儲(chǔ)表索引信息??? mysql> show index from? 庫(kù).表;

???????????? ?表名.MYD? 存儲(chǔ)表里的數(shù)據(jù)??? mysql> select? * from? 庫(kù).表;

? ? ? ? ? ? ? ?2) innodb存儲(chǔ)引擎特點(diǎn)

???????????? 支持行級(jí)、支持事務(wù)、事務(wù)回滾、外鍵

???????????? innodb存儲(chǔ)引擎的表 每個(gè)表對(duì)應(yīng)2個(gè)表文件

表名.frm? 存儲(chǔ)表頭信息????? mysql> desc? 庫(kù).表;

表名.ibd? 存儲(chǔ)表的索引信息+表的數(shù)據(jù)信息????

show index from? 庫(kù).表; +? select? * from? 庫(kù).表;

?????????? 3) 專業(yè)術(shù)語(yǔ)

????????????? 說(shuō)明: 給表加鎖,是為了解決客戶端并發(fā)訪問(wèn)的沖突問(wèn)題

? ? ? ? ?? 3.1 鎖類型:根據(jù)對(duì)數(shù)據(jù)的訪問(wèn)類型加鎖

???????????????? 讀鎖:又稱為共享鎖,對(duì)數(shù)據(jù)做查詢select 訪問(wèn)

???????????????????? ? 加了讀鎖表,允許多個(gè)訪問(wèn)同時(shí)查詢一張。

? ? ? ? ? ? ? ? ? ?寫鎖:又稱為排它鎖或互斥鎖,對(duì)數(shù)據(jù)做寫訪問(wèn)(寫訪問(wèn)通常指定的是 insert | delete | update )加了寫鎖的表,同一時(shí)間只允許1個(gè)連接做寫操作,后續(xù)的讀和寫都得等待,等待寫鎖釋放后,才允許后續(xù)的讀或?qū)懺L問(wèn)。

? ? ? ? ? ?3.2 鎖粒度:指的就是給表加鎖的范圍?

???? 行級(jí)鎖: 僅僅對(duì)被訪問(wèn)的行分別加鎖,沒(méi)有被訪問(wèn)的行不加鎖

???? 表級(jí)鎖: 只要是對(duì)表做訪問(wèn),就會(huì)把整張表加鎖(不管訪問(wèn)的是1行 還是更多行)

?

??? 2.4 事務(wù)特性

?????????? 1)什么是事務(wù)?

指的是一組不可分割的SQL操作。

使用Innodb 存儲(chǔ)引擎的表才支持事務(wù)。

事務(wù)用來(lái)管理對(duì)數(shù)據(jù)的 insert,update,delete 操作

?????????? 2) 事務(wù)的特性簡(jiǎn)稱ACID (表的存儲(chǔ)引擎必須是innodb 才有事務(wù)的特性)

???????????? Atomic :原子性

一個(gè)事務(wù)(transaction)中的所有操作,要么全部完成,要么全部不完成。

? ? ? ? ? ? ?Consistency : 一致性

在事務(wù)開(kāi)始之前和事務(wù)結(jié)束以后,數(shù)據(jù)庫(kù)的完整性不會(huì)被破壞。

?????????????? 執(zhí)行sql命令時(shí),敲回車前 稱為事務(wù)開(kāi)始之前

???????? ?? 執(zhí)行sql命令時(shí),敲回車后 稱為事務(wù)結(jié)束以后

? ? ? ? ? ? Isolation :隔離性

數(shù)據(jù)庫(kù)允許多個(gè)并發(fā)事務(wù)同時(shí)對(duì)其數(shù)據(jù)進(jìn)行讀寫和修改而互不影響。

???????????? MySQL服務(wù)是支持多并連接的服務(wù),同一時(shí)刻可是同時(shí)接收多個(gè)客戶端的訪問(wèn),

???????????? 如果訪問(wèn)的是innodb存儲(chǔ)引擎的表,彼此不知道操作的是同1張表

? ? ? ? ? ? ? Durability :持久性

事務(wù)處理結(jié)束后,對(duì)數(shù)據(jù)的修改就是永久的,即便系統(tǒng)故障也不會(huì)丟失。

???????????? 執(zhí)行回車后,事務(wù)就結(jié)束。數(shù)據(jù)會(huì)永久有效。

??

2.5 事務(wù)隔離級(jí)別

事務(wù)隔離解決的問(wèn)題:臟讀? 、不可重復(fù)讀 、 幻讀 。

?臟讀: 讀到了其他事務(wù)未提交的數(shù)據(jù),讀到的數(shù)據(jù)并不一定是最終存儲(chǔ)到數(shù)據(jù)庫(kù)里的數(shù)據(jù)。

?可重復(fù)讀:可重復(fù)讀指的是在一個(gè)事務(wù)內(nèi),最開(kāi)始讀到的數(shù)據(jù)和事務(wù)結(jié)束前的任意時(shí)刻讀到的同一批數(shù)據(jù)都是一致的。

?不可重復(fù)讀:一個(gè)事務(wù)先后讀取同一條記錄,而事務(wù)在兩次讀取之間該數(shù)據(jù)被其它事務(wù)所修改,則兩次讀取的數(shù)據(jù)不同,這種就是不可重復(fù)讀。

?幻讀:一個(gè)事務(wù)按相同的查詢條件重新讀取以前檢索過(guò)的數(shù)據(jù),卻發(fā)現(xiàn)其他事務(wù)插入了滿足其查詢條件的新數(shù)據(jù),這種現(xiàn)象就稱為幻讀。

? ?事務(wù)隔離級(jí)別

讀未提交(Read? Uncommitted) 最低的隔離級(jí)別,允許讀取尚未提交的數(shù)據(jù)變更;可能會(huì)導(dǎo)致臟讀、幻讀、不可重復(fù)對(duì)。

?讀提交(Read? Committed)允許并發(fā)事務(wù)讀取已經(jīng)提交的數(shù)據(jù),可以阻止臟讀;但幻讀或不可重復(fù)讀仍有可能發(fā)生。

?可重復(fù)讀(Repeatable Read)對(duì)同一字段的多次讀取結(jié)果都是一致的;除非數(shù)據(jù)是被本身事務(wù)自己所修改;可以阻止臟讀和不可重復(fù)讀,但幻讀仍有可能發(fā)生。

?序列化(Serializable)最高的隔離級(jí)別,完全服從ACID的隔離級(jí)別。所有的事務(wù)依次逐個(gè)執(zhí)行,事務(wù)之間完全不可能產(chǎn)生干擾。該級(jí)別可以防止臟讀和不可重復(fù)讀,及幻讀。

??????????????



數(shù)據(jù)庫(kù)高可用MHA和PXC集群搭建 存儲(chǔ)引擎的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
山阴县| 天镇县| 通辽市| 雷州市| 遵义市| 河间市| 万宁市| 克什克腾旗| 商城县| 洛隆县| 永登县| 怀化市| 青河县| 永登县| 富裕县| 镇赉县| 吴旗县| 洛扎县| 肇源县| 巴彦淖尔市| 达孜县| 庆元县| 新蔡县| 佛学| 犍为县| 深泽县| 溧阳市| 溧水县| 鄂尔多斯市| 哈巴河县| 新源县| 大关县| 绥江县| 三江| 芦山县| 惠州市| 崇阳县| 新营市| 阳城县| 苏尼特左旗| 千阳县|