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操作.有不睬解的可以留言訊問.