2、MYSQL bin-log 日志
1、解釋:二進(jìn)制日志
2、開始bin-log日志
配置文件中添加:
log-bin = mysql-bin(mysql-bin是文件的文件名)
3、查看是否開啟log-bin
命令:
show variables like "%log-bin%"
4、與bin-log有關(guān)的日志刷新
1、flush logs :
此時(shí)就會多一個(gè)最新的bin-log日志
2、show master status; :
查看最后一個(gè)bin日志
3、reset master :
清空所有的bin-log日志
4、查看bin-log值日的內(nèi)容:
命令:mysqlbinlog --no-defaults mysql-bin.00001 (--no-defaults:這個(gè)指令的作用就在于字符集的問題,原因可能是mysql開發(fā)的BUG)
注:這個(gè)命令好像有點(diǎn)不對,不知是不是我寫錯(cuò)了,2014-5-31:01:51:39,待查
3、MYSQL 主從復(fù)制
1、Mysql 數(shù)據(jù)的備份和數(shù)據(jù)丟失之后的找回
1、MYSQL 備份語句:
mysqldump -u root -p123 test(庫名) -l -F > /tmp/test.sql
解釋:其中 -l表示的意思,就是在備份期間鎖定數(shù)據(jù)庫,不能進(jìn)行讀寫操作,而-F的作用是,重新生成新的日志文件,也包括log-bin日志
2、MYSQL 恢復(fù)語句:
mysql -uroot -p123 < test.sql
3、問題:
假設(shè)數(shù)據(jù)庫備份的時(shí)間是在9點(diǎn),但是服務(wù)器掛掉的時(shí)間是在10點(diǎn),問如何恢復(fù)9點(diǎn)到10點(diǎn)之間的數(shù)據(jù)
回答:
可以通過mysql的log-bin日志來恢復(fù)9點(diǎn)到10點(diǎn)之間的數(shù)據(jù),用的的命令是 mysqlbinlog :
命令示范: mysqlbinlog --no-default mysql-bin.00001 --stop-position='280' | mysql -uroot -p123 test
命令解釋:--stop-position='280' 這個(gè)參數(shù),是指定需要恢復(fù)到哪條數(shù)據(jù)為止
:--start-position='106' 這個(gè)參數(shù),是指從哪條數(shù)據(jù)開始恢復(fù)
:test 指的是要被恢復(fù)的數(shù)據(jù)庫
4、MYSQL 的讀寫鎖定:不適用 mysqldump(此命令已經(jīng)自帶參數(shù) -l 進(jìn)行鎖定,并自動解鎖)
鎖定語句:flush tables with read lock;
解鎖語句:unlock tables;
2、 MYSQL 的主從服務(wù)器配置:
1、MYSQL 主服務(wù)器的配置:
1、需要開啟:
log-bin = mysql-bin(logs的文件名)
2、設(shè)置唯一的server-id:
server-id = 1 備注:取值范圍 1 到 2的32次方 減 1
3、在主服務(wù)器上為從服務(wù)器建立訪問權(quán)限:
命令:
grant all on *.* to user@192.168.2.1 identified by 123
解釋:
在主服務(wù)器上建立一個(gè)擁有全部權(quán)限的用戶user,操作范圍是所有庫和所有表,用戶user的地址就是192.168.2.1,密碼為123.注意:在訪問時(shí)如果地址不正 確,則亦訪問不了
4、備注:
1、主服務(wù)器配置文件選項(xiàng):
binlog-do-db=mysql #需要備份的數(shù)據(jù)庫名,如果備份多個(gè)數(shù)據(jù)庫,重復(fù)設(shè)置這個(gè)選項(xiàng)即可
binlog-ignore-db=mysql #不需要備份的數(shù)據(jù)庫名,如果備份多個(gè)數(shù)據(jù)庫,重復(fù)設(shè)置這個(gè)選項(xiàng)即可
log-slave-updates #這個(gè)參數(shù)一定要加上,否則不會給更新的記錄些到二進(jìn)制文件里
slave-skip-errors #是跳過錯(cuò)誤,繼續(xù)執(zhí)行復(fù)制操作
2、MYSQL 從服務(wù)器的配置:
1、需要開啟:
log-bin = mysql-bin
2、設(shè)置唯一的server-id:
server-id = 2
3、在從服務(wù)器的配置文件中,需要指定訪問的主服務(wù)器的地址,端口以及所用到的用戶名
實(shí)例:
master-host = 192.168.2.2
master-user = user
master-pass = 123
maste-port = 3306
master-connect-retry = 60 #如果從服務(wù)器發(fā)現(xiàn)主服務(wù)器斷掉,重新連接的時(shí)間差(秒)
replicate-do-db = test #需要備份的數(shù)據(jù)庫名
replicate-ignore-db=test #忽略的數(shù)據(jù)庫
log-slave-updates #這個(gè)參數(shù)一定要加上,否則不會給更新的記錄些到二進(jìn)制文件里
slave-skip-errors #是跳過錯(cuò)誤,繼續(xù)執(zhí)行復(fù)制操作
備注:
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name',
-> MASTER_USER='replication_user_name',
-> MASTER_PASSWORD='replication_password',
-> MASTER_LOG_FILE='recorded_log_file_name',
-> MASTER_LOG_POS=recorded_log_position;
4、在從服務(wù)器上啟動slave進(jìn)程
命令:
mysql> start slave;
5、查看配置結(jié)果(status)
命令:
show slave status;
3、配之中常見的問題:
1、一般的異常只需要選擇跳過一步即可解決
命令:-->slave stop;
-->SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 ;
-->slave start;
2、主鍵沖突,表已存在等錯(cuò)誤:
方案:在 MYSQL 主服務(wù)器配置文件中跳過此類異常,繼續(xù)下一步
slave_skip_errors = 1062, 1032, 1060
4、備注:
1、
當(dāng)一個(gè)從服務(wù)器連接到主服務(wù)器時(shí),它通知主服務(wù)器從服務(wù)器在日志中讀取的最后一次成功更新的位置。從服務(wù)器接收從那時(shí)起發(fā)生的任何更新,然后封鎖并等待主服務(wù)器通知下一次更新。
2、
MySQL使用3個(gè)線程來執(zhí)行復(fù)制功能(其中1個(gè)在主服務(wù)器上,另兩個(gè)在從服務(wù)器上。當(dāng)發(fā)出 START SLAVE 時(shí),從服務(wù)器創(chuàng)建一個(gè)I/O線程,以連接主服務(wù)器并讓主服務(wù)器發(fā)送二進(jìn)制日志。主服務(wù)器創(chuàng)建一個(gè)線程將二進(jìn)制日志中的內(nèi)容發(fā)送到從服務(wù)器。從服務(wù)器I/O 線程讀取主服務(wù)器Binlog Dump線程發(fā)送的內(nèi)容并將該數(shù)據(jù)拷貝到從服務(wù)器數(shù)據(jù)目錄中的本地文件中,即中繼日志。第3個(gè)線程是SQL線程,從服務(wù)器使用此線程讀取中繼日志并執(zhí)行日 志中包含的更新。SHOW PROCESSLIST 語句可以查詢在主服務(wù)器上和從服務(wù)器上發(fā)生的關(guān)于復(fù)制的信息
3、
默認(rèn)中繼日志使用host_name-relay-bin.nnnnnn形式的文件名,其中 host_name 是從服務(wù)器主機(jī)名,nnnnnn是序列號。用連續(xù)序列號來創(chuàng)建連續(xù)中繼日志文件,從000001開始。從服務(wù)器跟蹤中繼日志索引文件來識別目前正使用的中 繼日志。默認(rèn)中繼日志索引文件名為host_name-relay-bin.index。在默認(rèn)情況,這些文件在從服務(wù)器的數(shù)據(jù)目錄中被創(chuàng)建。中繼日志與 二進(jìn)制日志的格式相同,并且可以用mysqlbinlog讀取。當(dāng)SQL線程執(zhí)行完中繼日志中的所有事件后,中繼日志將會被自動刪除。
4、
在主服務(wù)器上為復(fù)制設(shè)置一個(gè)連接賬戶。該賬戶必須授予 REPLICATION SLAVE 權(quán)限。如果賬戶僅用于復(fù)制(推薦這樣做),則不需要再授予任何其它權(quán)限。
4、MYSQL 分區(qū)技術(shù)
需鞏固的地方:
1、可能需要用到的 Linux 命令:
1、pstree
2、ifconfig eth0 192.168.2.1
3、scp
2、window 命令:
3、Mysql 命令:
1、show status; /G
單詞:
client -> 客戶端
variable 變量
replicate 復(fù)制
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com