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