MySQL學習筆記

1. 對myisam引擎的備份命令:

    mysqldump --user=root --all-databases --flush-privileges --lock-all-tables --master-data=1 --flush-logs --triggers --routines --events --hex-blob > /home/data/full_dump.sql


2.對InnoDB引擎的備份命令:

    mysqldump --user=root --all-databases --flush-privileges --single-transaction --master-data=1 --flush-logs --triggers --routines(


3. key_buffer_size 該參數是Myisam引擎存儲索引的緩衝區。

    mysql> set global key_buffer_size=8*1024*1024;

    Query OK, 0 rows affected (0.01 sec)

 

4. 如何更改運行數據庫的參數:

   先set global,再修改my.cnf,實現立即生效以及重啓生效。


5. mysqlbinlog拆庫命令:

   mysqlbinlog -d db1 mysql-bin.00005 > /data/db1.sql


6. Mysqlbinlog指定起始點拆分: --result-file=name, -r name

   mysqlbinlog mysql-bin.00005 --start-position=550 --stop-position=1589 -r db1.sql


7. 主從複製原理:

  整體上來說,複製有3個步驟:   

       (1)    master將改變記錄到二進制日誌(binary log)中(這些記錄叫做二進制日誌事件,binary log events);
       (2)    slave將master的binary log events拷貝到它的中繼日誌(relay log);
        (3)    slave重做中繼日誌中的事件,將改變反映它自己的數據。

下圖描述了複製的過程:

                                  

          該過程的第一部分就是master記錄二進制日誌。在每個事務更新數據完成之前,master在二日誌記錄這些改變。MySQL將事務串行的寫入二進制日誌,即使事務中的語句都是交叉執行的。在事件寫入二進制日誌完成後,master通知存儲引擎提交事務。
       下一步就是slave將master的binary log拷貝到它自己的中繼日誌。首先,slave開始一個工作線程——I/O線程。I/O線程在master上打開一個普通的連接,然後開始binlog dump process。Binlog dump process從master的二進制日誌中讀取事件,如果已經跟上master,它會睡眠並等待master產生新的事件。I/O線程將這些事件寫入中繼日誌。
       SQL slave thread(SQL從線程)處理該過程的最後一步。SQL線程從中繼日誌讀取事件,並重放其中的事件而更新slave的數據,使其與master中的數據一致。只要該線程與I/O線程保持一致,中繼日誌通常會位於OS的緩存中,所以中繼日誌的開銷很小。
        此外,在master中也有一個工作線程:和其它MySQL的連接一樣,slave在master中打開一個連接也會使得master開始一個線程。複製過程有一個很重要的限制——複製在slave上是串行化的,也就是說master上的並行更新操作不能在slave上並行操作。

wKioL1ZNccPTxe4fAAD4CSs-C50280.jpg



   從庫開啓bin-log的參數:

   1. 開始log_bin on

   2. log_salve_updates on


  授權從庫賬號:

   grant replication slave on db2.* to salve@"10.0.0.%" identified by 'XXXXX';


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章