在線更改復(fù)制過濾選項(xiàng)的方法

如何在線更改復(fù)制過濾選項(xiàng)?針對這個問題,今天小編總結(jié)這篇有關(guān)修改復(fù)制過濾的文章,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。

成都創(chuàng)新互聯(lián)公司是專業(yè)的威縣網(wǎng)站建設(shè)公司,威縣接單;提供網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行威縣網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

前言: 

MySQL最常用的架構(gòu)就是主從復(fù)制了,其實(shí)主從復(fù)制有很多選項(xiàng),特別是在從庫端,我們可以設(shè)置復(fù)制過濾,比如說忽略某張表或某個庫。這些過濾選項(xiàng)都是可以在線修改而不用重啟的。原來對這塊了解不多,最近看了下相關(guān)資料,個人覺得這個功能還是很方便的,本篇文章會將這塊內(nèi)容分享給大家。

1.復(fù)制過濾參數(shù)介紹

首先我們要了解設(shè)置復(fù)制過濾的不同參數(shù)。復(fù)制過濾是在從庫端設(shè)置的,可以只復(fù)制某些庫或某些表,也可以忽略復(fù)制某些庫或某些表。這些都是由不同參數(shù)控制的,下面簡單介紹下不同參數(shù)的作用。

  • REPLICATE_DO_DB:指定只同步某個庫的數(shù)據(jù)
  • REPLICATE_IGNORE_DB:忽略某個庫的同步
  • REPLICATE_DO_TABLE:指定同步某個表
  • REPLICATE_IGNORE_TABLE:忽略某個表的同步
  • REPLICATE_WILD_DO_TABLE:指定同步某些表,可以用通配符
  • REPLICATE_WILD_IGNORE_TABLE:忽略某些表的同步,可以用通配符
  • REPLICATE_REWRITE_DB:從庫端替換庫名

這些復(fù)制過濾參數(shù)還是很好理解的,只看名字就能大概了解該參數(shù)的作用。默認(rèn)情況下,這些參數(shù)是都沒有設(shè)置的,開啟主從復(fù)制后從庫端會默認(rèn)同步全部從主庫發(fā)來的數(shù)據(jù)。

2.修改復(fù)制過濾選項(xiàng)

當(dāng)我們想臨時調(diào)整從庫的復(fù)制策略時,可以設(shè)置上述參數(shù)。我們可以將過濾參數(shù)寫入配置文件然后重啟從庫即可應(yīng)用,但這種方法需要重啟實(shí)例,不做推薦。MySQL5.7版本可以進(jìn)行在線設(shè)置復(fù)制過濾了。但是還是得停復(fù)制,不過不用重啟實(shí)例了,方便進(jìn)行臨時性的調(diào)整。主要用到的是CHANGE REPLICATION FILTER語句,下面就簡單的測試一下:

# 默認(rèn)未設(shè)置復(fù)制過濾
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.3.16
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000004
          Read_Master_Log_Pos: 35198
               Relay_Log_File: relay-bin.000002
                Relay_Log_Pos: 910
        Relay_Master_Log_File: binlog.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 35198

 # 設(shè)置忽略db1庫的復(fù)制
 mysql> STOP SLAVE SQL_THREAD;
Query OK, 0 rows affected (0.00 sec)

mysql> CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB = (db1);
Query OK, 0 rows affected (0.00 sec)

mysql> START SLAVE SQL_THREAD;
Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.3.16
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000004
          Read_Master_Log_Pos: 35198
               Relay_Log_File: relay-bin.000002
                Relay_Log_Pos: 910
        Relay_Master_Log_File: binlog.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: db1
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 35198

# 主庫創(chuàng)建db1測試從庫是否同步
mysql> CREATE DATABASE `db1` DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db1                |
| mysql              |
| performance_schema |
| sys                |
| testdb             |
+--------------------+
6 rows in set (0.00 sec)
# 查看從庫狀態(tài)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testdb             |
+--------------------+
5 rows in set (0.00 sec)

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.3.16
                  Master_User: repl
                  Master_Port: 33061
                Connect_Retry: 60
              Master_Log_File: binlog.000004
          Read_Master_Log_Pos: 35383
               Relay_Log_File: relay-bin.000002
                Relay_Log_Pos: 1095
        Relay_Master_Log_File: binlog.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: db1
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 35383

# 取消復(fù)制過濾參數(shù)
mysql> STOP SLAVE SQL_THREAD;
Query OK, 0 rows affected (0.01 sec)

mysql> CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB = ();
Query OK, 0 rows affected (0.00 sec)

mysql> START SLAVE SQL_THREAD;
Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.3.16
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000004
          Read_Master_Log_Pos: 35383
               Relay_Log_File: relay-bin.000002
                Relay_Log_Pos: 1095
        Relay_Master_Log_File: binlog.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 35383

上面我們簡單演示了下使用CHANGE REPLICATION FILTER語句在線修改復(fù)制過濾選項(xiàng)的方法,列舉的那些過濾參數(shù)都可以使用該語句修改,不過要注意有些選項(xiàng)是互斥的。應(yīng)該按照實(shí)際需求去設(shè)置合適的參數(shù),下面給出官方文檔中的示范語法:

CHANGE REPLICATION FILTER filter[, filter][, ...]

filter:
    REPLICATE_DO_DB = (db_list)
  | REPLICATE_IGNORE_DB = (db_list)
  | REPLICATE_DO_TABLE = (tbl_list)
  | REPLICATE_IGNORE_TABLE = (tbl_list)
  | REPLICATE_WILD_DO_TABLE = (wild_tbl_list)
  | REPLICATE_WILD_IGNORE_TABLE = (wild_tbl_list)
  | REPLICATE_REWRITE_DB = (db_pair_list)

db_list:
    db_name[, db_name][, ...]

tbl_list:
    db_name.table_name[, db_table_name][, ...]
wild_tbl_list:
    'db_pattern.table_pattern'[, 'db_pattern.table_pattern'][, ...]

db_pair_list:
    (db_pair)[, (db_pair)][, ...]

db_pair:
    from_db, to_db

關(guān)于在線更改復(fù)制過濾選項(xiàng)的方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

分享名稱:在線更改復(fù)制過濾選項(xiàng)的方法
網(wǎng)址分享:http://muchs.cn/article30/ihecso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊網(wǎng)站內(nèi)鏈、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航企業(yè)建站、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)