萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> 配置MySQL 5.0的復制(Replication)的詳解

配置MySQL 5.0的復制(Replication)的詳解

Replication就是mysql數據庫中一個主從復制功能了,我們可以通過Replication功能來進行數據的一個同步或異步同步了,這樣可以實現多台服務器數據實時更新了。

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上進行寫操作,容易導致數據不一致。

copyright © 萬盛學電腦網 all rights reserved