您好,登錄后才能下訂單哦!
下文主要給大家?guī)?lái)MySQL主從是如何實(shí)現(xiàn)切換的,希望MySQL主從是如何實(shí)現(xiàn)切換的能夠帶給大家實(shí)際用處,這也是我編輯這篇文章的主要目的。好了,廢話不多說(shuō),大家直接看下文吧。
在一主兩從環(huán)境中,模擬測(cè)試當(dāng)主庫(kù)宕機(jī)后的切換步驟
我的系統(tǒng)為 CentOS6.7 x64
mysql 版本為 5.5.33 并通過(guò)二進(jìn)制包安裝
上個(gè)截圖,三臺(tái)系統(tǒng)和 mysql 都是同樣的版本,同樣步驟的安裝
[root@mysql-01 ~]# mysql -V
mysql Ver 14.14 Distrib 5.5.33, for linux2.6 (x86_64) using readline 5.1
[root@mysql-01 ~]# uname -r
2.6.32-573.el6.x86_64
三臺(tái)環(huán)境的主機(jī)名和 ip 地址,職務(wù)
mysql-01 192.168.240.137 Master
mysql-02 192.168.240.138 Slave-01
msyql-03 192.168.240.139 Slave-02
Master上的操作
將 master 192.168.240.137 關(guān)機(jī),模擬真實(shí)場(chǎng)景中的宕機(jī)
[root@mysql-01 ~]# /etc/init.d/mysqld stop
Shutting down MySQL... SUCCESS!
[root@mysql-01 ~]# lsof -i :3306
[root@mysql-01 ~]#
Slave-01上的操作
確保 slave 數(shù)據(jù)庫(kù)上已經(jīng)執(zhí)行了 relay log 中的全部命令
在 slave 上執(zhí)行 show processlist; 命令,返回結(jié)果如下,說(shuō)明更新執(zhí)行完畢
Slave has read all relay log; waiting for the slave I/O thread to update it
在每個(gè)從庫(kù)上行 stop slave io_thread; 停止 IO 線程
mysql> show processlist;
mysql> stop slave io_thread;
編輯 /etc/my.cnf 文件,在 [ mysqld ] 目錄下,開(kāi)啟 log-bin=mysql-bin 選項(xiàng)
并且注意 server-id ,不能和 Slave-02 上的 server-id 相同
[root@mysql-02 ~]# vim /etc/my.cnf
log-bin=mysql-bin
server-id=2
編輯完后保存退出,重啟 mysql 服務(wù)
[root@mysql-02 ~]# /etc/init.d/mysqld restart
Shutting down MySQL. SUCCESS!
Starting MySQL.. SUCCESS!
在 Slave-01 上登錄 mysql
執(zhí)行 reset master 命令,將 Slave-01 升級(jí)為 Master
mysql> reset master;
Query OK, 0 rows affected (0.01 sec)
并查看 master 狀態(tài)
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 107
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)
創(chuàng)建一個(gè)用于同步的賬號(hào)并刷新
mysql> grant replication slave on *.* to yuci@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
編輯 /etc/hosts 文件,添加 ip 地址及對(duì)應(yīng)的主機(jī)名
(我使用的的 vmware 的 NAT 模式)
[root@mysql-02 ~]# vim /etc/hosts
192.168.240.138 mysql-02
192.168.240.139 mysql-03
在 Slave-02 上的操作
同樣先添加 ip 地址及對(duì)應(yīng)的主機(jī)名
[root@mysql-03 ~]# vim /etc/hosts
192.168.240.138 mysql-02
192.168.240.139 mysql-03
測(cè)試剛才創(chuàng)建的 yuci 用戶能否在 Slave-02 上登錄 Slave-01 的數(shù)據(jù)庫(kù)
[root@mysql-03 ~]# mysql -uyuci -p123456 -h292.168.240.138
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
。。。。。。。。。。。。
mysql>
yuci 用戶登錄成功,說(shuō)明可以使用該賬號(hào)進(jìn)行數(shù)據(jù)同步
使用 root 用戶登錄 mysql 服務(wù),查看更新是否全部完成
[root@mysql-03 ~]# mysql -uroot -p123456
mysql> show processlist;
Slave has read all relay log; waiting for the slave I/O thread to update it
停止 slave 服務(wù)
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
輸入主庫(kù)信息以及用于同步的賬號(hào),注意 log-file和log-pos,這兩個(gè)值是之前在 Slave-01 上執(zhí)行 show maste status\G 的返回值
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.240.138',
-> MASTER_PORT=3306,
-> MASTER_USER='yuci',
-> MASTER_PASSWORD='123456',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=107;
Query OK, 0 rows affected (0.01 sec)
開(kāi)啟 slave 服務(wù)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
查看 slave 狀態(tài)的 IO、SQL線程,兩個(gè) yes 說(shuō)明切換完成
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
到此為止主從切換的操作已經(jīng)全部完成,Slave-01 已經(jīng)升級(jí)為 Master 它的從云服務(wù)器是 Slave-02
在 Slave-01 上創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù),看看是否能夠同步
Slave-01 上
mysql> create database tongbu;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| tongbu |
+--------------------+
5 rows in set (0.00 sec)
Slave-02 上
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| tongbu |
+--------------------+
5 rows in set (0.00 sec)
對(duì)于以上關(guān)于MySQL主從是如何實(shí)現(xiàn)切換的,大家是不是覺(jué)得非常有幫助。如果需要了解更多內(nèi)容,請(qǐng)繼續(xù)關(guān)注我們的行業(yè)資訊,相信你會(huì)喜歡上這些內(nèi)容的。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。