1. 程式人生 > >45、mysql主從複製應用擴充套件

45、mysql主從複製應用擴充套件

mysql主從複製應用擴充套件


1.主從伺服器的時間要同步(NTP)

建立一個時間伺服器

*/5 * * * * /user/sbin/ntpdate ntpserver &> /dev/null

2.如何限制從伺服器只讀(配置在mysqld中)

在從伺服器上啟動read-only=ON

注意:僅能限制那不具有super許可權的使用者無法執行寫操作,root的使用者不受限

從伺服器

SHOW GLOBAL VARIABLES LIKE '%read_only%';

主伺服器

use mysql

GRANT ALL ON mydb.* TO 'testuser'@'192.168.130.%' IDENTIFIED BY 'testpass';

SELECT User,Host,Password FROM user; 

mysql -utestuser -h192.168.130.62 -p

use mydb;

MariaDB [mydb]> CREATE TABLE t1;

ERROR 1290 (HY000): The MariaDB server is running with the --read-only option so it cannot execute this statement

想限制所有使用者,啟用screen在裡面執行

FLUSH TABLES WITH READ LOCK;


3.如何主從複製時的事務安全?(在)

sync_binlog=1 (每當有事務提交時,立即將與二進位制日誌緩衝區中的內容同步到二進位制日誌檔案)


4.半同步複製

主伺服器發起任何寫操作時,這些寫操作必須寫到二進位制日誌中,並通知給從伺服器。從伺服器必須在本地完成資料修改然後反饋主伺服器寫操作已完成,主伺服器再返饋前端OK。

多個從找一個反映最快的來響應,為了確保主從的資料一致。

/usr/local/mysql/lib/plugin/semisync_master.so 在主伺服器上安裝

/usr/local/mysql/lib/plugin/semisync_slave.so

在離主伺服器最近的從伺服器上安裝

主伺服器

mysql

INSTALL PLUGIN RPL_SEMI_SYNC_MASTER SONAME 'semisync_master.so';

SHOW GLOBAL VARIABLES LIKE '%semi%';

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

| Variable_name                      | Value        |

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

| rpl_semi_sync_master_enabled       | OFF          | 是否啟動半同步功能

| rpl_semi_sync_master_timeout       | 10000        | 連線從節點的超時時間

| rpl_semi_sync_master_trace_level   | 32           |

| rpl_semi_sync_master_wait_no_slave | ON           | 是否檢測半同步從節點上線

| rpl_semi_sync_master_wait_point    | AFTER_COMMIT |

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

SET GLOBAL rpl_semi_sync_master_enabled = ON;

SET GLOBAL  rpl_semi_sync_master_timeout = 10000; 

從伺服器

mysql

INSTALL PLUGIN RPL_SEMI_SYNC_SLAVE SONAME 'semisync_slave.so';

SHOW GLOBAL VARIABLES LIKE '%semi%';

SET global rpl_semi_sync_slave_enabled = ON

STOP SLAVE io_therad;

START SLAVE io_therad;

在主伺服器驗證半同步

SHOW GLOBAL STATUS LIKE '%semi%';

解除安裝外掛:

INSTALL PLUGIN plugin_name SONAME 'shared_library_name'

UNINSTALL PLUGIN plugin_name

半同步複製一旦某次等待超時,會自動降級為非同步

5、複製過濾器(僅複製主伺服器部分資料):

可以在主伺服器上過濾也可以在從伺服器上過濾,考慮的及時點還原問題,一般在從伺服器上做過濾。


master上做過濾:

binlog_do_db=(白名單)

binlog_ignore_db=(黑名單)

slave上做過濾

replicate_do_db=(資料庫白名單)

replicate_ignore_db=(資料庫黑名單)

replicate_do_table= db_name.table_name (資料庫白名單)

replicate_ignore_db= db_name.table_name (資料庫黑名單)

使用正則表示式

replicate_wild_do_table=

replicate_wild_igonre_table=


想配置永久有效,將其配置到my.cnf的[mysqld]下。