一、前言:為什么MySQL要做主從復制(讀寫分離)?
通俗來講,如果對數(shù)據(jù)庫的讀和寫都在同一個數(shù)據(jù)庫服務器中操作,業(yè)務系統(tǒng)性能會降低。
為了提升業(yè)務系統(tǒng)性能,優(yōu)化用戶體驗,可以通過做主從復制(讀寫分離)來減輕主數(shù)據(jù)庫的負載。
而且如果主數(shù)據(jù)庫宕機,可快速將業(yè)務系統(tǒng)切換到從數(shù)據(jù)庫上,可避免數(shù)據(jù)丟失。
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于
成都網(wǎng)站建設(shè)、成都做網(wǎng)站、沙市網(wǎng)絡推廣、
重慶小程序開發(fā)、沙市網(wǎng)絡營銷、沙市企業(yè)策劃、沙市品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們大的嘉獎;
成都創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供
沙市建站搭建服務,24小時服務熱線:18982081108,官方網(wǎng)址:muchs.cn
二、MySQL主從復制(讀寫分離)和集群的區(qū)別:
1、主從復制(讀寫分離):一般需要兩臺及以上數(shù)據(jù)庫服務器即可(一臺用于寫入數(shù)據(jù),一臺用于同步主的數(shù)據(jù)并用于數(shù)據(jù)查詢操作)。
局限性:
(1)配置好主從復制之后,同一張表,只能對一個服務器寫操作。如果在從上執(zhí)行了寫操作,而之后主也操作了這張表,或?qū)е轮鲝牟煌?;?jù)說可以配置成主主方式,但我還沒有研究到。
(2)主數(shù)據(jù)庫服務器宕機,需要手動將業(yè)務系統(tǒng)切換到從數(shù)據(jù)庫服務器。無法做到高可用性(除非再通過部署keepalive做成高可用方案)。
2、集群是由N臺數(shù)據(jù)庫服務器組成,數(shù)據(jù)的寫入和查詢是隨機到任意一臺數(shù)據(jù)庫服務器的,其他數(shù)據(jù)庫服務器會自動同步數(shù)據(jù)庫的操作。
任何一臺數(shù)據(jù)庫宕機,不會對整個集群造成大的影響。
局限性:我經(jīng)過測試才知道目前mysql集群版本(MySQL Cluster)只能對NDB存儲引擎的數(shù)據(jù)進行集群同步,如果是INNODB或其他的MySQL存儲引擎是不行的。這個也導致了我放棄了在業(yè)務系統(tǒng)中應用這種方案。
三、回歸正題,接下來開始MySQL5.6.12的主從復制教程:
1、MySQL5.6開始主從復制有兩種方式:基于日志(binlog);基于GTID(全局事務標示符)。
需要注意的是:GTID方式不支持臨時表!所以如果你的業(yè)務系統(tǒng)要用到臨時表的話就不要考慮這種方式了,至少目前最新版本MySQL5.6.12的GTID復制還是不支持臨時表的。
所以此篇教程主要是告訴大家如何通過日志(binlog)方式做主從復制!
2、MySQL官方提供的MySQL Replication教程:
http://dev.mysql.com/doc/refman/5.6/en/replication.html
這個官方教程強烈建議大家閱讀(需要一定的英語閱讀能力哦!不行就google翻譯后再閱讀吧~)。
3、準備工作:
(1)配置MySQL主從復制(讀寫分離)之前,需要在主從兩臺服務器先安裝好MySQL5.6。
(2)目前最新的MySQL5.6 GA版本是MySQL5.6.12
個人推薦Linux(RedHat/CentOS 6.4)源碼編譯安裝,具體可以看本站這篇教程:RedHat/CentOS源碼編譯安裝MySQL5.6.12
(3)注意:
(a)如果你需要用于生產(chǎn)環(huán)境,安教程安裝MySQL時不要急著做mysql啟動操作。建議把mysql初始化生成的/usr/local/mysql/mysql.cnf刪除,然后把你優(yōu)化好的mysql配置文件my.cnf放到/etc下。
(b)建議主備兩臺服務器在同一局域網(wǎng),主備兩臺數(shù)據(jù)庫網(wǎng)絡需要互通。
(4)我的環(huán)境:
主數(shù)據(jù)庫IP:192.168.100.2
從數(shù)據(jù)庫IP:192.168.100.3
4、修改主數(shù)據(jù)庫的的配置文件:
3 | log-bin=mysqlmaster-bin.log |
5 | #注意:下面這個參數(shù)需要修改為服務器內(nèi)存的70%左右 |
6 | innodb_buffer_pool_size = 512M |
7 | innodb_flush_log_at_trx_commit=1 |
8 | sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO |
9 | lower_case_table_names=1 |
10 | log_bin_trust_function_creators=1 |
修改之后要重啟mysql:
1 | # /etc/init.d/mysql restart |
5、修改從數(shù)據(jù)庫的的配置文件(server-id配置為大于1的數(shù)字即可):
3 | log-bin=mysqlslave-bin.log |
5 | #注意:下面這個參數(shù)需要修改為服務器內(nèi)存的70%左右 |
6 | innodb_buffer_pool_size = 512M |
7 | innodb_flush_log_at_trx_commit=1 |
8 | sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO |
9 | lower_case_table_names=1 |
10 | log_bin_trust_function_creators=1 |
修改之后要重啟mysql:
1 | # /etc/init.d/mysql restart |
6、SSH登錄到主數(shù)據(jù)庫:
(1)在主數(shù)據(jù)庫上創(chuàng)建用于主從復制的賬戶(192.168.100.3換成你的從數(shù)據(jù)庫IP):
2 | mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.100.3' IDENTIFIED BY 'repl'; |
(2)主數(shù)據(jù)庫鎖表(禁止再插入數(shù)據(jù)以獲取主數(shù)據(jù)庫的的二進制日志坐標):
1 | mysql> FLUSH TABLES WITH READ LOCK; |
(3)然后克隆一個SSH會話窗口,在這個窗口打開MySQL命令行:
2 | mysql> SHOW MASTER STATUS; |
3 | +------------------------+----------+--------------+------------------+-------------------+ |
4 | | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | |
5 | +------------------------+----------+--------------+------------------+-------------------+ |
6 | | mysqlmaster-bin.000001 | 332 | | | | |
7 | +------------------------+----------+--------------+------------------+-------------------+ |
在這個例子中,二進制日志文件是mysqlmaster-bin.000001,位置是332,記錄下這兩個值,稍后要用到。
(4)在主數(shù)據(jù)庫上使用mysqldump命令創(chuàng)建一個數(shù)據(jù)快照:
1 | #mysqldump -uroot -p -h227.0.0.1 -P3306 --all-databases --triggers --routines --events >all.sql |
2 | # 接下來會提示你輸入mysql數(shù)據(jù)庫的root密碼,輸入完成后,如果當前數(shù)據(jù)庫不大,很快就能導出完成。 |
(5)解鎖第(2)步主數(shù)據(jù)的鎖表操作:
7、SSH登錄到從數(shù)據(jù)庫:
(1)通過FTP、SFTP或其他方式,將上一步備份的主數(shù)據(jù)庫快照all.sql上傳到從數(shù)據(jù)庫某個路徑,例如我放在了/home/yimiju/目錄下;
(2)從導入主的快照:
2 | # mysql -uroot -p -h227.0.0.1 -P3306 < all.sql |
3 | # 接下來會提示你輸入mysql數(shù)據(jù)庫的root密碼,輸入完成后,如果當前數(shù)據(jù)庫不大,很快就能導入完成。 |
(3)給從數(shù)據(jù)庫設(shè)置復制的主數(shù)據(jù)庫信息(注意修改MASTER_LOG_FILE和MASTER_LOG_POS的值):
2 | mysql> CHANGE MASTER TO MASTER_HOST='192.168.100.2',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_LOG_FILE='mysqlmaster-bin.000001',MASTER_LOG_POS=332; |
3 | # 然后啟動從數(shù)據(jù)庫的復制線程: |
5 | # 接著查詢數(shù)據(jù)庫的slave狀態(tài): |
6 | mysql> SHOW slave STATUS \G |
7 | # 如果下面兩個參數(shù)都是Yes,則說明主從配置成功! |
(4)接下來你可以在主數(shù)據(jù)庫上創(chuàng)建數(shù)據(jù)庫、表、插入數(shù)據(jù),然后看從數(shù)據(jù)庫是否同步了這些操作
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享名稱:MySQL5.6主從復制配置-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://muchs.cn/article26/degdcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、動態(tài)網(wǎng)站、搜索引擎優(yōu)化、定制開發(fā)、品牌網(wǎng)站設(shè)計、企業(yè)建站
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)