程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql 5.6.14主從復制(也稱mysql AB復制)情況設置裝備擺設辦法

mysql 5.6.14主從復制(也稱mysql AB復制)情況設置裝備擺設辦法

編輯:MySQL綜合教程

mysql 5.6.14主從復制(也稱mysql AB復制)情況設置裝備擺設辦法。本站提示廣大學習愛好者:(mysql 5.6.14主從復制(也稱mysql AB復制)情況設置裝備擺設辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql 5.6.14主從復制(也稱mysql AB復制)情況設置裝備擺設辦法正文


1、mysql主(稱master)從(稱slave)復制的道理:

      (1).master將數據轉變記載到二進制日記(binary log)中,也等於設置裝備擺設文件log-bin指定的文件(這些記載叫做二進制日記事宜,binary log events)
      (2).slave將master的binary log events拷貝到它的中繼日記(relay log)
      (3).slave重做中繼日記中的事宜,將轉變反應它本身的數據(數據重演)

附扼要道理圖:

2、mysql主從復制支撐的類型:

    (1).基於語句的復制:在主辦事器上履行的SQL語句,在從辦事器上履行異樣的語句.MySQL默許采取基於語句的復制,效力比擬高

word-spacing: 0px">   (2).基於行的復制:把轉變的內容直接復制曩昔,而不關懷究竟轉變該內容是由哪條語句激發的 . 從mysql5.0開端支撐
word-spacing: 0px">   (3).混雜類型的復制: 默許采取基於語句的復制,一旦發明基於語句的沒法准確的復制時,就會采取基於行的復制.

3、主從設置裝備擺設須要留意的處所:

   (1).主DB server和從DB server數據庫的版本分歧
   (2).主DB server和從DB server數據庫數據分歧[ 這裡就會可以把主的備份在從上復原,也能夠直接將主的數據目次拷貝到從的響應數據目次]
   (3).主DB server開啟二進制日記,主DB server和從DB server的server_id都必需獨一

4、主從設置裝備擺設的扼要步調:

附扼要表示圖:

1.主DB SERVER上的設置裝備擺設

   (1).裝置數據庫
   (2).修正數據庫設置裝備擺設文件,指明server_id,開啟二進制日記(log-bin)
   (3).啟動數據庫,檢查以後是哪一個日記,position號是若干
   (4).上岸數據庫,受權用戶[ip地址為從機IP地址,假如是雙向主從,這裡的還須要受權本機的IP地址(此時本身的IP地址就是從IP地址)]
   (5).備份數據庫[記得加鎖息爭鎖]
   (6).傳送備份到從DB server上
   (7).啟動數據庫

以下步調,為單向主從搭建勝利,想搭建雙向主從須要的步調:

   (1).上岸數據庫,指定主DB server的地址,用戶,暗碼等信息[此步僅雙向主從時,須要]

   (2).開啟同步,檢查狀況

2.從DB SERVER上的設置裝備擺設

  (1).裝置數據庫
  (2).修正數據庫設置裝備擺設文件,指明server_id[假如是搭建雙向主從的話,也要開啟二進制日記(log-bin)]
  (3).啟動數據庫,復原備份
  (4).檢查以後是哪一個日記,position號是若干[單向主從此步不須要,雙向主從須要]
  (5).指定主DB server的地址,用戶,暗碼等信息
  (6).開啟同步,檢查狀況

5、單向主從情況[也稱 mysql A/B復制]的搭建案例:

1.主DB server和從DB server都裝置響應版本的數據庫,我的兩台DB server都曾經裝置好(5.6.14版本),都邑是雙實例,這裡就不演示裝置,可以參考mysql源碼編譯裝置和mysql多實例設置裝備擺設兩篇文章
注:兩台機械的的selinux都是disable(永遠封閉selinux,請修正/etc/selinux/config,將SELINUX改成disabled),防火牆可以選擇封閉,開啟的話也行[不可的話,添加防火牆戰略]
2.修正主DB server的設置裝備擺設文件(/etc/my.cnf),開啟日記功效,設置server_id值,包管獨一[client102為主DB server]

[root@client102 scripts]# vim /etc/my.cnf 
# 修正設置裝備擺設文件裡,上面兩個參數: 
# 設置server_id,普通建議設置為IP,或許再加一些數字 
server_id =102
# 開啟二進制日記功效,可以隨意取,最好有寄義 
log-bin=mysql3306-bin

3.啟動數據庫辦事器,並上岸數據庫,授與響應的用戶用於同步

# 我這裡是多實例mysql,所以啟動是如許的,假如年夜家是單實例的,就直接啟動便可以[/etc/init.d/mysqld start] 
[root@client102 scripts]# mysqld_multi start 3306 
# 上岸mysql 辦事器 
[root@client102 scripts]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p 
# 授與用戶權限用於主從同步 
mysql> grant replication slave on *.* to 'kongzhong'@'192.168.1.100' identified by 'kongzhong'; 
Query OK, 0 rows affected (0.00 sec) 
# 刷新受權表信息 
mysql> flush privileges; 
Query OK, 0 rows affected (0.00 sec) 
# 檢查position 號,記下position 號(很主要,從機上須要這個position號和如今的日記文件,我這裡是414和mysql3306-bin.000001) 
mysql> show master status; 
+----------------------+----------+--------------+------------------+-------------------+
| File         | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | 
+----------------------+----------+--------------+------------------+-------------------+
| mysql3306-bin.000001 |   414 |       |         |          | 
+----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

4.為包管主DB server和從DB server的數據分歧,這裡采取主備份,從復原來完成初始數據分歧


# 暫時鎖表
mysql> flush tables with read lock;
# 我這裡實施的全庫備份,在現實中,我們能夠只同步某一個庫,可以只備份一個庫
# 新開一個終端,履行以下操作
[root@client102 data]# mysqldump  -p3306 -uroot -p  -S /usr/local/mysql/mysqld3306.sock  --all-databases > /tmp/mysql.sql
# 解鎖
mysql> unlock tables;
# 將備份的數據傳送到從機上,用於恢復
 [root@client102 data]# scp  /tmp/mysql.sql  [email protected]:/tmp

5.從DB server設置裝備擺設文件只需修正一項,其他用敕令行做


[root@client100 ~]# vim /etc/my.cnf
# 設置server_id,普通建議設置為IP,或許再加一些數字
server_id =100

6.啟動數據庫,復原備份數據


# 啟動數據庫
[root@client100 ~]# mysqld_multi start 3306
# 復原主DB server備份的數據
[root@client100 ~]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p < /tmp/mysql.sql

7.上岸數據庫,添加相干參數(主DBserver的ip/端口/同步用戶/暗碼/position號/讀取哪一個日記文件)


[root@client100 ~]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p
mysql> change master to
    -> master_host='192.168.1.102',
    -> master_user='kongzhong',
    -> master_password='kongzhong',
    -> master_port=3306,
    -> master_log_file='mysql3306-bin.000001',
    -> master_log_pos=414;
#/*  上面是一部門注解:
#/*  指定主DB server的IP地址
master_host='192.168.1.102'
#/*  指定用於同步的用戶[這個就是我們在主DB server受權的用戶]
master_user='kongzhong'
#/* 指定用於同步的用戶的暗碼
master_password='kongzhong'
#/* 指定主DB server的端口[上面一個例子,可以重點看這個]
master_port=3306
#/*  指定從DB server 從哪一個日記文件開端讀[在主DB server上應用show master status檢查到日記]
master_log_file='mysql3306-bin.000001'
#/*  指定 從哪一個POSITION號開端讀
master_log_pos=414
# 開啟主從同步
mysql> start slave;
# 檢查主從同步狀況
mysql> show slave status\G;
# 重要看以下兩個參數:[這兩個參數假如是yes就表現主從同步正常]
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

8.上面年夜家便可以在主DB server上新建一個表,看能否能同步到從DB server上,我這裡就意外試了

[注:萬萬不要在從DB server手動拔出數據,那樣數據就紛歧致,主從就會斷開,須要從新設置裝備擺設了]

假如有成績,可以測驗考試封閉IPTABLES(/etc/init.d/iptables stop)和selinux(setenforce 0:暫時封閉selinux,永遠封閉selinux,請修正/etc/selinux/config,將SELINUX改成disabled)

9.下面所搭建的是單向主從,也是用的比擬多的,有人想懂得雙向主從是若何搭建,其實,就是主DB server和從DB sever都開啟日記功效,然後在主DB SERVER履行受權用戶[這裡受權的是本身作為從辦事器,也就是這裡的IP地址是主DB server的IP地址],然後再在主DB server長進行chang master操作.有不睬解的可以留言訊問.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved