您好,登錄后才能下訂單哦!
MySQL中如何實(shí)現(xiàn)主從復(fù)制與讀寫分離,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
CentOS 5.x,6.0編譯安裝Nginx1.2.3+MySQL5.5.15+PHP5.3.6
我是再這個(gè)環(huán)境下做測試的,我是配置了1臺。利用VMware Workstation拷貝出來多臺服務(wù)器的,所以環(huán)境絕對一樣。
主數(shù)據(jù)庫服務(wù)器:192.168.10.130
從數(shù)據(jù)庫服務(wù)器:192.168.10.131
修改從服務(wù)器的配置文件,my.cnf 不一定路徑和我一樣哦,注意修改
vi etc/my.cnf
確定 server-id = 1,并確保這個(gè)ID沒有被別的MySQL服務(wù)所使用。
啟動mysql服務(wù)(192.168.10.130)
/etc/init.d/mysqld start
通過命令行登錄管理MySQL服務(wù)器
mysql -uroot -p
授權(quán)給從數(shù)據(jù)庫服務(wù)器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) 的值,在后面進(jìn)行從服務(wù)器操作的時(shí)候需要用到。
修改從服務(wù)器的配置文件,my.cnf 不一定路徑和我一樣哦,注意修改
vi etc/my.cnf
將 server-id = 1修改為 server-id = 2,并確保這個(gè)ID沒有被別的MySQL服務(wù)所使用。
啟動mysql服務(wù)
/opt/mysql/init.d/mysql start
通過命令行登錄管理MySQL服務(wù)器
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ù)要和主服務(wù)器一樣,否則同步會失敗!
正確執(zhí)行后啟動Slave同步進(jìn)程
mysql> start slave;
主從同步檢查
mysql> show slave status\G
其中Slave_IO_Running 與 Slave_SQL_Running 的值都必須為YES,才表明狀態(tài)正常。
如果不是,請檢查上面是否那一步驟有問題!可以留言給我。。。如果都YES 可以進(jìn)入下一步操作
鎖定主服務(wù)器mysql:
mysql> FLUSH TABLES WITH READ LOCK;
鎖定從服務(wù)器mysql:
mysql> FLUSH TABLES WITH READ LOCK;
將主服務(wù)器的數(shù)據(jù)文件(整個(gè)/opt/mysql/data目錄)復(fù)制到從服務(wù)器,建議通過tar歸檔壓縮后再傳到從服務(wù)器解壓覆蓋。
開啟主服務(wù)器mysql:
mysql> UNLOCK TABLES;
開啟從服務(wù)器mysql:
mysql> UNLOCK TABLES;
在主服務(wù)器上操作:
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');
在從服務(wù)器上查看....
mysql> show databases;
=============================
+--------------------+
| Database |
+--------------------+
| information_schema |
| first_db |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.01 sec)
=============================
看完上述內(nèi)容,你們掌握MySQL中如何實(shí)現(xiàn)主從復(fù)制與讀寫分離的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。