配置MySQL 5.0的複製(Replication)的詳解

來源:互聯網
上載者:User

MySQL的Replication功能可以自動同步主MySQL伺服器的更新到若干個輔MySQL伺服器上,這個功能能把MySQL的資料即時分布到多台機器上,提交了MySQL的資料安全性。

配置MySQL Replication並不是個簡單的工作,如果配置的不好,回導致MySQL的同步效能不好,或者不能同步,甚至導致主輔伺服器的資料不一致。

下面主伺服器為master,次要伺服器為slave

master的配置

第一步保證master能單機正常工作,略。

在master上建立一個MySQL使用者,這個使用者專門用於Replication:

grant replication slave on *.* to 'repluser'@'%' identified by 'mypassword';

編輯MySQL的設定檔,允許log-bin,並且給master分配一個ID:

[mysqld]
skip-name-resolve
server-id=10
log-bin=mysql-bin
sync_binlog=1
innodb_flush_logs_at_trx_commit=1
innodb_support_xa=1
slave的配置
配置ID等

[mysqld]
server-id=20
log_bin = mysql-bin
relay_log = mysql-relay-bin
skip_slave_start
log_slave_updates = 1
read_only
skip-name-resolve

同步資料

在master上把資料匯出,並記錄當前資料位元置。用一個使用者串連mysql並運行:

flush tables with read lock;
show master status;

然後該串連不要退出,否則read lock就失效了,記錄下當前日誌的檔案名稱和位置。在另外一個視窗運行如下命令匯出資料:

mysqldump -uroot -p  --all-databases |gzip -c > db.sql.gz

然後把資料檔案拷貝到slave上,解壓縮:

gunzip db.sql.gz

進MySQL匯入:

source db.sql;

這時候slave上的資料已經同步到master的匯出時刻的資料了,下面就啟動自動同步的線程就可以了:

change master to master_host='1.1.1.1', master_user='repluser', aster_password='mypassword',master_log_file='mysql-bin.000006',master_log_pos=502185;
show slave status;
start slave;

show slave status;

從上面的
show slave status命令的輸出可以看到,
IO線程和SQL線程都開始工作了。過幾分鐘後比較一下slave和master上的記錄檔及其位置,應該就是一樣的了。

注意事項
應用程式不要使用資料庫的root使用者,一定要建立普通使用者供應用程式使用,因為root使用者可以在slave上進行寫操作,容易導致資料不一致。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.