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上並行操作。
從庫開啓bin-log的參數:
1. 開始log_bin on
2. log_salve_updates on
授權從庫賬號:
grant replication slave on db2.* to salve@"10.0.0.%" identified by 'XXXXX';