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

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

mysql主從復(fù)制筆記

1.故障級(jí)別

S1 最嚴(yán)重的,影響30%的交易額持續(xù)15分鐘以上,或者影響30%的用戶正常訪問,持續(xù)15分鐘以上
S2 比較嚴(yán)重,影響15%的交易額15分鐘以上
S3 嚴(yán)重故障,影響5%的交易額15分鐘左右
S4 故障,影響1%的交易額

成都創(chuàng)新互聯(lián)成立與2013年,先為崇義等服務(wù)建站,崇義等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為崇義企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

2.性能問題

Scale up:單臺(tái)服務(wù)器的硬件升級(jí)來提高性能,容易達(dá)到極限
Scale out:增加服務(wù)器的數(shù)量,利用負(fù)載均衡,進(jìn)行統(tǒng)一管理

3.MySQL主從復(fù)制過程架構(gòu)圖

mysql主從復(fù)制筆記

第一步:mysql將事務(wù)串行的寫入二進(jìn)制日志
第二步:slave通過I/O線程將master的二進(jìn)制日志(binary log events)拷貝到自己的中繼日志。
第三步:slave的SQL(從線程)從中繼日志中讀取事件,并重放其中的事件從而更新slave的數(shù)據(jù),使其與master中的數(shù)據(jù)一致。

4.數(shù)據(jù)庫主從架構(gòu)復(fù)制(關(guān)selinux和iptables

環(huán)境準(zhǔn)備:一臺(tái)做mysql主服務(wù)器,一臺(tái)做mysql從服務(wù)器,時(shí)鐘最好同步。
1)配置主master服務(wù)器
2)配置master主服務(wù)器
首先配置/etc/my.cnf文件
server-id=1 # 配置一個(gè)ID號(hào),從而與其他的服務(wù)器區(qū)分開來
log-bin=mysql-bin #打開mysql日志,格式為二進(jìn)制
接下來創(chuàng)建slave的賬號(hào)
MariaDB [(none)]> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO slave@'172.17.253.127' IDENTIFIED BY '123456';
查看主服務(wù)器狀態(tài)
Show master status;
3)配置slave服務(wù)器
首先配置/etc/my.cnf文件
server-id=2 #配置ID號(hào),從而與其他服務(wù)器區(qū)分開來
relay-log=mysql-relay-log #打開mysql日志,格式為二進(jìn)制
read-only=1 #設(shè)置只讀權(quán)限
log-bin=mysql-bin #開一從服務(wù)器二進(jìn)制日志
log-slave-updates=1 #使更新的數(shù)據(jù)寫進(jìn)二進(jìn)制日志中
接下來啟動(dòng)從服務(wù)器復(fù)制線程(與master需要一個(gè)網(wǎng)段內(nèi))
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='172.17.253.191', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=419;
啟動(dòng)復(fù)制線程
Start slave;
查看服務(wù)器狀態(tài),有這兩項(xiàng)則啟動(dòng)成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
4)在master上創(chuàng)建庫,slave上可以查看到,結(jié)束!

5.mysql復(fù)制過濾器

概念:并不復(fù)制所有數(shù)據(jù),而僅復(fù)制一個(gè)或幾個(gè)數(shù)據(jù)庫相關(guān)的數(shù)據(jù),有兩種實(shí)現(xiàn)思路。
一是在主服務(wù)器上設(shè)置,僅向二進(jìn)制文件中記錄有關(guān)特定數(shù)據(jù)庫相關(guān)的寫操作
Binlog_do_db= 僅僅做某個(gè)操作
Binlog_ignore_db= 除了設(shè)定的操作,其他的都做
二是在從服務(wù)器的設(shè)置,在SQL線程僅放關(guān)注的數(shù)據(jù)庫或表相關(guān)的事件
Replicate_do_db= 僅讀指定的數(shù)據(jù)
Replicate_ignore_db= 除了指定的數(shù)據(jù),都讀入

6.企業(yè)常見數(shù)據(jù)庫架構(gòu)

1)單一master和多個(gè)slave
實(shí)際中百分之90都是這樣的架構(gòu),因?yàn)榇蟛糠智闆r下都是讀訪問比寫訪問要多的多,在這種情況下,對(duì)于數(shù)據(jù)實(shí)時(shí)性要求不是很高的話,單純?cè)黾觭lave的數(shù)量,比較廉價(jià)而且效果很好。

2)兩個(gè)master互為主從
Master-master復(fù)制的兩臺(tái)服務(wù)器,既是master,又是另一臺(tái)的salve,這樣,任何一方所做的變更,都會(huì)通過復(fù)制應(yīng)用到另一方的數(shù)據(jù)庫中。
# 172.17.253.191上進(jìn)行如下操作
My.cnf配置文件中加入
auto_increment_offset=1
auto_increment_increment=2 ##使用奇數(shù)ID
進(jìn)行數(shù)據(jù)庫配置
MariaDB [LN]> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO slave@'172.17.253.127' IDENTIFIED BY '123456';
MariaDB [LN]> CHANGE MASTER TO MASTER_HOST='172.17.253.127', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000009', MASTER_LOG_POS=245;
Start slave;
Show status slave\G;IO和SQL為yes即可
172.17.253.127上進(jìn)行如下操作
auto_increment_offset=2
auto_increment_increment=2##使用偶數(shù)ID
進(jìn)行數(shù)據(jù)庫配置
MariaDB [LN]> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO slave@'172.17.253.191' IDENTIFIED BY '123456';
MariaDB [LN]> CHANGE MASTER TO MASTER_HOST='172.17.253.191', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000009', MASTER_LOG_POS=245;
Start slave;
Show status slave\G;IO和SQL為yes即可
測驗(yàn):
在191上創(chuàng)建表,并設(shè)置為自增長ID,檢驗(yàn)效果
mysql主從復(fù)制筆記
使用LN數(shù)據(jù)庫
mysql主從復(fù)制筆記
創(chuàng)建自增長ID表
mysql主從復(fù)制筆記
在127上插入數(shù)據(jù)
mysql主從復(fù)制筆記
查看表,成功
mysql主從復(fù)制筆記

7.自增長ID,主鍵,外鍵,索引

自增長ID:對(duì)于某些唯一性的字段,例如一個(gè)班的學(xué)生的學(xué)號(hào),可以通過設(shè)置自增長ID來實(shí)現(xiàn),自增長ID的數(shù)據(jù),代表這個(gè)表中存在一條唯一的記錄,而且自增長ID是肯定不會(huì)重復(fù)的。
主鍵:關(guān)系型數(shù)據(jù)庫的一條記錄有若干個(gè)屬性,若其中某一個(gè)屬性組(注意是組)能唯一標(biāo)識(shí)一條記錄,該屬性組就可以成為一個(gè)主鍵,如學(xué)生表(學(xué)號(hào),姓名,性別,班級(jí))中,學(xué)號(hào)就是一個(gè)主鍵
外鍵:例如成績表(學(xué)號(hào),課程號(hào),成績),學(xué)號(hào)和課程號(hào)合稱為主鍵,因?yàn)閱螁我粋€(gè)學(xué)號(hào)或者課程號(hào)并不能標(biāo)識(shí)一個(gè)學(xué)生的成績,而在學(xué)生表(學(xué)號(hào),姓名,性別,班級(jí))中,學(xué)號(hào)是主鍵,此時(shí)成績表中的學(xué)號(hào)就是學(xué)生表中的外鍵。
外鍵主要用來連表查詢,即通過學(xué)號(hào)查詢了相關(guān)信息后,再把學(xué)號(hào)映射到成績表中,和課程號(hào)結(jié)合,可以查看成績。
索引:快速搜索的關(guān)鍵,沒有索引的話,查詢的時(shí)候會(huì)全庫查詢,比較慢

8.復(fù)制策略:異步,全同步,半同步

異步:這是默認(rèn)的復(fù)制策略,master在執(zhí)行完客戶端的請(qǐng)求后,會(huì)立即將結(jié)果返給客戶端,并不關(guān)心slave是否已經(jīng)接受并處理,這樣就會(huì)帶來一個(gè)問題,當(dāng)master宕機(jī)時(shí),master的數(shù)據(jù)可能還沒有全部傳輸?shù)絪lave上,如果此時(shí),強(qiáng)行將slave提升為master,就會(huì)造成數(shù)據(jù)不完整。
全同步:當(dāng)master執(zhí)行完一個(gè)客戶端的請(qǐng)求后,會(huì)等待所有的slave執(zhí)行完數(shù)據(jù)復(fù)制后才將事務(wù)返還給客戶端,然而這樣性能會(huì)受到嚴(yán)重的影響。
半同步:介于上述兩者之間,當(dāng)master執(zhí)行完客戶端的請(qǐng)求后,會(huì)等待至少一臺(tái)slave完成數(shù)據(jù)復(fù)制才會(huì)將事務(wù)返還給客戶端,這樣提高了數(shù)據(jù)的安全性,但是也造成了一定程度的延遲,所以,半同步最好在延遲低的網(wǎng)絡(luò)中使用。

9.開啟半同步復(fù)制

主上
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
SET GLOBAL rpl_semi_sync_master_enabled=ON;
SHOW GLOBAL VARIABLES LIKE 'rpl_semi%';

| rpl_semi_sync_master_enabled | ON |
| rpl_semi_sync_master_timeout | 10000 |
| rpl_semi_sync_master_trace_level | 32 |
| rpl_semi_sync_master_wait_no_slave | ON |
+------------------------------------+-------+
從上
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
MariaDB [mydb]> STOP SLAVE IO_THREAD;
MariaDB [mydb]> SET GLOBAL rpl_semi_sync_slave_enabled = ON ;
MariaDB [mydb]> START SLAVE ;
MariaDB [mydb]> SHOW GLOBAL VARIABLES LIKE 'rpl_semi%';
查看是否生效
Tail -200 /var/log/mariadb/mariadb.log,有以下記錄則生效
mysql主從復(fù)制筆記

10.MHA

1)
是什么:(Master HA),即主高可用,它為mysql主從復(fù)制架構(gòu)提供了自動(dòng)成為主的功能,當(dāng)master宕機(jī)的時(shí)候,mha會(huì)監(jiān)控到故障的節(jié)點(diǎn),并且提升擁有最新數(shù) 據(jù)的slave節(jié)點(diǎn)成為新的master,并且還會(huì)自動(dòng)通過其他節(jié)點(diǎn)獲得額外的信息來避免一致性方面的問題,mha還提供了master在線切換的功能,即按需要切換master/slave節(jié)點(diǎn)。
2)MHA工作原理總結(jié)
?從宕機(jī)崩潰的master保存二進(jìn)制日志事件
?識(shí)別含有最新更新的slave
?應(yīng)用差異的中繼日志到其他的slave
?應(yīng)用從master保存的二進(jìn)制日志事件
?提升一個(gè)slave為新的master
?使用其他的slave連接新的master進(jìn)行復(fù)制

11.Mysql高可用架構(gòu)之MHA

1)環(huán)境準(zhǔn)備
一臺(tái)做manager節(jié)點(diǎn),一臺(tái)做master節(jié)點(diǎn),一臺(tái)以上的slave節(jié)點(diǎn)。
2)在各節(jié)點(diǎn)的/etc/hosts文件配置內(nèi)容中添加:
172.17.253.25 node1.magedu.com node1
172.17.253.127 node2.magedu.com node2
172.17.253.191node3.magedu.com node3
這樣做的目的是在今后的工作中,能夠通過域名對(duì)應(yīng)的編號(hào)更快速的找到故障的機(jī)器
3)matse節(jié)點(diǎn)配置
[mysqld]
Server-id=1
Log-bin=master-log
Relay-log=relay-log
Skip_name_resolve=ON
slave節(jié)點(diǎn)配置
[mysqld]
server-id = 12
relay-log = relay-log
log-bin = master-log
read_only = ON
relay_log_purge = 0
skip_name_resolve = YES
4)做好主從復(fù)制,確保slave和master工作正常,在slave上的IO和SQL線程正常鏈接(上面有)
5)準(zhǔn)備基于ssh互相通信環(huán)境
ssh-keygen -t rsa #生成密鑰
ssh-copy-id root@172.17.253.191 #將公鑰傳給需要面密碼登陸的機(jī)器,輸入yes和密碼后,就成功了。
6)在master上安裝
mha4mysql-manager-0.56-0.el6.noarch.rpm 和mha4mysql-node-0.56-0.el6.norch.rpm.
在master和所有slave節(jié)點(diǎn)上安裝 mha4mysql-node-0.56-0.el6.norch.rpm.
7)定義mha的配置文件
mysql主從復(fù)制筆記
8)在manager上檢測各個(gè)節(jié)點(diǎn)之間的ssh通信是否OK
mysql主從復(fù)制筆記
OK后檢測復(fù)制集群的鏈接配置是否正常
mysql主從復(fù)制筆記
如果有報(bào)錯(cuò),就看報(bào)錯(cuò)提示的是什么,可能是權(quán)限問題,可能是防火墻問題,也可能是主從復(fù)制沒有實(shí)現(xiàn)等等
9)啟動(dòng)mha
mysql主從復(fù)制筆記
檢測開啟狀態(tài)
mysql主從復(fù)制筆記
10)模擬master故障,關(guān)掉master上的mariadb服務(wù),檢測manager.log日志查看是否master自動(dòng)轉(zhuǎn)移到了slave上面。
11)轉(zhuǎn)移成功后,再將master和slave配置好,然后啟動(dòng)mha服務(wù)就OK了


本文標(biāo)題:mysql主從復(fù)制筆記
轉(zhuǎn)載源于:http://weahome.cn/article/jpjcpj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部