通過(guò)讀寫(xiě)分離 、數(shù)據(jù)備份、負(fù)載均衡最終體現(xiàn)效率
實(shí)際開(kāi)發(fā)中,至少要有兩臺(tái)服務(wù)器
client: 客戶端C? ? ? ? sever:服務(wù)器S

master:主服務(wù)器? ? ? ? slave:從服務(wù)器

從隨主變
至少兩臺(tái)服務(wù)器的作用:主服務(wù)器上的所有數(shù)據(jù)備份到從服務(wù)器
手動(dòng)備份:麻煩,不可?。?/p>
解決方法:主服務(wù)器與從服務(wù)器進(jìn)行關(guān)聯(lián),從服務(wù)器自動(dòng)向主服務(wù)器請(qǐng)求數(shù)據(jù)(從隨主變)

防止丟失
不管主、從誰(shuí)掛了,數(shù)據(jù)都不會(huì)丟失

負(fù)載均衡
一臺(tái)從不夠,多幾臺(tái),更新在主里,查看是部分在從,部分在另一個(gè)從,效率快

MySQL主從同步配置
1. 主從同步的定義
主從同步使得數(shù)據(jù)可以從一個(gè)數(shù)據(jù)庫(kù)服務(wù)器復(fù)制到其他服務(wù)器上
2. 主從同步的機(jī)制(?Master:主服務(wù)器? ? ? ? Slave:從服務(wù)器)

主從核心點(diǎn):
write時(shí)——>Master里會(huì)有數(shù)據(jù)——>Date changes會(huì)記錄——>向二進(jìn)制的log文件寫(xiě)入如何改的、改了什么——>從服務(wù)器需要配置——>用I/O thread多線程的方式進(jìn)行I/O操作(讀-寫(xiě)、網(wǎng)絡(luò)收-發(fā))——>拿到數(shù)據(jù)——>把拿到的數(shù)據(jù)與之前的比對(duì)——>進(jìn)行更改——>數(shù)據(jù)一致
完成主從要點(diǎn):
1.? ? 配置主服務(wù)器log文件
2.? ? 給主、從分別配置唯一的序列號(hào),并用命令告訴主應(yīng)改把誰(shuí)當(dāng)成主服務(wù)器從而去那里不斷請(qǐng)求,這時(shí)就同步了
如何導(dǎo)數(shù)據(jù)?

windows為主,Ubuntu為從的配置

配置主:
打開(kāi)C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
改為與圖片相符

重啟服務(wù):?home鍵——>搜索服務(wù)——>找到MySQL57——>右鍵——>重新啟動(dòng)
配置從:
-- 編輯設(shè)置mysqld的配置文件,設(shè)置log_bin和server-id
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
-- 上面不好使用這個(gè)(記得權(quán)限:sudo chmod 777 /etc/mysql/mysql.conf.d/mysqld.cnf)
gedit /etc/mysql/mysql.conf.d/mysqld.cnf
改為與下圖一樣

-- 修改之后重啟mysql服務(wù)
sudo service mysql restart
-- 登入主服務(wù)器Windows中的mysql,給從服務(wù)器同步數(shù)據(jù)添加的帳號(hào)
-- 登錄主服務(wù)器
mysql –uroot –p2361559775
-- REPLICATION SLAVE:可以讓從服務(wù)器在主服務(wù)器復(fù)制? ON:哪一個(gè)數(shù)據(jù)庫(kù)的哪一個(gè)表 *.*:所有的數(shù)據(jù)庫(kù)所有的表 to:給誰(shuí) 'slave':新用戶名 '%':任意一臺(tái)機(jī)器登錄 最后一個(gè)引號(hào)里是密碼
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'slave';
-- 刷新權(quán)限才可以
FLUSH PRIVILEGES;
-- 用來(lái)找master_log_file和master_log_pos的值
show master status;
-- 查找ip(master_host的值)
ipconfig

-- (從)進(jìn)入U(xiǎn)buntu的mysql,設(shè)置連接到master主服務(wù)器(賬戶、密碼必須和剛剛創(chuàng)建的一一對(duì)應(yīng))master_log_file的值復(fù)制剛剛查到的file的值、 master_log_pos的值復(fù)制查到的Position的值
change master to master_host='192.168.57.1', master_user='slave', master_password='slave',master_log_file='LAPTOP-5VF2SFCR-bin.000001', master_log_pos=600;