windows下配置mysql
主服務器下設置my.ini文件(C:\Program?Files\MySQL\MySQL?Server?5.1)linux
文件末尾添加如下代碼:sql
server-id=252 # 惟一表示碼,建議使用 IP 最後一欄數據庫
log-bin=D:\mysqlback # 日記文件名windows
bin-do-db=mydb; # 須要 replication 的 DB ,多個則多條對應語句服務器
從服務器下設置my.ini文件(C:\Program?Files\MySQL\MySQL?Server?5.1)ide
server-id=253性能
master-host=192.168.198.252spa
master-user=rep_user命令行
master-password=rep_user
master-port=3306
master-connect-retry=60 # 宕機或鏈接丟失的狀況下,從服務器從新鏈接的秒數
replicate-do-db=mydb # 告訴從服務器限制默認數據庫爲mydb的語句複製,多個則多條語句
slave-skip-errors=all # 忽略錯誤
主服務器下開放一個用戶,用於從服務器 replicate 訪問
GRANT REPLICATION SLAVE ON *.* TO 'rep_user'@'192.168.198.%' IDENTIFIED BY 'rep_user'
GRANT SUPER, RELOAD ON *.* TO 'rep_user'@'192.168.198.%'
# GRANT SELECT, FILE, REPLICATION SLAVE ON *.* TO 'rep_user'@'192.168.198.%'
在主服務器下,拷貝數據庫文件目錄Data ,到從服務器下 (能夠在my.ini下修改數據庫的保存路徑)
路徑 (C:\Program Files\MySQL\MySQL Server 5.1\data) # 本次使用的數據庫引擎MyISAM,能夠直接拷貝
分別重啓主從服務器....
在從服務器 mysql 命令行下,輸入命令: load data master
在主服務器 mysql 命令行下,查看結果:show master status;
在從服務器 mysql 命令行下,執行:
slave start;
show slave status \G;
能夠看到 「Waiting for master to send event 」的字眼,表示成功
說明:在第一次設置完成master,slave以後,若是要修改slave的my.ini裏master的設置必須先刪除data下面的master.info文件,重啓服務才能生效。不然服務器會以master.info中的信息爲準。
//****************************************************************
//** for linux
//** 設置大體與 windows 下相同
//** 設置my.cnf文件
//****************************************************************
在實際的應用過程當中,若是全部slave都直接連到master 上,全部的slave都會從master上接受binglog的內容,而當你業務擴張的時候,slave 節點的不斷增長,這必然會對master增長負擔,容易達到瓶頸。
有一種提升Replication性能的方法,就是增長mysql Replication結構的深度,就是一個master 只Replication給一個slave,在由這個slave 複製給其餘的slave。
結構爲:master1-->master2-->slave1....
(Mysql的版本都是5.6.9)
環境:
Maste1 :
Hostname:media
Ip:172.72.15.41
Master2:
Hostname:rac1
Ip:172.72.15.151
Slave1:
Hostname:rac2
Ip:172.72.15.152
詳細步驟:
一:導出數據:
在導出數據以前把數據庫的表都鎖上,並置於read only狀態
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
mysql> set global read_only=on;
Query OK, 0 rows affected (0.00 sec)
再開始maste1上面把數據導出來,因爲5.6版本增長了gtid的功能,因此在用mysqldump導出的時候,能夠經過 --set-gtid-purged 這個選項控制是否要用gtids來恢復,默認是開啓的!
[root@media ~]# mysqldump -u root -psbcenter -B new1 > /tmp/new1.sql
Warning: Using a password on the command line interface can be insecure.
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.
[root@media ~]# scp /tmp/new1.sql 172.72.15.151:/root/ (scp 複製文件,不一樣linux下)
root@172.72.15.151's password:
new1.sql 100% 8346 8.2KB/s 00:00
二:到maste2,slave1上導入數據
若是mysqldump 導出數據的時候 --set-gtid-purged 沒有設置成off,那麼master2啓動mysqld 的時候須要 啓用gtid_mode=on
Master2上導入數據
[root@rac1 ~]# mysql < new1.sql
Slave1 上導入數據
[root@rac2 ~]# mysql < /root/new1.sql
三:建立複製用戶
在master 1 上建立master2的複製用戶
mysql> GRANT REPLICATION SLAVE ON *.* TO 'rep1'@'172.72.15.151' IDENTIFIED BY '123456';
mysql> flush privileges ;
Query OK, 0 rows affected (0.00 sec)
在master2上建立slave1 的複製用戶
mysql> GRANT REPLICATION SLAVE ON *.* TO 'rep1'@'172.72.15.152' IDENTIFIED BY '123456';
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
四:在master2和slave1 上配置master屬性
在master2上配置master屬性
mysql> change master to
-> master_host='172.72.15.41',
-> master_user='rep1',
-> master_password='123456',
-> master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.17 sec)
mysql>start slave;
在slave1 上配置master屬性
mysql> change master to
-> master_host='172.72.15.152',
-> master_user='rep1',
-> master_password='123456',
-> master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.17 sec)
mysql>start slave;
整個過程就是這樣,另外要說起的一點是若是mysql 版本是5.6如下的或者是沒開啓gtids
的,須要在master2上配置log-slave-updates 參數,這個參數的做用是master2接受到master1的binlog到relay日誌中去時,也會更新到本身的binlog中去,以便給它的slave使用!