前言
特點:在雙主配置中,兩台mysql互為主從節點。節點A和節點B互為主節點。
安裝mysql步驟略過
一、mysql設定檔
(1)節點A設定
# 设置server-id,两节点必须不一样 server-id = 100 # 开启bin_log,模式为ROW,允许最大日志为1G log_bin = mysql-bin binlog_format = ROW max_binlog_size = 1024M # mysql5.7的版本不需要配置log-slave-updates=1 # log-slave-updates = 1 # 实现数据库宕机恢复后,自动同步缺少的数据 relay_log = mysql-relay-bin # 设置自增ID初始值为2,每次自增量为2。即都是偶数2,4,6,8,... auto_increment_offset = 2 auto_increment_increment = 2 # 开启gtid gtid_mode = ON enforce_gtid_consistency = 1 # 忽略不需要同步的schema replicate-ignore-db = mysql replicate-ignore-db = information_schema replicate-ignore-db = performance_schema replicate-ignore-db = sys
(2)節點B設定
#只列出了與節點A不同的配置
# 设置server-id,两节点必须不一样 server-id = 200 # 设置自增ID初始值为1,每次自增量为2。即都是奇数1,3,5,7,... auto_increment_offset = 1 auto_increment_increment = 2
二、配置節點A為節點B的master(主從模式)
節點A為master,節點B為slave 。
(1)登入節點A,建立slave(節點B)使用的帳號。
# 在节点A上创建账号repl_user,允许从任意IP访问,密码为slave@100, grant replication slave on *.* to 'repl_user'@'%' identified by 'slave@100'; flush privileges;
(2)查看節點A的master資訊
如下圖所屬,節點A的bin_log日誌為mysql-bin.000001,位置是154
# 清空master信息。初次配置可以使用,若已运行了同步,切记不要使用! reset master; # 查看master信息 show master status; +------------------+----------+--------------+------------------+---------------------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+---------------------------------------------+ | mysql-bin.000001 | 154 | | | c2cf218e-2317-11ec-a36f-5cf9dd4fd6a8:1-5 | +------------------+----------+--------------+------------------+---------------------------------------------+
(3 )登入節點B,設定節點B的master為節點A
# 停止节点B上的slave stop slave; # 将节点B的master设为节点A,以下的配置信息均表示节点A # MASTER_LOG_FILE和MASTER_LOG_POS,是在第(2)步中查看节点A的master信息 CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=3307, MASTER_USER='repl_user', MASTER_PASSWORD='slave@100', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; # 开启节点B上的slave start slave;
(4)確認節點B的slave是否運作成功。當傳回的結果中,Slave_IO_Running和Slave_SQL_Running都為YES時,表示成功。如果為NO或Connecting時,請在mysql的data目錄中查看.err結尾的日誌文件,找出[ERROR]等級的日誌檢視。通常,初次配置問題主要由my.ini配置或同步帳號建立問題所引起。
# 在节点B中查看slave状态 show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 127.0.0.1 Master_User: repl_user Master_Port: 3307 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 2207 Relay_Log_File: mysql-relay-bin.000002 Relay_Log_Pos: 1143 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes ......
(5)若slave配置出現異常,可使用以下語句重置
reset slave all;
三、完成雙主配置
此時,已成功配置了節點A與節點B的主從模式,即節點A是節點B的master。接下來重複步驟三的操作,但節點A、B的操作要顛倒過來,也就是在節點B上建立同步帳號,檢視master訊息,在節點A上設定節點B為master。配置完成後,同樣查看節點A的slave狀態,Slave_IO_Running和Slave_SQL_Running是否都為YES。
四、測試
在節點A新增、刪除schema或表或數據,在節點B中查看是否有正確同步。
測試在節點A和節點B上,新增的自增主鍵資料是否與設定檔相符。一個為奇數,一個為偶數。增加或刪除數據,主鍵是否會出現衝突的情況。
五、控制同步的函式庫或表格
透過修改my.ini實作
(1)在master端控制
binlog-do-db binlog日誌記錄的資料庫(多重資料庫使用,分隔)
binlog-ignore-db binlog日誌中忽略資料庫(多重資料庫使用,分隔)
只有在binlog中記錄的資料表,才能同步給予從函式庫
# binlog中记录这两个表 binlog-do-db=db_1,db_2 # binlog中不记录这两个表 binlog-ignore-db=db_3,db_4
(2)在slave端控制
relaylog有訊息,只是沒有執行同步。replicate-do-db 1 設定需要忽略的複製資料庫
# 注意:忽略的配置裡,在從庫的
replicate-do-table 設定需要複製的表
同replication-do-table功能一樣,可以通配符
replicate-wild-ignore-table 同replication-ignore-table功能一樣,可以加通配符
# 执行同步的库 replicate-do-db=db_1 replicate-do-db=db_2 # 忽略同步的库 replicate-ignore-db=db_3 # 执行同步的表 replicate-do-table=db_1.table_a replicate-do-table=db_2.table_b # 忽略同步的表 replicate-ignore-table=db_2.table_c # 只复制哪个库的哪个表 replicate-wild-do-table=db_4.% # 忽略哪个库的哪个表 replicate-wild-ignore-table=mysql.%六、一個帳號多個IP 當一台mysql作為主節點,N台作為從節點時,如果每個從節點都添加一個帳號會非常繁瑣。可以在主節點中建立帳戶,並將多個IP位址與此帳戶相關聯,以減少需要新增的帳戶數目。 具體做法是,將建立帳號的語句執行多次,每次的IP不同即可。
# 创建一个账号名,为此账号设置多个ip grant replication slave on *.* to 'repl_user'@'192.168.5.10' identified by 'slave@100'; grant replication slave on *.* to 'repl_user'@'192.168.5.20' identified by 'slave@100'; FLUSH PRIVILEGES
以上是Mysql雙主如何配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

MySQL和SQLite的主要區別在於設計理念和使用場景:1.MySQL適用於大型應用和企業級解決方案,支持高性能和高並發;2.SQLite適合移動應用和桌面軟件,輕量級且易於嵌入。

MySQL中的索引是數據庫表中一列或多列的有序結構,用於加速數據檢索。 1)索引通過減少掃描數據量提升查詢速度。 2)B-Tree索引利用平衡樹結構,適合範圍查詢和排序。 3)創建索引使用CREATEINDEX語句,如CREATEINDEXidx_customer_idONorders(customer_id)。 4)複合索引可優化多列查詢,如CREATEINDEXidx_customer_orderONorders(customer_id,order_date)。 5)使用EXPLAIN分析查詢計劃,避

在MySQL中使用事務可以確保數據一致性。 1)通過STARTTRANSACTION開始事務,執行SQL操作後用COMMIT提交或ROLLBACK回滾。 2)使用SAVEPOINT可以設置保存點,允許部分回滾。 3)性能優化建議包括縮短事務時間、避免大規模查詢和合理使用隔離級別。

選擇PostgreSQL而非MySQL的場景包括:1)需要復雜查詢和高級SQL功能,2)要求嚴格的數據完整性和ACID遵從性,3)需要高級空間功能,4)處理大數據集時需要高性能。 PostgreSQL在這些方面表現出色,適合需要復雜數據處理和高數據完整性的項目。

MySQL數據庫的安全可以通過以下措施實現:1.用戶權限管理:通過CREATEUSER和GRANT命令嚴格控制訪問權限。 2.加密傳輸:配置SSL/TLS確保數據傳輸安全。 3.數據庫備份和恢復:使用mysqldump或mysqlpump定期備份數據。 4.高級安全策略:使用防火牆限制訪問,並啟用審計日誌記錄操作。 5.性能優化與最佳實踐:通過索引和查詢優化以及定期維護兼顧安全和性能。

如何有效監控MySQL性能?使用mysqladmin、SHOWGLOBALSTATUS、PerconaMonitoringandManagement(PMM)和MySQLEnterpriseMonitor等工具。 1.使用mysqladmin查看連接數。 2.用SHOWGLOBALSTATUS查看查詢數。 3.PMM提供詳細性能數據和圖形化界面。 4.MySQLEnterpriseMonitor提供豐富的監控功能和報警機制。

MySQL和SQLServer的区别在于:1)MySQL是开源的,适用于Web和嵌入式系统,2)SQLServer是微软的商业产品,适用于企业级应用。两者在存储引擎、性能优化和应用场景上有显著差异,选择时需考虑项目规模和未来扩展性。

在需要高可用性、高級安全性和良好集成性的企業級應用場景下,應選擇SQLServer而不是MySQL。 1)SQLServer提供企業級功能,如高可用性和高級安全性。 2)它與微軟生態系統如VisualStudio和PowerBI緊密集成。 3)SQLServer在性能優化方面表現出色,支持內存優化表和列存儲索引。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver Mac版
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。