共計 2114 個字符,預計需要花費 6 分鐘才能閱讀完成。
MySQL 中如何實現主從復制與讀寫分離,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
1,mysql 的配置
CentOS 5.x,6.0 編譯安裝 Nginx1.2.3+MySQL5.5.15+PHP5.3.6
我是再這個環境下做測試的,我是配置了 1 臺。利用 VMware Workstation 拷貝出來多臺服務器的,所以環境絕對一樣。
2,場景描述
主數據庫服務器:192.168.10.130
從數據庫服務器:192.168.10.131
3,配置主服務器
修改從服務器的配置文件,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
授權給從數據庫服務器 192.168.10.131
mysql GRANT REPLICATION SLAVE ON *.* to rep1 @ 192.168.10.131 identified by 123
查詢主數據庫狀態
Mysql show master status;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000005 | 261 | | |
+——————+———-+————–+——————+
記錄下 FILE (mysql-bin.000005) 及 Position(261) 的值,在后面進行從服務器操作的時候需要用到。
4,配置從服務器
修改從服務器的配置文件,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
執行同步 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;
注意上面的數據要和主服務器一樣,否則同步會失敗!
正確執行后啟動 Slave 同步進程
mysql start slave;
主從同步檢查
mysql show slave status\G
其中 Slave_IO_Running 與 Slave_SQL_Running 的值都必須為 YES,才表明狀態正常。
如果不是,請檢查上面是否那一步驟有問題!可以留言給我。。。如果都 YES 可以進入下一步操作
5,第一次同步主從服務器數據
鎖定主服務器 mysql:
mysql FLUSH TABLES WITH READ LOCK;
鎖定從服務器 mysql:
mysql FLUSH TABLES WITH READ LOCK;
將主服務器的數據文件(整個 /opt/mysql/data 目錄)復制到從服務器,建議通過 tar 歸檔壓縮后再傳到從服務器解壓覆蓋。
開啟主服務器 mysql:
mysql UNLOCK TABLES;
開啟從服務器 mysql:
mysql UNLOCK TABLES;
6,測試是否同步
在主服務器上操作:
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)
=============================
看完上述內容,你們掌握 MySQL 中如何實現主從復制與讀寫分離的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!