對於MySQL服務器的主從復制分為兩種情況:
一、兩台MySQL服務器中都沒有數據
在復制結構中從服務器的mysql的版本要比主服務器的一樣或者高也行。
######################################################################################################
1、在主服務器上修改配置文件:
vim /etc/my.cnf www.2cto.com
/修改:
server-id = 1 (默認是1)
# service mysqld restart
2、連接到mysql數據庫創建用戶並賦於復制的權限
mysql>GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO repl@'172.16.%.%' IDENTIFIED BY '123456';
3、在從服務器上修改配置文件:
vim /etc/my.cnf
修改:
servier-id = 11
關掉二進制日志
# log-bin=mysql-bin
添加如下內容:
relay-log=relay-bin
relay-log-index=relay-bin.index
# service mysqld restart
4、在主和從服務器上分別清空一下日志
用命令:mysql>flush master;
同時在從服務器上也清空一下日志
在從服務器上:mysql> flush slave;
要使主從服務器的日志位於相同一個結點,否則會出錯。
5、清空日志後就可以連接到主服務器上了
mysql> CHANGE MASTER TO www.2cto.com MASTER_HOST='172.16.35.1',MASTER_USER='repl',MASTER_PASSWORD='123456';
用命令:mysql> show slave status\G 來查看一下是否已經連接上
如果出現以下結果表明連接成功,則連接失敗。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
6、連接失敗的原因有多種:
最常見的情況分別是:1、在主服務器上的用戶可能出錯
2、沒有重新滾動一下主從服務器的日志,在連接前有必要重新滾動一下。
7、 最後
在主服務器上創建或者刪除數據庫、表,就可以同步到從服務器上了。
在從服務器上也可以查看到從服務器要比主服務器慢多少時間用命令:
mysql> show slave status\G
定位到:Second_Behind_Master:0 (0,表示時間說明沒有延遲)
二、主服務器上已經有數據,此時再開啟從服務器
1、在開啟從服務器之前要先把主服務器上的數據導入從服務器中。所以要先備份一下主服務器上的數據
# mysqldump --all-databases --lock-all-tables --master-data=2 > /tmp/slave.sql
2、將備份復制到從服務器中
# scp /tmp/slave.sql 172.16.35.2:/tmp/
3、在從服務器上,把備份導入服務器中
mysql> source /tmp/slave.sql
4、下面就可以連接了,但是在連接之前要先查看備份的文件
用命令head來查看
head -30 /tmp/slave.sql ##查看前30行的
有一行是:
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=279;
說明備份的位置是:MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=279
所以在連接之前一定要說明這個位置:
mysql>CHANGE MASTER TO www.2cto.com MASTER_HOST='172.16.35.1',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=279;
返回的結果:Query OK, 0 rows affected (0.02 sec)
說明備份成功
5、下面就可以啟動從服務器了
mysql>start slave;
mysql>show slave status\G ##查看從服務器的狀態是否連接成功
如下所示說明成功連接:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
經過以上的步驟就完成了mysql服務器的主從復制。如果有不同的地方請提出來,以便共同進步!
作者 ZhouLS