mysql replicaton
創新互聯公司主營重慶網站建設的網絡公司,主營網站建設方案,成都app開發,重慶h5重慶小程序開發搭建,重慶網站營銷推廣歡迎重慶等地區企業咨詢環境:主:192.168.48.150
從:192.168.48.152
簡單的說,就是master把數據庫的改變寫入二進制日志,slave同步這些二進制日志,并根據這些二進制進行數據操作。
mysql Replicaton的用途
1.fail over
2.backup server
3.high performance
master和slave上的數據是一樣的,如果我們從master上進行寫操作,slave上進行讀操作,這就叫讀寫分離。
配置Replication
step1:
Slave是通過MYSQL連接登陸到Master上來讀取二進制日志的。因此需要在Master上給Slave配置權限。
mysql>GRANT REPLICATION SLAVE ON *.* TO 'repl'@'slaveip' IDENTIFIED BY 'replPass';
mysql>FLUSH PRIVILEGES;
eg:在Master上受權:
mysql> grant replication slave on *.* to repl@192.168.48.152 identified by 'repl';
mysql> flush privileges;
在slave上測試連接:
#mysql -h292.168.48.150 -urepl -prepl
可以連上表示沒有問題。
step2:
在Master上要打開二進制日志,并標識server-id。
server-id用于唯一標識主機,數字取值范圍1-2**32-1.
#vi /etc/my.cnf
[mysqld]
log-bin
binlog-format=row
sync-binlog=1
server-id=1
#service mysqld restart
step3:
制作一個Master的完整備份,并且執行prepare。
#這里的原理是,將主要原有的數據備份打包到從上,從服務器直接還原,在這個基礎之上再進行二進制傳輸同步,這樣會節省資源。
我們使用innobackupex這個工具,這個工具可以記錄備份數據的二進制編號,這樣從服務器就會從備份的基礎上再進行同步,也就是增量備份。
#innobackupex --user=dba --password=xxx/var/lib/backup/
#innobackupex --use-memory=500m --apply-log /var/lib/backup/2014-03_16-40-05/
eg: 在master上的配置
#innobackupex安裝:http://my.oschina.net/sansom/blog/160434
# mkdir /var/lib/backup/
# cd /var/lib/backup/
#innobackupex --user=root --password=123456 /var/lib/backup/
#這樣目錄里會生成原始文件
#還要執行一步操作,就是生成innodb日志文件
#innobackupex --use-memory=500m --apply-log /var/lib/backup/原始文件名/
step4:
將備份拷貝至slave,并放入數據文件目錄。
in master:
#yum install openssh-clients -y (master and slave both need to install)
#scp -r /var/lib/backup/2016-03-11_10-26-10/ 192.168.48.152:/var/lib/backup/
in slave:
#service mysqld stop
#mv /var/lib/backup/2016-03-11_07-40-35/* /var/lib/mysql/(生產環境中不要直接覆蓋)
#ls(查看是否所有文件都被mv過去,如果沒有,就再次復制過去)
#cd /var/lib/mysql/
#chown -R mysql. * #拷貝過來的文件要改權限
#service mysqld start(這一步我的mysql啟不來了,原因是沒有關閉selinux)
#查看數據是否同步正確
step5:
在slave上配置server-id,標識服務器。
# vi /etc/my.cnf
[mysqld]
server-id=2
#service mysqld restart
step6:
查看并記錄二進制日志中的position ID.(這個是innobackupex工具為我們生成的)
in slave:
#cd /var/lib/mysql
cat xtrabackup_binlog_info
顯示:mysqld-bin.000001 341
position id 為341
step7:
配置slave replication.
in slave:
mysql>change master to master_host='192.168.48.150',
-->master_user='repl',
-->master_password='repl',
-->master_log_file='mysqld-bin.000001',
-->master_log_pos=341;
step8:
啟動replication,并檢查結果。
in slave:
mysql>start slave;
mysql>show slave status\G;
結果如下:
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event(當前無同步事件)
Master_Host: 192.168.48.150(主 ip)
Master_User: repl(主用戶)
Master_Port: 3306(端口)
Connect_Retry: 60(重試時間/s)
Master_Log_File: mysqld-bin.000001(主同步二進制文件)
Read_Master_Log_Pos: 341(主位置號)
Relay_Log_File: mysqld-relay-bin.000002(從二進制文件)
Relay_Log_Pos: 252(從位置號)#主從的號雖然不一樣,但是是有對應關系的,邏輯上是一樣的。
Relay_Master_Log_File: mysqld-bin.000001
Slave_IO_Running: Yes(必須為yes時才正常)
Slave_SQL_Running: Yes(必須為yes時才正常)
#主會啟運一個進程,從會啟運兩個進程,我們可以執行如下語句查看:
master_mysql>show processlist\G;
*************************** 1. row ***************************
Id: 11
User: repl
Host: 192.168.48.152:54413
db: NULL
Command: Binlog Dump
Time: 707
State: Has sent all binlog to slave; waiting for binlog to be updated
Info: NULL
*************************** 2. row ***************************
slave_mysql>show processlist\G;
*************************** 2. row ***************************
Id: 3
User: system user
Host:
db: NULL
Command: Connect
Time: 680
State: Waiting for master to send event
Info: NULL
*************************** 3. row ***************************
Id: 4
User: system user
Host:
db: NULL
Command: Connect
Time: 680
State: Has read all relay log; waiting for the slave I/O thread to update it
Info: NULL
3 rows in set (0.00 sec)
#從的兩個進程,一個用于接收二進制,另一個用于解析二進制,執行語句。
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 341
Relay_Log_Space: 408
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
這樣就同步了,在主上操作的,從都會同步嘍。
另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
本文標題:mysqlreplication-創新互聯
分享路徑:http://vcdvsql.cn/article42/hdghc.html
成都網站建設公司_創新互聯,為您提供網站策劃、動態網站、網站建設、品牌網站設計、網站改版、定制開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯