MySQL5.7主從複製-半同步複製搭建
兩臺伺服器,系統是Redhat6.5,MySQL版本是5.7.18。
1、開啟主庫和從庫的MySQL服務,然後安裝外掛,半同步複製外掛在目錄/usr/local/mysql/lib/plugin下
在主庫安裝semisync_master.so外掛:
在從庫安裝semisync_slave.so外掛:
注意:初次載入外掛後,MySQL會將該外掛記錄到系統表mysql.plugin中,下次啟動時系統會自動載入該外掛。
2、在my.cnf配置檔案里加入以下配置:
rpl-semi-sync-master-enabled = 1
rpl-semi-sync-slave-enabled = 1
master上主要的四個引數:
rpl_semi_sync_master_enabled=ON:表示在master上已經開啟半同步複製模式。
rpl_semi_sync_master_timeout=10000:該引數預設為10000毫秒,即10秒,可以調整,表示如果主庫在某次事務中等待事件超過10秒,則降級為非同步複製模式,不再等待slave,如果master探測到slave恢復,則會自動回到半同步模式。
rpl_semi_synv_master_wait_no_slave:表示是否允許master每個事務提交後都要等待slave的確認訊號,預設是ON,即每一個事務都會等待,如果是OFF,則slave追趕上之後,也不會回到半同步模式。
rpl_semi_sync_master_trace_level=32:表示開啟半同步複製模式時的除錯級別,預設是32。
slave上主要的兩個引數:
rpl_semi_sync_slave_enabled=ON:表示在slave上開啟半同步複製模式。
rpl_semi_sync_slave_trace_level=32:表示開啟半同步複製模式時的除錯級別,預設是32。
3、在主庫上,建立複製使用的使用者,並授予replication slave許可權。這裡建立使用者repl,可以從IP為10.10.10.210的主機進行連線。
grant replication slave on *.* to 'repl'@'10.10.10.210' identified by 'mysql';
4、修改主伺服器配置,加入如下配置:
cat /etc/my.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
log-bin-index=mysql-bin.index
binlog_format=mixed
5、在主庫上,設定讀鎖,確保沒有資料操作,獲得一個一致性的快照
flush tables with read lock;
6、然後在主庫上獲得當前二進位制日誌名和偏量值,改操作的目的是從庫啟動之後,從這個點開始恢復資料。
7、利用mysqldump匯出資料,複製至從庫伺服器。
8、主庫備份完成,恢復寫操作
unlock tables;
9、修改從庫的配置檔案,新增如下引數,注意server-id必須是唯一的,不能和主庫相同,多個從庫的話,server-id不能有重複。
cat /etc/my.cnf
[mysqld]
server-id=2
10、在從庫上,使用--skip-slave-start啟動資料庫,這樣不會立即啟動從庫上的複製程式,方便我們進行下一步配置。
./bin/mysqld_safe --skip-slave-start &
11、對從庫進行配置,指定複製使用的使用者,主庫的IP、埠以及開始執行復制的日誌檔案和位置等:
change master to
master_host='10.10.10.200',
master_port=3306,
master_user='repl',
master_password='mysql',
master_log_file='mysql-bin.000006',
master_log_pos=120;
12、在從庫上啟動slave執行緒
start slave;
13、驗證半同步模式是否開始工作
在master上檢視狀態:
在slave上檢視狀態:
14、在master透過DDL和DML操作進行同步效果驗證。
1、開啟主庫和從庫的MySQL服務,然後安裝外掛,半同步複製外掛在目錄/usr/local/mysql/lib/plugin下
在主庫安裝semisync_master.so外掛:
點選(此處)摺疊或開啟
-
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
-
Query OK, 0 rows affected (0.02 sec)
-
mysql> set global rpl_semi_sync_master_enabled=ON;
- Query OK, 0 rows affected (0.04 sec)
點選(此處)摺疊或開啟
-
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
-
Query OK, 0 rows affected (0.02 sec)
-
mysql> set global rpl_semi_sync_slave_enabled=ON;
- Query OK, 0 rows affected (0.00 sec)
2、在my.cnf配置檔案里加入以下配置:
rpl-semi-sync-master-enabled = 1
rpl-semi-sync-slave-enabled = 1
master上主要的四個引數:
rpl_semi_sync_master_enabled=ON:表示在master上已經開啟半同步複製模式。
rpl_semi_sync_master_timeout=10000:該引數預設為10000毫秒,即10秒,可以調整,表示如果主庫在某次事務中等待事件超過10秒,則降級為非同步複製模式,不再等待slave,如果master探測到slave恢復,則會自動回到半同步模式。
rpl_semi_synv_master_wait_no_slave:表示是否允許master每個事務提交後都要等待slave的確認訊號,預設是ON,即每一個事務都會等待,如果是OFF,則slave追趕上之後,也不會回到半同步模式。
rpl_semi_sync_master_trace_level=32:表示開啟半同步複製模式時的除錯級別,預設是32。
slave上主要的兩個引數:
rpl_semi_sync_slave_enabled=ON:表示在slave上開啟半同步複製模式。
rpl_semi_sync_slave_trace_level=32:表示開啟半同步複製模式時的除錯級別,預設是32。
3、在主庫上,建立複製使用的使用者,並授予replication slave許可權。這裡建立使用者repl,可以從IP為10.10.10.210的主機進行連線。
grant replication slave on *.* to 'repl'@'10.10.10.210' identified by 'mysql';
4、修改主伺服器配置,加入如下配置:
cat /etc/my.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
log-bin-index=mysql-bin.index
binlog_format=mixed
5、在主庫上,設定讀鎖,確保沒有資料操作,獲得一個一致性的快照
flush tables with read lock;
6、然後在主庫上獲得當前二進位制日誌名和偏量值,改操作的目的是從庫啟動之後,從這個點開始恢復資料。
點選(此處)摺疊或開啟
-
mysql> show master status;
-
+------------------+----------+--------------+------------------+-------------------+
-
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
-
+------------------+----------+--------------+------------------+-------------------+
-
| mysql-bin.000006 | 120 | | | |
- +------------------+----------+--------------+------------------+-------------------+
8、主庫備份完成,恢復寫操作
unlock tables;
9、修改從庫的配置檔案,新增如下引數,注意server-id必須是唯一的,不能和主庫相同,多個從庫的話,server-id不能有重複。
cat /etc/my.cnf
[mysqld]
server-id=2
10、在從庫上,使用--skip-slave-start啟動資料庫,這樣不會立即啟動從庫上的複製程式,方便我們進行下一步配置。
./bin/mysqld_safe --skip-slave-start &
11、對從庫進行配置,指定複製使用的使用者,主庫的IP、埠以及開始執行復制的日誌檔案和位置等:
change master to
master_host='10.10.10.200',
master_port=3306,
master_user='repl',
master_password='mysql',
master_log_file='mysql-bin.000006',
master_log_pos=120;
12、在從庫上啟動slave執行緒
start slave;
13、驗證半同步模式是否開始工作
在master上檢視狀態:
點選(此處)摺疊或開啟
-
mysql> show status like '%semi%';
-
+--------------------------------------------+-------+
-
| Variable_name | Value |
-
+--------------------------------------------+-------+
-
| Rpl_semi_sync_master_clients | 1 |
-
| Rpl_semi_sync_master_net_avg_wait_time | 0 |
-
| Rpl_semi_sync_master_net_wait_time | 0 |
-
| Rpl_semi_sync_master_net_waits | 0 |
-
| Rpl_semi_sync_master_no_times | 0 |
-
| Rpl_semi_sync_master_no_tx | 0 |
-
| Rpl_semi_sync_master_status | ON |
-
| Rpl_semi_sync_master_timefunc_failures | 0 |
-
| Rpl_semi_sync_master_tx_avg_wait_time | 0 |
-
| Rpl_semi_sync_master_tx_wait_time | 0 |
-
| Rpl_semi_sync_master_tx_waits | 0 |
-
| Rpl_semi_sync_master_wait_pos_backtraverse | 0 |
-
| Rpl_semi_sync_master_wait_sessions | 0 |
-
| Rpl_semi_sync_master_yes_tx | 0 |
-
| Rpl_semi_sync_slave_status | OFF |
- +--------------------------------------------+-------+
點選(此處)摺疊或開啟
-
mysql> show status like '%semi%';
-
+--------------------------------------------+-------+
-
| Variable_name | Value |
-
+--------------------------------------------+-------+
-
| Rpl_semi_sync_master_clients | 0 |
-
| Rpl_semi_sync_master_net_avg_wait_time | 0 |
-
| Rpl_semi_sync_master_net_wait_time | 0 |
-
| Rpl_semi_sync_master_net_waits | 0 |
-
| Rpl_semi_sync_master_no_times | 0 |
-
| Rpl_semi_sync_master_no_tx | 0 |
-
| Rpl_semi_sync_master_status | OFF |
-
| Rpl_semi_sync_master_timefunc_failures | 0 |
-
| Rpl_semi_sync_master_tx_avg_wait_time | 0 |
-
| Rpl_semi_sync_master_tx_wait_time | 0 |
-
| Rpl_semi_sync_master_tx_waits | 0 |
-
| Rpl_semi_sync_master_wait_pos_backtraverse | 0 |
-
| Rpl_semi_sync_master_wait_sessions | 0 |
-
| Rpl_semi_sync_master_yes_tx | 0 |
-
| Rpl_semi_sync_slave_status | ON |
- +--------------------------------------------+-------+
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26870952/viewspace-2152947/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL主從複製之半同步複製MySql
- mysql5.7主從複製,主主複製MySql
- Mysql5.7半同步複製MySql
- MySQL主從複製之非同步複製MySql非同步
- MySQL5.7主從複製教程MySql
- MySQL 8 複製(二)——半同步複製MySql
- MySQL5.7半同步複製報錯案例分析MySql
- mysql主從複製搭建MySql
- 主從複製--非同步篇非同步
- #MySQL# mysql5.7新特性之半同步複製MySql
- mysql複製--主從複製配置MySql
- mysql 5.7半同步複製MySql
- Mysql 8.4.0 結合 Docker 搭建GTID主從複製,以及傳統主從複製MySqlDocker
- 主從複製
- MySQL主從複製之GTID複製MySql
- 簡單搭建MySQL主從複製MySql
- Mysql主從複製原理及搭建MySql
- MySQL-主從複製之同步主從資料MySql
- MySQL5.7在滴滴雲主機上的主從複製MySql
- mysql主從複製的理解和搭建MySql
- docker-compase搭建mysql主從複製DockerMySql
- Redis搭建主從複製、哨兵叢集Redis
- mysql 5.7 主從複製搭建及原理MySql
- Redis:主從複製Redis
- Redis - 主從複製Redis
- MySQL主從複製MySql
- Redis主從複製Redis
- MySQL 主從複製之多執行緒複製MySql執行緒
- MySQL 5.7的安裝及主從複製(主從同步)MySql主從同步
- mysql半同步複製的設定MySql
- Windows 環境下,MySQL 的主從複製和主主複製WindowsMySql
- windows環境下,Mysql的主從複製和主主複製WindowsMySql
- 主從複製是啥或者主從複製的原理是什麼?
- Docker Compose搭建MySQL主從複製叢集DockerMySql
- MongoDB日常運維-03主從複製搭建MongoDB運維
- MySQL 5.7 基於GTID搭建主從複製MySql
- MySQL(14)---Docker搭建MySQL主從複製(一主一從)MySqlDocker
- redis系列--主從複製以及redis複製演進Redis