欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL系列之十四 MySQL的高可用實(shí)現(xiàn)

 更新時(shí)間:2021年07月02日 16:38:48   作者:生生不息.連綿不絕  
這篇文章主要介紹了MySQL系列之十四 MySQL的高可用實(shí)現(xiàn),從工作原理到具體的技術(shù)實(shí)現(xiàn),本文詳細(xì)的講述了該項(xiàng)技術(shù),以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

一、MHA

​對(duì)主節(jié)點(diǎn)進(jìn)行監(jiān)控,可實(shí)現(xiàn)自動(dòng)故障轉(zhuǎn)移至其它從節(jié)點(diǎn);通過(guò)提升某一從節(jié)點(diǎn)為新的主節(jié)點(diǎn),基于主從復(fù)制實(shí)現(xiàn),還需要客戶端配合實(shí)現(xiàn),目前MHA主要支持一主多從的架構(gòu),要搭建MHA,要求一個(gè)復(fù)制集群中必須最少有三臺(tái)數(shù)據(jù)庫(kù)服務(wù)器,一主二從,即一臺(tái)充當(dāng)master,一臺(tái)充當(dāng)備用master,另外一臺(tái)充當(dāng)從庫(kù)。

1、MHA工作原理

  • 從宕機(jī)崩潰的master保存二進(jìn)制日志事件(binlog events)
  • 識(shí)別含有最新更新的slave
  • 應(yīng)用差異的中繼日志(relay log)到其他的slave
  • 應(yīng)用從master保存的二進(jìn)制日志事件(binlog events)
  • 提升一個(gè)slave為新的master

2、MHA軟件

MHA軟件由兩部分組成,Manager工具包和Node工具包;

Manager工具包主要包括以下幾個(gè)工具:

masterha_check_ssh 檢查MHA的SSH配置狀況masterha_check_repl 檢查MySQL復(fù)制狀況masterha_manger 啟動(dòng)MHAmasterha_check_status 檢測(cè)當(dāng)前MHA運(yùn)行狀態(tài)masterha_master_monitor 檢測(cè)master是否宕機(jī)masterha_master_switch 故障轉(zhuǎn)移(自動(dòng)或手動(dòng))masterha_conf_host 添加或刪除配置的server信息

Node工具包:這些工具通常由MHA Manager的腳本觸發(fā),無(wú)需人為操作

save_binary_logs 保存和復(fù)制master的二進(jìn)制日志apply_diff_relay_logs 識(shí)別差異的中繼日志事件并將其差異的事件應(yīng)用于其他的slavefilter_mysqlbinlog 去除不必要的ROLLBACK事件(MHA已不再使用此工具)purge_relay_logs 清除中繼日志(不會(huì)阻塞SQL線程)

提示:為了盡可能的減少主庫(kù)硬件損壞宕機(jī)造成的數(shù)據(jù)丟失,因此在配置MHA的同時(shí)建議配置成MySQL 5.5的半同步復(fù)制。

自定義擴(kuò)展:

secondary_check_script:通過(guò)多條網(wǎng)絡(luò)路由檢測(cè)master的可用性master_ip_ailover_script:更新Application使用的masteripshutdown_script:強(qiáng)制關(guān)閉master節(jié)點(diǎn)report_script:發(fā)送報(bào)告init_conf_load_script:加載初始配置參數(shù)master_ip_online_change_script:更新master節(jié)點(diǎn)ip地址

下載地址:https://code.google.com/archive/p/mysql-master-ha/downloads

3、MHA的實(shí)現(xiàn)

環(huán)境:基于秘鑰認(rèn)證,參考:https://www.cnblogs.com/L-dongf/p/9058265.html,時(shí)間必須同步,執(zhí)行:ntpdate cn.pool.ntp.org

1)manager節(jié)點(diǎn)

[root@manager ~]# yum install mha4mysql-manager-0.56-0.el6.noarch.rpm mha4mysql-node-0.56-0.el6.noarch.rpm -y  #安裝mha軟件
[root@manager ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm 192.168.0.7:
[root@manager ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm 192.168.0.8:
[root@manager ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm 192.168.0.9:
[root@manager ~]# mkdir /etc/mha/
[root@manager ~]# vim /etc/mha/cluster1.cnf
[server default]
user=mhauser
password=mhapass
manager_workdir=/data/mastermha/cluster1/
manager_log=/data/mastermha/cluster1/manager.log
remote_workdir=/data/mastermha/cluster1/
ssh_user=root
repl_user=repluser
repl_password=replpass
ping_interval=1  #每秒檢測(cè)一次
[server1]
hostname=192.168.0.7
candidate_master=1  #可以成為主節(jié)點(diǎn)
[server2]
hostname=192.168.0.8
candidate_master=1  #可以成為主節(jié)點(diǎn)
[server3]
hostname=192.168.0.9
[root@manager ~]# masterha_check_ssh --conf=/etc/mha/cluster1.cnf  #檢查ssh秘鑰環(huán)境
	All SSH connection tests passed successfully.
[root@manager ~]# masterha_check_repl --conf=/etc/mha/cluster1.cnf  #檢查MySQL狀態(tài)
	MySQL Replication Health is OK.
[root@manager ~]# yum install screen -y
[root@manager ~]# screen -S mha  #mha是工作在前臺(tái)的進(jìn)程,不能用終端實(shí)時(shí)檢測(cè)
[root@manager ~]# masterha_manager --conf=/etc/mha/cluster1.cnf  #開(kāi)始監(jiān)測(cè)

2)master節(jié)點(diǎn)

[root@master ~]# yum install mha4mysql-node-0.56-0.el6.noarch.rpm -y  #安裝node包
[root@master ~]# vim /etc/my.cnf
[mysqld]
server_id=1
log_bin
binlog_format=row
skip_name_resolve
[root@master ~]# systemctl start mariadb
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO repluser@'192.168.0.%' IDENTIFIED BY 'replpass';  #創(chuàng)建主從復(fù)制賬號(hào),可能切換為主的節(jié)點(diǎn)都要?jiǎng)?chuàng)建此賬號(hào)
MariaDB [(none)]> SHOW MASTER LOGS;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       401 |
+--------------------+-----------+
MariaDB [(none)]> GRANT ALL ON *.* TO mhauser@'192.168.0.%' IDENTIFIED BY 'mhapass';  #創(chuàng)建mha的管理用戶,確保所有節(jié)點(diǎn)都已經(jīng)同步此賬號(hào)

3)slave節(jié)點(diǎn)

[root@slave ~]# yum install mha4mysql-node-0.56-0.el6.noarch.rpm -y
[root@slave ~]# vim /etc/my.cnf
[mysqld]
read_only=1
log_bin
binlog_format=row
server_id=2
relay_log_purge=0
skip_name_resolve=1
[root@slave ~]# systemctl start mariadb
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO repluser@'192.168.0.%' IDENTIFIED BY 'replpass';
MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST='192.168.0.7',  #此時(shí)主節(jié)點(diǎn)為0.7
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='replpass',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='mariadb-bin.000001',
    -> MASTER_LOG_POS=401,
    -> MASTER_CONNECT_RETRY=10;
MariaDB [(none)]> START SLAVE;

4)slave2節(jié)點(diǎn)

[root@slave2 ~]# yum install mha4mysql-node-0.56-0.el6.noarch.rpm -y
[root@slave2 ~]# vim /etc/my.cnf
[mysqld]
server_id=3
read_only=1
relay_log_purge=0
skip_name_resolve=1
[root@slave2 ~]# systemctl start mariadb
MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST='192.168.0.7',
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='replpass',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='mariadb-bin.000001',
    -> MASTER_LOG_POS=401,
    -> MASTER_CONNECT_RETRY=10;
MariaDB [(none)]> START SLAVE;

4)測(cè)試

當(dāng)master的服務(wù)停止:[root@master ~]# systemctl stop mariadb

在slave2上執(zhí)行:MariaDB [(none)]> SHOW SLAVE STATUS\G命令,看到Master_Server_Id: 2

說(shuō)明:切換成功

4、MHA監(jiān)控重新上線

將故障的master修復(fù)后重新上線,手動(dòng)配置成為現(xiàn)在主節(jié)點(diǎn)的從
[root@master ~]# systemctl start mariadb
MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST='192.168.0.8',  #此時(shí)的主為0.8
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='replpass',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='mariadb-bin.000001',
    -> MASTER_LOG_POS=482,
    -> MASTER_CONNECT_RETRY=10;
MariaDB [(none)]> START SLAVE;
管理節(jié)點(diǎn):
[root@manager ~]# screen -S mha
[root@manager ~]# masterha_manager --conf=/etc/mha/cluster1.cnf  #重新開(kāi)啟監(jiān)測(cè)

二、Galera Cluster

​Galera Cluster:集成了Galera插件的MySQL集群,是一種新型的,數(shù)據(jù)不共享的,高度冗余的高可用方案,目前Galera Cluster有兩個(gè)版本,分別是Percona Xtradb Cluster及MariaDB Cluster,Galera本身是具有多主特性的,即采用multi-master的集群架構(gòu),是一個(gè)既穩(wěn)健,又在數(shù)據(jù)一致性、完整性及高性能方面有出色表現(xiàn)的高可用解決方案

​三個(gè)節(jié)點(diǎn)組成了一個(gè)集群,與普通的主從架構(gòu)不同,它們都可以作為主節(jié)點(diǎn),三個(gè)節(jié)點(diǎn)是對(duì)等的,稱為multi-master架構(gòu),當(dāng)有客戶端要寫(xiě)入或者讀取數(shù)據(jù)時(shí),連接哪個(gè)實(shí)例都是一樣的,讀到的數(shù)據(jù)是相同的,寫(xiě)入某一個(gè)節(jié)點(diǎn)之后,集群自己會(huì)將新數(shù)據(jù)同步到其它節(jié)點(diǎn)上面,這種架構(gòu)不共享任何數(shù)據(jù),是一種高冗余架構(gòu)

特性:

  • 多主架構(gòu):真正的多點(diǎn)讀寫(xiě)的集群,在任何時(shí)候讀寫(xiě)數(shù)據(jù),都是最新的;
  • 同步復(fù)制:集群不同節(jié)點(diǎn)之間數(shù)據(jù)同步,沒(méi)有延遲,在數(shù)據(jù)庫(kù)掛掉之后,數(shù)據(jù)不會(huì)丟失;
  • 并發(fā)復(fù)制:從節(jié)點(diǎn)APPLY數(shù)據(jù)時(shí),支持并行執(zhí)行,更好的性能;
  • 故障切換:在出現(xiàn)數(shù)據(jù)庫(kù)故障時(shí),因支持多點(diǎn)寫(xiě)入,切換容易;
  • 熱插拔:在服務(wù)期間,如果數(shù)據(jù)庫(kù)掛了,只要監(jiān)控程序發(fā)現(xiàn)的夠快,不可服務(wù)時(shí)間就會(huì)非常少。在節(jié)點(diǎn)故障期間,節(jié)點(diǎn)本身對(duì)集群的影響非常?。?/li>
  • 自動(dòng)節(jié)點(diǎn)克?。涸谛略龉?jié)點(diǎn),或者停機(jī)維護(hù)時(shí),增量數(shù)據(jù)或者基礎(chǔ)數(shù)據(jù)不需要人工手動(dòng)備份提供,Galera Cluster會(huì)自動(dòng)拉取在線節(jié)點(diǎn)數(shù)據(jù),最終集群會(huì)變?yōu)橐恢拢?/li>

工作原理:

參考官方文檔:

http://galeracluster.com/documentation-webpages/galera-documentation.pdf

http://galeracluster.com/documentation-webpages/index.html

https://mariadb.com/kb/en/mariadb/getting-started-with-mariadb-galera-cluster/

至少需要三臺(tái)節(jié)點(diǎn),不能安裝 mariadb-server 包,需要安裝特定的軟件包

Galera Cluster的實(shí)現(xiàn)

清華開(kāi)源鏡像源:https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-5.5.60/yum/centos7-amd64/

# vim /etc/yum.repos.d/mariadb_galera_server.repo
[mariadb]
name=mariadb_galera_server.repo
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-5.5.60/yum/centos7-amd64/
gpgcheck=0
# yum install MariaDB-Galera-server -y

​1)mysql-1

[root@mysql-1 ~]# vim /etc/my.cnf.d/server.cnf
[galera]
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.0.7,192.168.0.8,192.168.0.9" #將所有IP都定義在此
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_cluster_name='my_wsrep_cluster'
wsrep_node_name='node1'
wsrep_node_address='192.168.0.7'

​2)mysql-2

[root@mysql-2 ~]# vim /etc/my.cnf.d/server.cnf
[galera]
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.0.7,192.168.0.8,192.168.0.9"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_cluster_name='my_wsrep_cluster'
wsrep_node_name='node2'
wsrep_node_address='192.168.0.8'

​3)mysql-3

[root@mysql-3 ~]# vim /etc/my.cnf.d/server.cnf
[galera]
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.0.7,192.168.0.8,192.168.0.9"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_cluster_name='my_wsrep_cluster'
wsrep_node_name='node3'
wsrep_node_address='192.168.0.9'

​4)啟動(dòng)

[root@mysql-1 ~]# /etc/init.d/mysql start --wsrep-new-cluster #第一臺(tái)啟動(dòng)加此參數(shù)
[root@mysql-2 ~]# /etc/init.d/mysql start #后續(xù)服務(wù)直接啟動(dòng)即可
[root@mysql-3 ~]# /etc/init.d/mysql start

​5)測(cè)試

​在任何一個(gè)節(jié)點(diǎn)上操作數(shù)據(jù)庫(kù),其他節(jié)點(diǎn)同步操作;如果發(fā)生同時(shí)操作同條記錄,則只有一臺(tái)節(jié)點(diǎn)操作成功。

​6)查看工作狀態(tài)

MariaDB [(none)]> SHOW VARIABLES LIKE 'wsrep_%'\G
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_%'\G
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |  #集群中有三臺(tái)節(jié)點(diǎn)在線
+--------------------+-------+

到此這篇關(guān)于MySQL系列之十四 MySQL的高可用實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)MySQL的高可用實(shí)現(xiàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql連接查詢(左連接,右連接,內(nèi)連接)

    mysql連接查詢(左連接,右連接,內(nèi)連接)

    這篇文章主要介紹了mysql連接查詢(左連接,右連接,內(nèi)連接)的相關(guān)資料,這里舉例說(shuō)明如果使用及附實(shí)例代碼,需要的朋友可以參考下
    2017-07-07
  • 關(guān)于mysql init_connect的幾個(gè)要點(diǎn)總結(jié)

    關(guān)于mysql init_connect的幾個(gè)要點(diǎn)總結(jié)

    下面小編就為大家?guī)?lái)一篇關(guān)于mysql init_connect的幾個(gè)要點(diǎn)總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • MySql 錯(cuò)誤Incorrect string value for column

    MySql 錯(cuò)誤Incorrect string value for column

    能使用中文進(jìn)行搜索,但是insert into 中文是可以的。我的數(shù)據(jù)庫(kù)和數(shù)據(jù)表中所有的charset都是設(shè)置的utf8。
    2010-12-12
  • MySQL Hints控制查詢優(yōu)化器的選擇問(wèn)題小結(jié)

    MySQL Hints控制查詢優(yōu)化器的選擇問(wèn)題小結(jié)

    MySQL Hints是一種強(qiáng)大的工具,可以幫助我們解決復(fù)雜的查詢性能問(wèn)題,然而,它們應(yīng)該謹(jǐn)慎使用,并且總是與徹底的測(cè)試和驗(yàn)證相結(jié)合,本文介紹MySQL Hints控制查詢優(yōu)化器的選擇,感興趣的朋友一起看看吧
    2024-06-06
  • mysql數(shù)據(jù)庫(kù)sql優(yōu)化原則(經(jīng)驗(yàn)總結(jié))

    mysql數(shù)據(jù)庫(kù)sql優(yōu)化原則(經(jīng)驗(yàn)總結(jié))

    這里的原則 只是針對(duì)mysql數(shù)據(jù)庫(kù),其他的數(shù)據(jù)庫(kù) 某些是殊途同歸,某些還是存在差異。我總結(jié)的也是mysql普遍的規(guī)則,對(duì)于某些特殊情況得特殊對(duì)待。在構(gòu)造sql語(yǔ)句的時(shí)候養(yǎng)成良好的習(xí)慣
    2014-03-03
  • MySQL字段為 NULL的5大坑

    MySQL字段為 NULL的5大坑

    本文主要介紹了MySQL字段為 NULL的5大坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • mysql 5.6.23 安裝配置環(huán)境變量教程

    mysql 5.6.23 安裝配置環(huán)境變量教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.6.23 安裝配置環(huán)境變量教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Idea連接MySQL數(shù)據(jù)庫(kù)出現(xiàn)中文亂碼的問(wèn)題

    Idea連接MySQL數(shù)據(jù)庫(kù)出現(xiàn)中文亂碼的問(wèn)題

    這篇文章主要介紹了Idea連接MySQL數(shù)據(jù)庫(kù)出現(xiàn)中文亂碼的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • MySQL學(xué)習(xí)第一天 第一次接觸MySQL

    MySQL學(xué)習(xí)第一天 第一次接觸MySQL

    這篇文章是學(xué)習(xí)MySQL的第一篇文章,開(kāi)啟了探究MySQL的奇妙旅程,內(nèi)容主要是對(duì)MySQL的基礎(chǔ)知識(shí)進(jìn)行學(xué)習(xí),了解,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 深入淺析MySQL?Explain

    深入淺析MySQL?Explain

    這篇文章主要介紹了MySQL?Explain詳解,expain出來(lái)的信息有10列,分別是id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra,本文對(duì)每一字段進(jìn)行逐一解釋,需要的朋友可以參考下
    2022-07-07

最新評(píng)論