mysql數據庫複製—主從

   數據庫複製的原理:master將操作記錄到二進制日誌binlog,slave的IO線程連接master的dump線程來讀取binlog並將其保存至中繼日誌relaylog,slave的另外一個SQL線程去重放relay-log中的操作來實現和master數據同步。

一、實現環境

    centos

    master:172.16.20.245

    slave:172.16.20.219

    兩數據庫均是新安裝

二、master安裝配置

     1master修改配置文件

     #vim /etc/my.cnf

      [mysqld]   

      log-bin = master-bin                   #開啓二進制日誌

      log-bin-index = master-bin.index       #二進制日誌索引

      binlog_format=mixed                    #二進制日誌格式,另外兩種stament、row

      innodb_file_per_table=1                #爲innodb表格開啓獨立表空間

      sync-binlog = 1                        #用於提高數據安全性

      innodb_flush_log_at_trx_commit=1       #提高innodb複製的一致性

      server-id = 10                         #指定唯一的server-id

     #service mysqld restart

     2創建複製用戶

     mysql>grant replication slave on *.* to 'user'@'172.16.20.%' identified by 'password';

     mysql>flush privileges;

     3記錄master二進制日誌記錄位置    

     mysql> show master status;

     +-------------------+----------+--------------+------------------+

     | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |

     +-------------------+----------+--------------+------------------+

     | master-bin.000001 |      341 |              |                  |

     +-------------------+----------+--------------+------------------+

     #創建用戶記錄在二進制日誌中,使其position不是107

三、slave安裝配置

    1slave修改配置文件

    #vim /etc/my.cnf

    [mysqld]   

    relay-log=relay-log                 #開啓中繼日誌

    relay-log-index=relay-log.index     #中繼日誌索引

    innodb_file_per_table=1

    read_only=1                         #slave只讀設置,保持主從數據同步

    skip-slave-start=1                  #服務器啓動時跳過複製,需要手動start slave

    server-id=20                        #指定server-id,與master必須不同

    #service mysqld restart

    2啓動複製

    mysql>CHANGE MASTER TO      

    MASTER_HOST='172.16.20.245',

    MASTER_USER='user',

    MASTER_PASSWORD='passwd',

    MASTER_LOG_FILE='master-bin.000001',

    MASTER_LOG_POS=341;

    mysql>start slave;    

    #或者單獨START SLAVE IO_Thread;START SLAVE SQL_Thread;來啓動這兩個線程

    3檢查

    mysql>show slave status\G   

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    以上連個進程啓動則表示主從複製啓動,主從複製安裝完成。

四、數據庫複製過濾

    master

    [mysqld]

    binlog-do-db=testdb 

    binlog-do-db=mydb

    僅將指定數據庫的相關修改操作記入二進制日誌,造成主端二進制日誌不完整

    binlog-ignore-db=mysql

    將指定數據庫的相關修改操作不記入二進制日誌,造成主端二進制日誌不完整

    slave

    [mysqld]

    replicate_do_db=test

    只複製test數據庫

    rpplicate_ignore_db=test

    不復制test數據庫    

    支持表級複製 

    replicate_do_table

    replicate_ignore_table

    replicate_wild_do_table   (可支持通配符,% _)

    replicate_wild_ignore_table

    建議:使用複製過濾一般在slave上,這樣可以保證master二進制日誌的完整性。






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