linux mysql的主從復制(GTID)/并行復制/無損復制
安裝mysql
本次使用五個rpm包安裝
安裝后修改密碼即可
密碼默認在log中
初始化修改即可
開啟mysql二進制日志
可以設定徐亞同步的數據庫或不需要的數據庫
進入mysql創建備份賬戶
查看日至位置以及pos在備份機使用
grant replication slave on *.* to 'bobo'@'172.25.15.%' identified by 'Hh~802119323'
備份機設置同主機
但把server-id改為2即可
進入mysql配置即可
都出現yes為正確設置
測試
主機上的數據被備份成功
基于GTID
GTID是對于一個已提交事務的編號,并且是一個全局唯一的編號。
?GTID = source_id :transaction_id
每一個 GTID 代表一個數據庫事務
在mysql的數據目錄(/var/lib/mysql)里查看二進制日志
配置主機my.cnf
添加gtid數據
備份主機配置
change master to master_host='172.25.15.12', master_user='bobo',master_password='Hh~802119323',master_auto_position=1;
查看狀態
當Slave_IO_Running
, Slave_SQL_Running
為YES,
且Slave_SQL_Running_State
為Slave has read all relay log; waiting for more updates時表示成功構建復制鏈路
可以在備份主機上看到個gtid 測試成功
半同步復制
半同步復制:異步復制和同步復制的折中,主庫上提交事務時,需要等待至少一個從庫發來的收到事件確認信息,才向客戶端返回成功。
主節點安裝 rpl_semi_sync_master 插件
root@localhost:mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
Query OK, 0 rows affected (0.17 sec)
root@localhost:mysql>show variables like '%rpl%';
+-------------------------------------------+------------+
| 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_for_slave_count | 1 |
| rpl_semi_sync_master_wait_no_slave | ON |
| rpl_semi_sync_master_wait_point | AFTER_SYNC |
| rpl_stop_slave_timeout | 31536000 |
+-------------------------------------------+------------+
7 rows in set (0.03 sec)
備節點安裝 rpl_semi_sync_slave 插件
root@localhost:mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
Query OK, 0 rows affected (0.15 sec)
root@localhost:mysql>show variables like '%rpl%';
+---------------------------------+----------+
| Variable_name | Value |
+---------------------------------+----------+
| rpl_semi_sync_slave_enabled | OFF |
| rpl_semi_sync_slave_trace_level | 32 |
| rpl_stop_slave_timeout | 31536000 |
+---------------------------------+----------+
3 rows in set (0.03 sec)
主節點my.cnf配置增加以下
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=10000
備節點
rpl_semi_sync_slave_enabled=1
關閉從庫后,在主庫上創建一張表延遲了 10 秒左右,剛好是參數 rpl_semi_sync_master_timeout 設置的值。
關于數據手動備份恢復
在備份數據被從庫恢復時 恢復文件中會有sql語句刪除已經存在的table——————mysqldump
二進制日志的恢復
基于行的日志格式 binlog_format=ROW
- 這是mysql5.7之后默認的二進制日志格式
- 記錄的是增刪改查的數據行信息
- 優點:
- 使mysql主從復制更加安全
- 對每一行數據的修改比基于段的復制高效
- 由于誤操作修改數據庫信息,且沒有備庫可恢復時,可通過對日志文件數據操作反向處理恢復數據
- 缺點:
- 記錄日志量較大
- binlog_row_image =[FULL|MINIMAL|NOBLOB]
- 記錄日志量較大
基于時間恢復數據
mysqlbinlog –no-defaults –stop-datetime=’2017-04-11 09:48:48’/var/lib/mysql/mysql-bin.000007 |mysql –uroot –pHh~802119323
基于position恢復數據
mysqlbinlog –no-defaults –start-position=”1159” –stop-position=”1594” /varlib/mmysql/binlog.000007 | mysql -u root -pHh~802119323
并行復制
slave端開啟 my.cnf
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=16
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON
無損復制
官方文檔
https://dev.mysql.com/doc/refman/5.7/en/replication-semisync-installation.html
On the master:
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
On each slave:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
查看狀態
SELECT PLUGIN_NAME, PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE PLUGIN_NAME LIKE '%semi%';
master-
SET GLOBAL rpl_semi_sync_master_enabled = {0|1};
SET GLOBAL rpl_semi_sync_master_timeout = N;
slave
SET GLOBAL rpl_semi_sync_slave_enabled = {0|1};
重啟io
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;
測試 在添加數據后 slave端看到收到兩條信息
slave 端看master yes tx數據可以看到幾條信息
可以看到設置本slave的maser與slave狀態都開啟
mysql group replication 去中心化
官方文檔
https://dev.mysql.com/doc/refman/5.7/en/group-replication-adding-instances.html
配置解析用于主機互相連接
編輯配置文件
修改serverid 本機ip即可
登陸數據庫 修改初始密碼
ALTER USER root@localhost identified by 'Hh~802119323'
SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY 'Hh~802119323'
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
reset master;
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Hh~802119323' FOR CHANNEL 'group_replication_recovery';
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
SHOW PLUGINS;
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=ON;
SET GLOBAL group_replication_bootstrap_group=OFF;
下圖為正確結果
配置第二臺加入集群的主機、
SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';
start GROUP_REPLICATION;
看到下圖即可
節點三與節點的配置相同 不再贅述
測試 在2節點創創建數據庫 以節點可以看到
智能推薦
MySQL主從復制Linux實現
主從復制 注意事項 1、主DB server和從DB server數據庫的版本一致 2、主DB server和從DB server數據庫數據一致[ 可以把主的備份在從上還原 也可以直接將主的數據目錄,拷貝到從的相應數據目錄 3、主DB server開啟二進制日志 主DB server和從DB server的server_id都必須唯一 主服務器配置 第一步 修改/etc/my.conf文件 在my...
linux , mysql互為主從復制
Master-1:192.169.7.242 Master-2:192.169.0.197 MySQL版本:mysql-5.7 1.mysql配置文件修改及說明 分別修改兩個節點的mysql,此處修改配置文件為:/etc/my.cnf 修改Master-1如下: 修改Master-2如下: 注意: Master-1和Master-2的server-id和a...
linux進階-MySQL主從復制
文章目錄 MySQL主從復制的架構和原理 MySQL主從復制形式 MySQL主從復制原理 MySQL主從復制過程 MySQL異步復制 實現MSQL主從復制 主節點Master配置 從節點Slave配置 主服務器非新建時 主節點Master配置 從節點Slave配置 MySQL主從復制的架構和原理 性能擴展 服務性能擴展方式: Scale Up #向上擴展 Scale Out #向外擴展 MySQL...
linux--mysql(主從復制gid)
gid主從輔助復制(在position的基礎上) GTID復制不像傳統的復制方式(異步復制、半同步復制)需要找到binlog(MASTER_LOG_FILE)和POS點(MASTER_LOG_POS) 只需要知道master的IP、端口、賬號、密碼即可,因為復制是自動的,MySQL會通過內部機制GTID自動找點同步 和基于position的主從復制的不同之處在于:它是以一整個事件為單位進行復制的 ...
linux--mysql(主從復制position)
異步復制(主從復制)master節點不會關心slave節點的狀態,只需要寫自己的數據即可 能不能完成復制看slave節點的io線程和sql線程是否開啟 mysql的主從配置又叫replication,AB復制,基于binlog二進制日志,主數據庫必須開啟binlog二進制日志才能進行復制 mysql的主從復制(異步復制)(基于position)把一個事件拆開來復制,并不是以一個完整的事件為單位來進...
猜你喜歡
Linux上MySQL主從復制配置
1.我的Linux是centos7 mysql版本是5.7 2.準備兩個能正常啟動的MySQL的服務器 ,我的兩個IP分別是128和129,我是把129作為master節點,128作為slave節點 3.防火墻要關閉 , systemctl stop firewalld.service, 還要把這個也跟關閉SeLinux權限問題 /usr/sbin/sestatus -v 這個是查看SeLinux...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...