MySQL中如何實現(xiàn)主從復制與讀寫分離,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
成都創(chuàng)新互聯(lián)長期為上千多家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為懷柔企業(yè)提供專業(yè)的成都網(wǎng)站制作、成都網(wǎng)站建設、外貿(mào)營銷網(wǎng)站建設,懷柔網(wǎng)站改版等技術服務。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。CentOS 5.x,6.0編譯安裝Nginx1.2.3+MySQL5.5.15+PHP5.3.6
我是再這個環(huán)境下做測試的,我是配置了1臺。利用VMware Workstation拷貝出來多臺服務器的,所以環(huán)境絕對一樣。
主數(shù)據(jù)庫服務器:192.168.10.130
從數(shù)據(jù)庫服務器:192.168.10.131
修改從服務器的配置文件,my.cnf 不一定路徑和我一樣哦,注意修改
vi etc/my.cnf
確定 server-id = 1,并確保這個ID沒有被別的MySQL服務所使用。
啟動mysql服務(192.168.10.130)
/etc/init.d/mysqld start
通過命令行登錄管理MySQL服務器
mysql -uroot -p
授權給從數(shù)據(jù)庫服務器192.168.10.131
mysql> GRANT REPLICATION SLAVE ON *.* to 'rep1'@'192.168.10.131' identified by '123';
查詢主數(shù)據(jù)庫狀態(tài)
Mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 | 261 | | |
+------------------+----------+--------------+------------------+
記錄下 FILE (mysql-bin.000005) 及 Position(261) 的值,在后面進行從服務器操作的時候需要用到。
修改從服務器的配置文件,my.cnf 不一定路徑和我一樣哦,注意修改
vi etc/my.cnf
將 server-id = 1修改為 server-id = 2,并確保這個ID沒有被別的MySQL服務所使用。
啟動mysql服務
/opt/mysql/init.d/mysql start
通過命令行登錄管理MySQL服務器
mysql -uroot -p
執(zhí)行同步SQL語句
mysql> change master to
master_host=’192.168.10.130’,
master_user=’rep1’,
master_password=’123’,
master_log_file=’mysql-bin.000005’,
master_log_pos=261;
注意上面的數(shù)據(jù)要和主服務器一樣,否則同步會失?。?/p>
正確執(zhí)行后啟動Slave同步進程
mysql> start slave;
主從同步檢查
mysql> show slave status\G
其中Slave_IO_Running 與 Slave_SQL_Running 的值都必須為YES,才表明狀態(tài)正常。
如果不是,請檢查上面是否那一步驟有問題!可以留言給我。。。如果都YES 可以進入下一步操作
鎖定主服務器mysql:
mysql> FLUSH TABLES WITH READ LOCK;
鎖定從服務器mysql:
mysql> FLUSH TABLES WITH READ LOCK;
將主服務器的數(shù)據(jù)文件(整個/opt/mysql/data目錄)復制到從服務器,建議通過tar歸檔壓縮后再傳到從服務器解壓覆蓋。
開啟主服務器mysql:
mysql> UNLOCK TABLES;
開啟從服務器mysql:
mysql> UNLOCK TABLES;
在主服務器上操作:
mysql> create database first_db; mysql> use first_db; mysql> create table first_tb(id int(3),name char(10)); mysql> INSERT INTO `first_tb` VALUES ('1', '1');
在從服務器上查看....
mysql> show databases;
=============================
+--------------------+
| Database |
+--------------------+
| information_schema |
| first_db |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.01 sec)
=============================
看完上述內(nèi)容,你們掌握MySQL中如何實現(xiàn)主從復制與讀寫分離的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!