天天看點

mysql主從複制主從複制的模式模式的配置使用修改主庫的配置檢視主從複制的模式指令行切換主從複制binlog模式mysql -uroot -p123 -e 'create database weibo;'mysql -uroot -p123 weibo < weibo.sqlhead -25 weibo.sql

mysql主從複制的三種模式(binlog的三種模式)

主從複制的模式

STATEMENT模式(SBR)

每一條修改資料庫的語句都會被記錄到binlog中

優點是不會記錄每一條sql語句和每一行的資料變化,減少了bin-log的日志量 節約IO 提高性能

缺點是某些情況下會導緻主從資料不一緻

ROW模式(PBR)

不記錄sql語句的上下文資訊,僅僅記錄那條資料被修改了,不會出現某些特定情況下的存儲過程、或function、或trigger的調用和觸發無法被正确複制的問題。缺點是會産生大量的日志,尤其是altertable的時候會讓日志暴漲

MIXED模式(MBR)

以上兩種模式的混合,一般的複制使用SBR模式儲存binlog,對于SBR無法複制的操作使用PBR儲存binlog

mysql會根據執行的語句選擇日志儲存方式,建議使用

模式的配置使用

修改主庫的配置

binlog_format=MIXED | ROW | STATEMENT

重新開機

檢視主從複制的模式

mysql> show variables like "%binlog_format%";

指令行切換主從複制binlog模式

mysql> set global binlog_format='MIXED';

2,主從複制

mysqldump -uroot -p123 --routines --single_transaction --master-data=2 --databases weibo > weibo.sql

參數說明:

--routines:導出存儲過程和函數

--single_transaction:導出開始時設定事務隔離狀态,并使用一緻性快照開始事務,然後unlock tables;而lock-tables是鎖住一張表不能寫操作,直到dump完畢。

--master-data:預設等于1,将dump起始(change master to)binlog點和pos值寫到結果中,等于2是将change master to寫到結果中并注釋。

  1. 從庫導入備份庫

mysql -uroot -p123 -e 'create database weibo;'

mysql -uroot -p123 weibo < weibo.sql

  1. 在備份檔案weibo.sql檢視binlog和pos值

head -25 weibo.sql

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; #大概22行

從庫設定從這個日志點同步,并啟動

mysql> change master to master_host='192.168.18.212',

-> master_user='sync',

-> master_password='sync',

-> master_log_file='mysql-bin.000001',

-> master_log_pos=107;

mysql> start slave;

mysql> show slave status\G;

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id: 90

Current database: NONE

1. row **

Slave_IO_State: Waiting for master to send event 
     Master_Host: 192.168.18.212 
     Master_User: sync 
     Master_Port: 3306 
    Connect_Retry: 60 
   Master_Log_File: mysql-bin.000001 
 Read_Master_Log_Pos: 358 
    Relay_Log_File: mysqld-relay-bin.000003 
    Relay_Log_Pos: 504 
Relay_Master_Log_File: mysql-bin.000001 
   Slave_IO_Running: Yes 
  Slave_SQL_Running: Yes