MySQL Master Slave 資料同步,叢集

來源:互聯網
上載者:User

最近學習了一下MySQL的叢集,發現MySQL的叢集有很多種方式,下面來介紹下學到的MySQL Master Slave配置

MySQL Master Slave 字面上理解,可以看出一個主和下屬的關係,他們能做什麼呢?我個人理解:當遇到高並發訪問資料庫的時候,可以讓查詢操作的SQL去訪問Slave伺服器,插入、修改、刪除、可以在Master伺服器來做,這樣就可以減輕伺服器的負擔。

Slave 會根據Master 進行資料以二進位流的方式快速同步。

這兩天在網上查了很多相關的配置,但都運行不了,最後結合多種配置加上自己的理解終於成功了,太開心了!

下面我來說說我是怎麼配置的吧! 爭取讓你按我的配置一次成功!我盡量詳細。

我的機器是XP系統,安裝的MySQL5.1.32-community-log,我的虛擬機器裡是Ubuntu10.10,MySQL5.1.49-1ubuntu8.1-log

Master :192.169.105.203 (XP系統)
Slave: 192.168.2.133(Linux系統)

1、XP系統中操作:
找到MySQL的安裝目錄,我的是:
D:\Program Files\MySQL\MySQL Server 5.1
修改D:\Program Files\MySQL\MySQL Server 5.1\my.ini檔案,找到[mysqld] 在下面寫:

server-id               = 1
log_bin                 = d:/mysql/mysql-test-bin.log
expire_logs_days        = 10
max_binlog_size         = 100M
binlog_format           =mixed
binlog_do_db = test_db

注意:d:/mysql/mysql-test-bin.log 這個目錄需要自己建立,log_bin的意思是 將資料庫的內容以二進位方式寫到檔案裡(Slave會根據這個檔案進行同步資料);
通常Master伺服器都配置 server-id=1 這個數字最好和IP最後一組數字一致,但要小於32,這裡配置為1。
binlog_do_db准許Slave同步的資料庫,我這裡要讓寫的是test_db用於測試的資料庫(Slave裡也要有相同的資料庫和表結構,否則無法同步),如果有多個資料庫可以多寫幾個binlog_do_db=**資料庫名。
重啟MySQL服務,net stop mysql 然後net start mysql

串連資料庫 mysql -uroot -p123456

mysql> show master status;
+-----------------------+----------+--------------+------------------+
| File                  | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-----------------------+----------+--------------+------------------+
| mysql-test-bin.000001 |      106 |              |                  |
+-----------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
         
這個就是產生的二進位檔案的資訊,Slave會根據這個同步資料。

設定 Replication Slave 許可權
我們必須要在 Master Server 上做設定,讓 Slave 具有可以從 Master Server 上 Copy 資料的許可權(正式的說法為 Replication Slave Priviledges)
mysql> GRANT REPLICATION SLAVE ON *.* TO 'test_dbuser'@'192.168.2.133' IDENTIFIED BY '1234';
語句中的SLAVE是許可權名,*.*是可訪問任何資料庫,test_dbuser是使用者名稱,192.168.2.133是准許這個IP訪問,1234是密碼。
mysql> FLUSH PRIVILEGES; (使之生效)

--------------------------
2、下面是在Ubuntu下的操作,配置Slave:
MySQL的安裝我就不多說了,apt-get install mysql ……
先說明一下我的MySQL的路徑:
/etc/init.d/mysql 下是啟動和停止服務
/var/log/mysql/ 記錄日誌,相當於我在前面XP系統裡建立的d:/mysql/mysql-test-bin.log位置
/var/lib/mysql/ 存放資料庫。MySQL設定檔:/etc/mysql/my.cnf ,其中指定了資料檔案存放路徑,
datadir = /var/lib/mysql
如果你建立了一個名為 test 的資料庫,那麼這個資料庫的資料會存放到 /var/lib/mysql/test 目錄下。

Slave Server配置:
修改MySQL設定檔:/etc/mysql/my.cnf
找到[mysqld] 在下面加入:
server-id               = 2
replicate-do-db  =test_db
log_bin                 =/var/log/mysql/mysql-bin.log
relay_log               =/var/log/mysql/mysql-relay-bin.log
master-connect-retry =1
expire_logs_days        = 10
max_binlog_size         = 100M
#binlog_do_db           = test
#binlog_ignore_db       = include_database_name
binlog_format           = mixed

下面說明一下:
server-id=2就是個編號,如果有多個Slave伺服器,就依次向後排,3、5、6……
replicate-do-db=test_db是配置我要到Master伺服器同步的資料庫,我這裡配置的是test_db資料庫。
master-connect-retry=1 是1秒鐘同步一次,這個數值可根據不同需要配置。

  • 1
  • 2
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.