centos7 mysql启动失败_Mysql主从复制
?好在,別人如何分析我,跟我本身是一點(diǎn)關(guān)系也沒有的。(by 三毛)
主從復(fù)制的常見用途
1.數(shù)據(jù)備份
對(duì)備份來說,復(fù)制是一項(xiàng)很有意義的技術(shù)補(bǔ)充,但復(fù)制既不是備份也不能取代備份
2.負(fù)載均衡(讀寫分離)
通過MySQL主從復(fù)制,可以把寫操作放在主庫(master),讀取操作放在多個(gè)從庫(slave),能夠很好的將負(fù)載分離到不同的MySQL服務(wù)器上,從而減輕單一數(shù)據(jù)庫的操作壓力
3.高可用性和故障切換
復(fù)制能夠幫助應(yīng)用程序避免MySQL單點(diǎn)失敗,當(dāng)主庫(master)發(fā)生故障后,可以立馬切換到從庫(slave),降低服務(wù)器數(shù)據(jù)風(fēng)險(xiǎn)。
4.MySQL升級(jí)測試
使用一個(gè)更高版本的MySQL作為備庫,保證在升級(jí)全部實(shí)例前,查詢能夠在備庫預(yù)期執(zhí)行
主從復(fù)制的原理
面試題:1 主從復(fù)制是如何工作的?2 簡單介紹下主從復(fù)制的基本原理?Plus版
1.主庫將數(shù)據(jù)更改記錄到二進(jìn)制日志(Binary Log)
2.從庫將主庫上的日志復(fù)制到自己的中繼日志(Relay Log)中
3.從庫讀取中繼日志中的事件,將其重放到從庫數(shù)據(jù)之上
大眾
主庫(master)記錄下自己的操作日志,授權(quán)從庫可以讀取操作日志,從庫(slave)會(huì)開啟兩個(gè)線程。
- IO線程 負(fù)責(zé)連接主庫(master) 連接成功后,睡眠并等待主庫(master)產(chǎn)生新的事件,有新的就保存到自己的中繼日志中,中繼日志通常位于操作系統(tǒng)的緩存中,所以開銷很小。
- sql進(jìn)程 負(fù)責(zé)執(zhí)行中繼日志中的sql操作,這樣從庫(slave)的內(nèi)容就和主庫(master)的一致了
執(zhí)行步驟
第一步
主庫記錄二進(jìn)制日志,在每次更新事件(update、insert、delete)事務(wù)提交前,主庫會(huì)將數(shù)據(jù)更新的事件寫入二進(jìn)制日志中(Binary Log)
第二步
從庫會(huì)啟動(dòng)一個(gè)工作線程(I/O線程),I/O線程會(huì)跟主庫建立一個(gè)客戶端連接,然后主庫會(huì)啟動(dòng)一個(gè)特殊的二進(jìn)制轉(zhuǎn)儲(chǔ)(binlog dump)線程,這個(gè)線程會(huì)讀取主庫中的二進(jìn)制日志中的事件并將其讀到的binlog的內(nèi)容發(fā)到從庫
第三步
從庫的SQL線程執(zhí)行最后一步,該線程從中繼日志中讀取更新事件并在從庫執(zhí)行,從而實(shí)現(xiàn)從庫的數(shù)據(jù)更新
配置主從復(fù)制(以Centos 7 為例)
首先
停止對(duì)主庫(master)數(shù)據(jù)庫的操作,把主庫(master)中的數(shù)據(jù)庫全部導(dǎo)入到從庫(slave),使兩邊數(shù)據(jù)庫完全一致。
小提示 主從配置需要注意的點(diǎn)1 主從服務(wù)器操作系統(tǒng)版本和位數(shù)一致2 主庫和從庫的版本保持一致(注:從庫的版本可以高于主庫,但一定不能低于主庫)3 主庫和從庫的數(shù)據(jù)要一致4 主庫開啟二進(jìn)制日志,主庫和從庫的server_id在局域網(wǎng)內(nèi)必須各自唯一主庫(master)配置
1.創(chuàng)建復(fù)制賬號(hào)
MySQL會(huì)給一些特殊權(quán)限到復(fù)制線程,從庫的I/O線程會(huì)創(chuàng)建一個(gè)連接到主庫的TCP/IP連接,這就需要主庫上創(chuàng)建一個(gè)復(fù)制用戶,并賦予其合適的權(quán)限,語句如下
mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO repl@'%' IDENTIFIED BY '123456';2.修改主庫的配置文件
修改master的配置文件,使用二進(jìn)制日志,指定server-id,重啟服務(wù)。
cd /etc/vi my.cnf添加如下配置
log_bin=mysql-bin //[*]啟用二進(jìn)制日志server_id=10 //[*]服務(wù)器唯一ID配置完成后需要重啟mysqlserver才能生效。
systemctl restart mysqld3.檢查二進(jìn)制日志文件名
mysql> show master status;從庫(slave)配置
1.修改配置文件my.cnf
vi /etc/my.cnf添加如下配置
log_bin=mysql-binserver_id=2relay_log=/var/lib/mysql/mysql-relay-binlog_slave_updates=1read_only=12.將從庫(slave)指向主庫(master)
CHANGE MASTER TO MASTER_HOST='你主庫的IP地址',MASTER_USER='你創(chuàng)建的復(fù)制用戶名',MASTER_PASSWORD='密碼',MASTER_LOG_FILE='你的二進(jìn)制日志文件名',MASTER_LOG_POS=主庫查到的Position;3.啟動(dòng)slave
mysql>start slave;4.查看slave狀態(tài)
mysql> mysql slave statusG結(jié)果中有兩個(gè)重要數(shù)據(jù)項(xiàng):
Slave_IO_Running: Yes IO線程狀態(tài),必須YESSlave_SQL_Running: Yes SQL線程狀態(tài),必須YES測試
我搭建了兩套CentOS7環(huán)境,給大家演示一下.
mysql主從復(fù)制Testhttps://www.zhihu.com/video/1191670270795292672掃碼關(guān)注左羊公社,回復(fù)關(guān)鍵字“面試”,即可無套路獲取JAVA面試資源?。?
更多精彩內(nèi)容
請(qǐng)關(guān)注左羊公社
總結(jié)
以上是生活随笔為你收集整理的centos7 mysql启动失败_Mysql主从复制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jsp做看板_如何使用看板做敏捷开发
- 下一篇: 修改器内置脚本编写_Node.js 中实