MySQL主從復制結構是基於mysql bin-log日志基礎上,從庫通過打開IO進程收到主庫的bin-log日志增量
信息,並保存到本地relay log,而後再通過打開MYSQL進程從relay log上獲取的增量信息並翻譯成SQL語
句後寫到從數據庫。
主從復制結構,實際上可以實現兩個功能:
1.從庫充當主庫的數據庫備份實例
2.讀寫分離,主庫負責正常讀寫數據,從庫只負責讀數據
實際生產環境,因為很多應用實際讀數據庫的次數遠大於寫數據庫的次數,所以在項目開發初期,編寫
程序時做一個判斷,對所有讀的操作全部推到從庫,若從庫無法獲取數據,則再向主庫獲取數據,從而
在一定意義上實現讀寫分離,緩解主庫的IO壓力。
所以生產環境下推薦使用這種架構。
系統環境:centos6.3 x64
數據庫: mysql-5.6.10
mysql master:192.168.100.90
mysql slave:192.168.100.91
MySQL主從復制結構是基於mysql bin-log日志基礎上,從庫通過打開IO進程收到主庫的bin-log日志增量
信息,並保存到本地relay log,而後再通過打開MYSQL進程從relay log上獲取的增量信息並翻譯成SQL語
句後寫到從數據庫。
主從復制結構,實際上可以實現兩個功能:
1.從庫充當主庫的數據庫備份實例
2.讀寫分離,主庫負責正常讀寫數據,從庫只負責讀數據
實際生產環境,因為很多應用實際讀數據庫的次數遠大於寫數據庫的次數,所以在項目開發初期,編寫
程序時做一個判斷,對所有讀的操作全部推到從庫,若從庫無法獲取數據,則再向主庫獲取數據,從而
在一定意義上實現讀寫分離,緩解主庫的IO壓力。
所以生產環境下推薦使用這種架構。
系統環境:centos6.3 x64
數據庫: mysql-5.6.10
mysql master:192.168.100.90
mysql slave:192.168.100.91
一.部署環境:
1.關閉iptables和SELINUX
# service iptables stop
# setenforce 0
# vi /etc/sysconfig/selinux
---------------
SELINUX=disabled
---------------
2.安裝配置mysql傳送門:http://www.showerlee.com/archives/6
二.主mysql配置:(mysql master)
修改mysql配置文件:
# vi /etc/my.cnf
添加:
-----------------
# Replication Master Server
# bin日志路徑
log-bin = /usr/local/mysql/log/bin.log
# 服務器ID號
server-id = 1
# 忽略mysql系統庫復制
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
------------
重啟服務
# service mysqld restart
登錄mysql後台:
# mysql -u root -p123456
查看此刻登錄賬號:
> select user();
在master為slave添加同步帳號:
> grant replication slave on *.* to 'slave'@'192.168.100.91' identified by '123456';
查看創建的用戶:
> select user.host from mysql.user;
查看權限:
> show grants for 'slave'@'192.168.100.91';
mysql鎖表只讀(其他賬戶登錄mysql後無法進行寫表操作,防止備份數據庫後,主mysql表更新,導致和
從數據庫內容不一致)
> flush tables with read lock;
查看鎖表倒計時時間:
> show variables like '%timeout%';
------------------------
....
wait_timeout | 28800
------------------------
將master的數據庫表全部備份導出,並傳送到slave服務器上。
# /usr/local/mysql/bin/mysqldump -u root -p123456 --opt --flush-logs --all-database >
/root/allbak.sql
# cd ~
# scp allbak.sql [email protected]:/root
查看mysql偏移量(數據庫如果有寫操作,偏移值會遞增)
# mysql -u root -p123456 -e "show master status"
----------------------
+------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------+----------+--------------+------------------+-------------------+
| bin.000009 | 120 | | | |
+------------+----------+--------------+------------------+-------------------+
----------------------
保證FILE列和Position列與從庫配置一致:
三.從mysql配置(mysql slave)
修改mysql配置文件:
# vi /etc/my.cnf
添加:
--------------------
# Replication Slave Server
# bin日志路徑(無需開bin-log日志)
#log-bin = /usr/local/mysql/log/bin.log
server-id=2
# 只讀:
read-only
# 忽略mysql系統庫復制
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
---------------------
重啟服務
# service mysqld restart
恢復server的數據庫到slave
#/usr/local/mysql/bin/mysql -u root -p123456 < /root/allbak.sql
首頁 1 2
末頁