MySQL主從復制,mysql show status 過濾_在線更改復制過濾選項的方法

 2023-10-20 阅读 23 评论 0

摘要:在線更改復制過濾選項的方法發布時間:2020-06-06 14:06:39來源:億速云閱讀:191MySQL主從復制、作者:Leah如何在線更改復制過濾選項?針對這個問題,今天小編總結這篇有關修改復制過濾的文章,希望能幫助更多想解決這個問題的朋

在線更改復制過濾選項的方法

發布時間:2020-06-06 14:06:39

來源:億速云

閱讀:191

MySQL主從復制、作者:Leah

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

前言:

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

1.復制過濾參數介紹

mysql生成showdoc文檔,首先我們要了解設置復制過濾的不同參數。復制過濾是在從庫端設置的,可以只復制某些庫或某些表,也可以忽略復制某些庫或某些表。這些都是由不同參數控制的,下面簡單介紹下不同參數的作用。REPLICATE_DO_DB:指定只同步某個庫的數據

REPLICATE_IGNORE_DB:忽略某個庫的同步

REPLICATE_DO_TABLE:指定同步某個表

REPLICATE_IGNORE_TABLE:忽略某個表的同步

REPLICATE_WILD_DO_TABLE:指定同步某些表,可以用通配符

row number over partition by去重,REPLICATE_WILD_IGNORE_TABLE:忽略某些表的同步,可以用通配符

REPLICATE_REWRITE_DB:從庫端替換庫名

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

2.修改復制過濾選項

當我們想臨時調整從庫的復制策略時,可以設置上述參數。我們可以將過濾參數寫入配置文件然后重啟從庫即可應用,但這種方法需要重啟實例,不做推薦。MySQL5.7版本可以進行在線設置復制過濾了。但是還是得停復制,不過不用重啟實例了,方便進行臨時性的調整。主要用到的是CHANGE REPLICATION FILTER語句,下面就簡單的測試一下:# 默認未設置復制過濾

status?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

mysql,Master_Port: 3306

Connect_Retry: 60

Master_Log_File: binlog.000004

Read_Master_Log_Pos: 35198

Relay_Log_File: relay-bin.000002

MySQL復制表?Relay_Log_Pos: 910

Relay_Master_Log_File: binlog.000004

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

mysql where。Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

MySQL 去重?Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 35198

# 設置忽略db1庫的復制

mysql drop?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;

mysql show、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

show status bar。Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: binlog.000004

Read_Master_Log_Pos: 35198

Mysql主從復制?Relay_Log_File: relay-bin.000002

Relay_Log_Pos: 910

Relay_Master_Log_File: binlog.000004

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

mysql顯示表結構show?Replicate_Do_DB:

Replicate_Ignore_DB: db1

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

MySQL查詢去重、Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 35198

Mysql命令,# 主庫創建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)

# 查看從庫狀態

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

# 取消復制過濾參數

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語句在線修改復制過濾選項的方法,列舉的那些過濾參數都可以使用該語句修改,不過要注意有些選項是互斥的。應該按照實際需求去設置合適的參數,下面給出官方文檔中的示范語法: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

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

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/152899.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息