MySQL主主複製的搭建
前言:最近一直在忙於MySQL很久沒有進行更新了文檔了,學霸都快成學渣了,剛好公司搭建了MySQL的主主複製,順便把文檔發出來。希望能夠幫到大家!
生產環境MySQL主主同步主鍵衝突處理
MySQL + KeepAlived + LVS 單點寫入主主同步高可用架構實驗
MySQL 主主同步配置
CentOS 6.3下MySQL主從複製筆記
Linux下的MySQL主主複製
一、環境說明:
IP |
主機名稱 |
資料庫名 |
串連使用者 |
密碼 |
|
192.168.47.179 |
Mysql01 |
retail |
server01 |
server01 |
|
192.168.47.178 |
Mysql02 |
retail |
server02 |
server02 |
|
二、搭建步驟
2.1 建立資料的串連使用者
Mysql01上面建立串連使用者server01,並且只能通過192.168.47.178進行串連;
指令碼:mysql> GRANT REPLICATION SLAVE ON retail.* TO 'server01'@'192.168.47.178 ' IDENTIFIED BY 'server01';
Mysql02上面建立串連使用者server02,並且只能通過192.168.47.149進行串連;
指令碼:mysql> GRANT REPLICATION SLAVE ON retail.* TO 'server02'@'192.168.47.179 ' IDENTIFIED BY 'server01';
2.2 修改mysql的參數檔案
修改Mysql01的參數檔案,在MySQL的主設定檔預設為/etc/my.cnf,修改/添加如下內容
server-id = 10
log-bin = mysql-bin
replicate-do-db = retail
auto-increment-increment = 2
auto-increment-offset = 1
修改之後,重啟msyql生效:service mysqld restart
修改Mysql02的參數檔案,在MySQL的主設定檔預設為/etc/my.cnf,修改/添加如下內容
server-id = 20
log-bin = mysql-bin
replicate-do-db = retail
auto-increment-increment = 2
auto-increment-offset = 2
參數說明:
a、server-id資料庫的進行資料同步的時候用於標識該語句最初是從哪個server寫入的,在進行主主或主從的搭建中,都需要填寫;
b、auto-increment-increment:在資料庫應用,我們經常要用到唯一編號,以標識記錄。在MySQL中可通過資料列的AUTO_INCREMENT屬性來自動產生。為避免兩台主要資料庫產生的編碼重複了,所以需要設定該值,本案例用到兩台伺服器,所以auto-increment-increment值設為
2.3 複製其中的一台伺服器的資料庫到另外一台伺服器
因為環境是全新搭建的,所以兩個的環境都是一樣的,並需要進行資料的初始化工作;
需要的話可以通過以下步驟進行操作,以Mysql01為來源資料庫進行同步,如下操作:
1.鎖定資料庫,查看狀態
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000008 | 107 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
顯示來源資料庫處於8號binlog的107位置;
1.備份資料庫
[root@mysql01 ~]# mysqldump --user=root -p retail> /tmp/retail.sql
Enter password:
1.解鎖資料庫
mysql> UNLOCK TABLES;
2.在mysql02上面建立一個retail的資料庫,並進行匯入操作;
mysql> create database retail;
mysql -uroot -p retail < /tmp/retail.sql #匯入retail資料庫
1.查看mysql02資料庫的狀態
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000009 | 107 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
顯示備份檔案位於9號binlog的107位置;
2.4 進行主主的通訊串連;
a、在mysql01上面進行使用者和binlog的確認
mysql> CHANGE MASTER TO MASTER_HOST='192.168.47.178',MASTER_USER='server02',MASTER_PASSWORD='server02', MASTER_LOG_FILE='mysql-bin.000008',MASTER_LOG_POS=107;
b、在mysql02上面進行使用者和binlog的確認
mysql> CHANGE MASTER TO MASTER_HOST='192.168.47.179',MASTER_USER='server01',MASTER_PASSWORD='server01', MASTER_LOG_FILE='mysql-bin.000009',MASTER_LOG_POS=107;
更多詳情見請繼續閱讀下一頁的精彩內容: