日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 集群 主从复制

發布時間:2025/1/21 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 集群 主从复制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.binlog日志,如果是多個數據庫,binlog日志是不是也是分為多個日志?

2.binlog日志存儲的路徑在哪里?

3.常用的binlog模式,大家都是使用哪種?

1.statement level模式 2.rowlevel模式 3.mixed模式

1.開啟binglog日志

1.1.修改my.cnf配置文件

在【mysqld】段添加:

#binlog刷盤策略 sync_binlog=1 #需要備份的數據庫 binlog-do-db=hello #不需要備份的數據庫 binlog-ignore-db=mysql #啟動二進制文件 log-bin=mysql-bin #服務器ID server-id=132

sync_binlog參數: 0 存儲引擎不進行binlog的刷新到磁盤,而由操作系統的文件系統控制緩存刷新。 1每提交一次事務,存儲引擎調用文件系統的sync操作進行一次緩存的刷新,這種方式最安全,但性能較低。 n當提交的日志組=n時,存儲引擎調用文件系統的sync操作進行一次緩存的刷新。 sync_binlog=0sync_binlog大于1,事務被提交,而尚未同步到磁盤。因此,在電源故障或操作系統崩潰時有可能服務器已承諾尚未同步一些事務到二進制日志。因此它是不可能執行例行程序恢復這些事務,他們將會丟失二進制日志。

1.2.調整binlog日志模式

查看binlog的日志模式: show variables like 'binlog_format';

調整binlog的日志模式: binlog的三種格式: STATEMENT ROW MIXED 。 set binlog_format=STATEMENT;

這時,需要重啟一下數據庫,才能使用配置文件生效。

systemctl restart mysqld

1.3.查看bin logrelay log日志

因為binlog日志文件:mysql-bin.000005是二進制文件,沒法用vi等打開,這時就需要mysql的自帶的 mysqlbinlog工具進行解碼,執行: mysqlbinlog mysql-bin.000005 可以將二進制文件轉為可閱讀的sql語句。 mysqlbinlog --base64-output=decode-rows -v -v mysql-bin.000058 > binlog

1.4.使用命令查看binlog

show master logs;

使用 show binlog events 命令可以以列表的形式顯示日志中的事件信息。 show binlog events命令的格式: show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]; 說明: 1IN ‘log_name’:指定要查詢的binlog文件名(如果省略此參數,則默認指定第一個binlog文件); 2FROM pos:指定從哪個pos起始點開始查起(如果省略此參數,則從整個文件的第一個pos點開始算); 3LIMIToffset】:偏移量(默認為0); 4row_count:查詢總條數(如果省略,則顯示所有行)。 show binlog events in 'mysql-bin.000001';

切換binlog文件:會生成一個新的日志文件。 flush logs;

2、基于binlog主從復制

2.1.關閉主從機器的防火墻

systemctl stop iptables(需要安裝iptables服務) systemctl stop firewalld(默認) systemctl disable firewalld.service(設置開啟不啟動)

2.2.主服務器配置

查看binlog是否開啟可以使用命令: show variables like 'log_bin%';

log_bin如果是 OFF 代表是未開啟狀態。

2.3.主機給從機授備份權限

注意:先要登錄到MySQL命令客戶端 GRANT REPLICATION SLAVE ON *.* TO '從機MySQL用戶名'@'從機IP' identified by '從機MySQL密碼';

例子:

GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' identified by 'root'; ???????? 注意事項: 一般不用root帳號,“%”表示所有客戶端都可能連,只要帳號,密碼正確,此處可用具體客戶端IP代替, 如192.168.145.226,加強安全。 mysql5.7對密碼的強度是有要求的,必須是字母+數字+符號組成的,可以使用如下方法調整密碼 強度。 設置密碼長度最低位數 set global validate_password_length=4; 設置密碼強度級別 set global validate_password_policy=0; validate_password_policy有以下取值:

刷新權限 : FLUSH PRIVILEGES;

2.4.查詢master的狀態

show master status;

3.從服務器配置

3.1.修改my.conf文件

[mysqld] server-id=401326

3.2.重啟并登錄到MySQL進行配置從服務器

systemctl restart mysqld change master to master_host='10.0.200.17', master_port=3306, master_user='root', master_password='root', master_log_file='mysql-bin.000002', master_log_pos=589, MASTER_AUTO_POSITION=0;

注意: 語句中間不要斷開, master_port mysql服務器端口號(無引號)master_user 為執行同步操作的數 據庫賬戶, “410” 無單引號(此處的 410 就是 show master status 中看到的 position 的值,這里的 mysql-bin.000001 就是 file 對應的值)。

3.3.啟動從服務器復制功能

start slave;stop slave;reset slave;show slave status;

3.4.檢查從服務器復制功能狀態

show slave status \G; ……………………(省略部分) Slave_IO_Running: Yes //此狀態必須YES Slave_SQL_Running: Yes //此狀態必須YES ……………………(省略部分) 注:Slave_IOSlave_SQL進程必須正常運行,即YES狀態,否則都是錯誤的狀態(如:其中一個NO屬錯誤)。

4.設置從庫寫權限

對于需要保證master-slave主從同步的salve庫,如果要設置為只讀狀態,需要執行的命令為:

set global read_only=1;

read_only=1只讀模式,可以限定普通用戶進行數據修改的操作,但不會限定具有super權限的用戶(如超級管理員root用戶)的數據修改操作。

在MySQL中設置read_only=1后,普通的應用用戶進行insert、update、delete等會產生數據變化的DML操作時,都會報出數據庫處于只讀模式不能發生數據變化的錯誤,但具有super權限的用戶,例如在本地或遠程通過root用戶登錄到數據庫,還是可以進行數據變化的DML操作;

為了確保所有用戶,包括具有super權限的用戶也不能進行讀寫操作,就需要執行給所有的表加讀鎖的命令 “flush tables with read lock;”。

這樣使用具有super權限的用戶登錄數據庫,想要發生數據變化的操作時,也會提示表被鎖定不能修改的報錯。

將slave數據庫read-only=1設置只讀后,在master執行GRANT USAGE ON *.* TO 'user01'@'localhost' IDENTIFIED BY'123456' WITH GRANT OPTION;創建一個普通用戶,然后用普通用戶登錄從庫,執行操作會報錯。切換到root用戶后還是可以進行增刪改查的。

5.基于GTID的主從復制

5.1.什么是GTID

GTID就是全局事務標識符(Global Transaction Identifiers),基于事務的復制。使用 GTID 時,可以識別和跟蹤每個事務,因為它在原始服務器上提交并由任何從屬服務器應用;這意味著在啟動新從站或故障到新主服務器時,使用 GTID 引用日志文件或這些文件中的位置時,不需要引用日志文件或位置,這大大簡化了這些任務。由于基于 GTID 的復制完全基于事務,因此只需確定主復制和從級復制是否一致; 只要在主主機上提交的所有事務也都提交到從站上,就保證兩者之間的一致性。

5.2.修改master、slave服務器的my.cnf文件

注意了:是master和slave都要修改配置 #開啟GTID模式(必選) gtid_mode=ON #強制gtid一致性(必選) enforce-gtid-consistency=true

5.3.重啟mysql

systemctl restart mysqld

5.4.從服務器中執行change master

change master to master_host='192.168.68.132', master_port=3306, master_user='root', master_password='root', master_auto_position = 1;

5.5開啟同步

START SLAVE;

微信掃一掃:關注我個人訂閱號“猿小飛”,更多精彩文章在這里及時發布:?

?

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的mysql 集群 主从复制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。