mysql主从服务器宕机,Mysql主从数据库配置及宕机处理
一、概要說(shuō)明
數(shù)據(jù)庫(kù)讀多寫(xiě)少,主庫(kù)負(fù)責(zé)寫(xiě),從庫(kù)負(fù)責(zé)讀。一主多從,從而解決讀多寫(xiě)少。mysql
宕機(jī)時(shí)將選擇pos最大的從庫(kù)做為新的主庫(kù),其他從庫(kù)繼續(xù)擔(dān)任本身的職責(zé)。sql
二、Mysql備份原理
簡(jiǎn)單的說(shuō)就是把 一個(gè)服務(wù)器上執(zhí)行過(guò)的sql語(yǔ)句在別的服務(wù)器上也重復(fù)執(zhí)行一遍。數(shù)據(jù)庫(kù)
主服務(wù)器master記錄數(shù)據(jù)庫(kù)操做日志到Binary log,從服務(wù)器開(kāi)啟i/o線(xiàn)程將二進(jìn)制日志記錄的操做同步到relay log(存在從服務(wù)器的緩存中),另外sql線(xiàn)程將relay log日志記錄的操做在從服務(wù)器執(zhí)行。vim
三、具體步驟
(1)須要環(huán)境緩存
系統(tǒng):CentOS服務(wù)器
軟件包:mysql-5.6.22.tar.gzapp
master服務(wù)器:192.168.*.*測(cè)試
slave服務(wù)器1:192.168.*.*ui
slave服務(wù)器2:192.168.*.*spa
(2)修改主庫(kù)服務(wù)器配置
vim?/etc/my.cnf
在主服務(wù)器master上配置開(kāi)啟Binary log,主要是在[mysqld]下面添加:
server-id=1
log-bin=master-bin
log-bin-index=ma
修改slave服務(wù)器1配置
vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin #可選項(xiàng),啟用二進(jìn)制日志,但是主庫(kù)宕機(jī)后升級(jí)從庫(kù)為主庫(kù)時(shí)仍然須要設(shè)置,因此如今一塊兒?jiǎn)⒂靡材軌?/p>
server-id=102 #必選項(xiàng),服務(wù)器惟一ID
replicate-do-db=mydb #可選項(xiàng),須要同步的數(shù)據(jù)庫(kù)名,不寫(xiě)本行表示同步全部的數(shù)據(jù)庫(kù)ster
-bin
.index
如圖:
(3)重啟mysql服務(wù)
service mysql restart
(4)修改slave服務(wù)器1配置
vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin#可選項(xiàng),啟用二進(jìn)制日志,但是主庫(kù)宕機(jī)后升級(jí)從庫(kù)為主庫(kù)時(shí)仍然須要設(shè)置,因此如今一塊兒?jiǎn)⒂靡材軌?/p>
server-id=102#必選項(xiàng),服務(wù)器惟一ID
replicate-do-db=mydb#可選項(xiàng),須要同步的數(shù)據(jù)庫(kù)名,不寫(xiě)本行表示同步全部的數(shù)據(jù)庫(kù)
其余從庫(kù),一樣的配置。
(5)重啟新配置的從服務(wù)器
service mysql restart
(6)檢查主從庫(kù)配置效果
主庫(kù):mysql> SHOW MASTER STATUS;
應(yīng)輸出以下:
從庫(kù):mysql>show slave status\G;
#如下是部分結(jié)果
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event#從庫(kù)狀態(tài),已連上主庫(kù)
Master_Host: 192.168.1.112#master地址
Master_User: mymaster#master用戶(hù)
Master_Port: 3306#master端口
Connect_Retry: 60#重試時(shí)間,默認(rèn)是60秒
Master_Log_File: mysql-bin.000001#master的binlog文件名
Read_Master_Log_Pos: 1556#同步讀取二進(jìn)制日志的位置,大于等于Exec_Master_Log_Pos
Slave_IO_Running: Yes#必須為Yes,此線(xiàn)程把master段的日志寫(xiě)到本地
Slave_SQL_Running: Yes#必須為Yes,此線(xiàn)程把寫(xiě)到本地的日志應(yīng)用于數(shù)據(jù)庫(kù)
Replicate_Do_DB:#同步數(shù)據(jù)庫(kù)名(若是有)
Replicate_Ignore_DB:?#忽略數(shù)據(jù)庫(kù)名(若是有)
Exec_Master_Log_Pos: 1556#執(zhí)行同步命令的位置
Last_IO_Errno: 0#最近IO出錯(cuò)位置
Last_IO_Error:?#最近IO出錯(cuò)信息
Last_SQL_Errno: 0#最近SQL出錯(cuò)位置
Last_SQL_Error:#最近SQL出錯(cuò)信息
Master_Server_Id: 112#master服務(wù)器ID
Master_Info_File: /data/mysqldb/master.info#master.info文件位置,位于該slave中
1 row in set (0.00 sec)
若是Slave_IO_Running和Slave_SQL_Running均為Yes,則slave配置完成
(7)接下來(lái)配置個(gè)數(shù)據(jù)庫(kù)的關(guān)聯(lián)
a、首先咱們先創(chuàng)建一個(gè)操做主從同步的數(shù)據(jù)庫(kù)用戶(hù),切換到主數(shù)據(jù)庫(kù)執(zhí)行:
mysql> create user repl;
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'從xxx.xxx.xxx.xx' IDENTIFIED BY 'mysql';
mysql> flush privileges;
1
2
3
這個(gè)配置的含義就是建立了一個(gè)數(shù)據(jù)庫(kù)用戶(hù)repl,密碼是mysql, 在從服務(wù)器使用repl這個(gè)帳號(hào)和主服務(wù)器鏈接的時(shí)候,就賦予其REPLICATION SLAVE的權(quán)限, *.* 表面這個(gè)權(quán)限是針對(duì)主庫(kù)的全部表的,其中xxx就是從服務(wù)器的ip地址。
b、進(jìn)入全部從數(shù)據(jù)庫(kù)后執(zhí)行:
mysql> change master to master_host='主xxx.xxx.xxx.xx',master_port=3306,master_user='repl',master_password='mysql',master_log_file='master-bin.000001',master_log_pos=0;
1
這里面的xxx是主服務(wù)器ip,同時(shí)配置端口,repl表明訪問(wèn)主數(shù)據(jù)庫(kù)的用戶(hù),上述步驟執(zhí)行完畢后執(zhí)行start slave啟動(dòng)配置:
mysql> start slave;
(8)主從服務(wù)器測(cè)試
在master中建立數(shù)據(jù)庫(kù),建立表,進(jìn)行增刪改操做都會(huì)被同步到全部slave中,這就說(shuō)明配置成功啦。
4、主庫(kù)宕機(jī)解決
假設(shè)發(fā)生了突發(fā)事件,master宕機(jī),如今的需求是要將192.168.1.102提高為主庫(kù),另一個(gè)為從庫(kù)
步驟:
1.確保全部的relay log所有更新完畢,在每一個(gè)從庫(kù)上執(zhí)行:
stop slave io_thread;
show processlist;
直到看到Has read all relay log,則表示從庫(kù)更新都執(zhí)行完畢了
2.登錄全部從庫(kù),查看master.info文件,對(duì)比選擇pos最大的做為新的主庫(kù),這里咱們選擇192.168.1.102為新的主庫(kù)
3.登錄192.168.1.102,執(zhí)行stop slave;
并進(jìn)入數(shù)據(jù)庫(kù)目錄,刪除master.info和relay-log.info文件, 配置my.cnf文件,開(kāi)啟log-bin,若是有l(wèi)og-slaves-updates和read-only則要注釋掉,執(zhí)行reset master
4.建立用于同步的用戶(hù)并受權(quán)slave,同第3.7步驟
5.登陸另一臺(tái)從庫(kù),執(zhí)行stop slave中止同步
6.根據(jù)第3.7步驟鏈接到新的主庫(kù)
7.執(zhí)行start slave;
8.修改新的master數(shù)據(jù),測(cè)試slave是否同步更新
總結(jié)
以上是生活随笔為你收集整理的mysql主从服务器宕机,Mysql主从数据库配置及宕机处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                        - 上一篇: jfinal 上传图片、文件
 - 下一篇: 第三发放登录网址