1.主機從機說明
master主機A:192.168.200.132
slave從機B :192.168.200.130
2.主機上配置
打開配置文件my.cnf修改以下內容:
server-id = 1log-bin = mysql-bin
修改完畢重啓數據庫:service mysqld restart
進入到數據庫,創建一個專門傳輸binlog的用戶:
grant replication slave on *.* to'repl'@'192.168.200.130' identified by '123';
用戶名字叫做repl,密碼是123。
接下來執行:
flush tables with read lock; flush privileges; show master status;
解釋:
第一句:把表的讀鎖死,一般都是用在數據庫聯機備份,這個時候數據庫的寫操作將被阻塞,讀操作順利進行。解鎖用unlock tables;
第二句:刷新權限;
第三句:一定要用筆記住File和Position列的內容,一會要用到。
3.備份數據庫
把主機A的所有數據庫備份出來,假設A有4個database,分別是mysql,test,db1,z,那麼通過命令mysqldump一個個的全部備份出來,比如:
mysqldump -uroot -p123 db1 > /test/db1.sql
mysqldump -uroot -p123 mysql > /test/mysql.sql
mysqldump -uroot -p123 test > /test/test.sql
mysqldump -uroot -p123 z > /test/z.sql
通過rsync把數據庫的備份數據傳輸到從機B:
rsync -av /testA/ 192.168.200.130:/testB/
在從機B的mysql創建和主機A的mysql相同的database,既然主機A的database有mysql,test,db1,z,那就去創建好
然後把主機A傳輸過來的數據分別導入對應的database中
mysql db1 < /testB/db1.sql
mysql mysql < /testB/mysql.sql
mysql test < /testB/test.sql
mysql z < /testB/z.sql
4.從機上配置
打開配置文件my.cnf修改以下內容
server-id = 2 //這個數不用管值不能和主一樣
log-bin=mysql-bin
可選參數(2選1,或者不寫那就整體的同步):replicatedo_wild_do_table=test.%,test2.% 和 replicatedo_wild_ignore_table=test.%,test2.%
修改完畢重啓數據庫:service mysqld restart
登陸從的mysql
slave stop; change master to master_host='192.168.200.132', master_port=3307, master_user='repl', master_password='123', master_log_file='mysql-bin.000010', master_log_pos=319; slave start;
解釋:slave stop停掉數據庫 (爲了配置以下參數) 注意,第二個語句最後的兩個值就要看主的實際的File和Position列的內容
從上查看從的狀態: show slave status\G;
有2個yes就表示成功了
5.測試
記得解除主機A的mysql鎖頭:unlock tables;