MySql主從複製原理和環境配置搭建

主從複製原理   

實質就是經過二進制的sql文件實現主從複製mysql

MySQL的主從複製是MySQL自己自帶的一個功能,不須要額外的第三方軟件就能夠實現,其複製功能並非copy文件來實現的,而是藉助binlog日誌文件裏面的SQL命令實現的主從複製,能夠理解爲我再Master端執行了一條SQL命令,那麼在Salve端一樣會執行一遍,從而達到主從複製的效果。 linux

從庫生成兩個線程,一個I/O線程,一個SQL線程; sql

i/o線程去請求主庫 的binlog,並將獲得的binlog日誌寫到relay log(中繼日誌) 文件中;數據庫

主庫會生成一個 log dump 線程,用來給從庫 i/o線程傳binlog; vim

SQL 線程,會讀取relay log文件中的日誌,並解析成具體操做,來實現主從的操做一致,而最終數據一致;服務器

MySql主從複製的做用

故障切換,數據備份,讀寫分離,集羣高可用等session

主從複製配置

例:ide

準備兩臺服務器 測試

192.168.1.101(master主Mysql))spa

192.168.1.102(slave從Mysql)

①修改master主Mysql配置文件

vim /etc/my.cnf server_id=101 #服務器id log-bin=mysql-bin   #開啓日誌文件

 而後 重啓mysql服務

service mysqld restart

②主服務器給從服務器帳號受權

GRANT REPLICATION SLAVE ON *.* to 'mastersync'@'%' identified by 'mysql_123456';#mastersync爲自定義受權用戶名 mastersync爲自定義受權密碼

而後 navicat鏈接主mysql

show master status;

查詢主mysql的狀態 file爲日誌文件名 position爲日誌位置行

修改slave從Mysql配置文件

配置文件位置:
window 上  能夠登陸到mysql中  使用 show variables like '%data%' 先找到data 存放路徑, 通常my.ini 在 data文件的上一級
linux 上 通常在/etc/my.cnf 這個位置

vi /etc/my.cnf server_id=102 log-bin=mysql-bin binlog_do_db=site_test #要同步的數據庫

④在從節點配置訪問主節點的參數信息 添加 主節點主機,訪問主節點的用戶名及密碼,主節點二進制文件信息

#先中止同步 stop slave #從節點配置訪問主節點相關信息 帳號密碼,主日誌文件及日誌同步開始行(上面第二步查詢主mysql的狀態) change master to master_host='192.168.1.101',master_user='mastersync',master_password='mysql_123456', master_log_file='mysql-bin.000001',master_log_pos=13693; #啓動開始同步 start slave

而後查看從mysql同步狀態

show slave status;

能夠看到

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

表示同步成功

最後測試 主mysql數據庫添加表添加數據 從mysql數據庫刷新對應有相應的信息 

主從複製配置成功

 

 

附:如何考慮數據庫集羣時主鍵自增惟一性?設置步長

show variables like 'auto_incre%'; -- 會話的自增屬性值,同show session variables like 'auto_incre%';#修改會話自增的步長SET @@auto_increment_increment=2;#修改會話起始值SET @@auto_increment_offset=2;show global variables like 'auto_incre%';#修改全局自增的步長SET global auto_increment_increment=2;#修改全局起始值SET global auto_increment_offset=1;

相關文章
相關標籤/搜索