1、mysql 一主一從部署
1.1酌儒、yum安裝mysql
http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
1.2 刻诊、配置Mysql擴(kuò)展源
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
rpm -ivh http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm
1-3站蝠、yum安裝mysql
yum install mysql-community-server -y
1-4菩貌、啟動(dòng)Mysql 并加入開機(jī)自啟
systemctl start mysqld
systemctl stop mysqld
systemctl enable mysqld
1-5泄私、使用Mysq初始密碼登錄數(shù)據(jù)庫
grep "password" /var/log/mysqld.log
mysql -uroot -pma1S8xjuEA/F
1-6物独、修改數(shù)據(jù)庫密碼
數(shù)據(jù)庫默認(rèn)密碼規(guī)則必須攜帶大小寫字母袜硫、特殊符號(hào),字符長度大于8否則會(huì)報(bào)錯(cuò)挡篓。
因此設(shè)定較為簡(jiǎn)單的密碼時(shí)需要首先修改set global validate_password_policy和_length參數(shù)值婉陷。
>mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
>mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
1-7、修改密碼
mysql> set password for root@localhost = password('mkxiaoer');
Query OK, 0 rows affected, 1 warning (0.00 sec)
或者
mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
1-8、登錄測(cè)試
[root@http-server ~]# mysql -uroot -pmkxiaoer
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.
2憨攒、概述
主從復(fù)制(也稱 AB 復(fù)制)允許將來自一個(gè)MySQL數(shù)據(jù)庫服務(wù)器(主服務(wù)器)的數(shù)據(jù)復(fù)制到一個(gè)或多個(gè)MySQL數(shù)據(jù)庫服務(wù)器(從服務(wù)器)世杀。
復(fù)制是異步的 從站不需要永久連接以接收來自主站的更新。
根據(jù)配置肝集,您可以復(fù)制數(shù)據(jù)庫中的所有數(shù)據(jù)庫瞻坝,所選數(shù)據(jù)庫甚至選定的表。
2.1杏瞻、MySQL中復(fù)制的優(yōu)點(diǎn)包括:
1所刀、橫向擴(kuò)展解決方案 - 在多個(gè)從站之間分配負(fù)載以提高性能。在此環(huán)境中捞挥,所有寫入和更新都必須在主服務(wù)器上進(jìn)行浮创。但是,讀取可以在一個(gè)或多個(gè)從設(shè)備上進(jìn)行砌函。該模型可以提高寫入性能(因?yàn)橹髟O(shè)備專用于更新)斩披,同時(shí)顯著提高了越來越多的從設(shè)備的讀取速度。
2讹俊、數(shù)據(jù)安全性 - 因?yàn)閿?shù)據(jù)被復(fù)制到從站垦沉,并且從站可以暫停復(fù)制過程,所以可以在從站上運(yùn)行備份服務(wù)而不會(huì)破壞相應(yīng)的主數(shù)據(jù)仍劈。
分析 - 可以在主服務(wù)器上創(chuàng)建實(shí)時(shí)數(shù)據(jù)厕倍,而信息分析可以在從服務(wù)器上進(jìn)行,而不會(huì)影響主服務(wù)器的性能贩疙。
3讹弯、遠(yuǎn)程數(shù)據(jù)分發(fā) - 您可以使用復(fù)制為遠(yuǎn)程站點(diǎn)創(chuàng)建數(shù)據(jù)的本地副本,而無需永久訪問主服務(wù)器
2.2这溅、前提是作為主服務(wù)器角色的數(shù)據(jù)庫服務(wù)器必須開啟二進(jìn)制日志
主服務(wù)器上面的任何修改都會(huì)通過自己的 I/O tread(I/O 線程)保存在二進(jìn)制日志 Binary log 里面组民。
從服務(wù)器上面也啟動(dòng)一個(gè) I/O thread,通過配置好的用戶名和密碼, 連接到主服務(wù)器上面請(qǐng)求讀取二進(jìn)制日志悲靴,然后把讀取到的二進(jìn)制日志寫到本地的一個(gè)Realy log(中繼日志)里面臭胜。
從服務(wù)器上面同時(shí)開啟一個(gè) SQL thread 定時(shí)檢查 Realy log(這個(gè)文件也是二進(jìn)制的),如果發(fā)現(xiàn)有更新立即把更新的內(nèi)容在本機(jī)的數(shù)據(jù)庫上面執(zhí)行一遍对竣。
每個(gè)從服務(wù)器都會(huì)收到主服務(wù)器二進(jìn)制日志的全部內(nèi)容的副本庇楞。
從服務(wù)器設(shè)備負(fù)責(zé)決定應(yīng)該執(zhí)行二進(jìn)制日志中的哪些語句榜配。
除非另行指定否纬,否則主從二進(jìn)制日志中的所有事件都在從站上執(zhí)行。
如果需要蛋褥,您可以將從服務(wù)器配置為僅處理一些特定數(shù)據(jù)庫或表的事件
03临燃、具體配置如下
03-01、Master節(jié)點(diǎn)配置/etc/my.cnf (master節(jié)點(diǎn)執(zhí)行)
vim /etc/my.cnf
[mysqld]
## mysql事務(wù)隔離基別
transaction-isolation=READ-COMMITTED
## 同一局域網(wǎng)內(nèi)注意要唯一
server-id=100
## 開啟二進(jìn)制日志功能,可以隨便饶だ取(關(guān)鍵)
log-bin=mysql-bin
## 復(fù)制過濾:不需要備份的數(shù)據(jù)庫乏沸,不輸出(mysql庫一般不同步)
binlog-ignore-db=mysql
## 為每個(gè)session 分配的內(nèi)存,在事務(wù)過程中用來存儲(chǔ)二進(jìn)制日志的緩存
binlog_cache_size=1M
## 主從復(fù)制的格式(mixed,statement,row爪瓜,默認(rèn)格式是statement)
binlog_format=mixed
03-02蹬跃、Slave節(jié)點(diǎn)配置/etc/my.cnf (slave節(jié)點(diǎn)執(zhí)行)
> vim /etc/my.cnf
[mysqld]
## mysql事務(wù)隔離基別
transaction-isolation=READ-COMMITTED
## 設(shè)置server_id,注意要唯一
server-id=102
## 開啟二進(jìn)制日志功能,以備Slave作為其它Slave的Master時(shí)使用
log-bin=mysql-slave-bin
## relay_log配置中繼日志
relay_log=edu-mysql-relay-bin
##復(fù)制過濾:不需要備份的數(shù)據(jù)庫铆铆,不輸出(mysql庫一般不同步)
binlog-ignore-db=mysql
## 如果需要同步函數(shù)或者存儲(chǔ)過程
log_bin_trust_function_creators=true
## 為每個(gè)session 分配的內(nèi)存蝶缀,在事務(wù)過程中用來存儲(chǔ)二進(jìn)制日志的緩存
binlog_cache_size=1M
## 主從復(fù)制的格式(mixed,statement,row,默認(rèn)格式是statement)
binlog_format=mixed
## 跳過主從復(fù)制中遇到的所有錯(cuò)誤或指定類型的錯(cuò)誤薄货,避免slave端復(fù)制中斷翁都。
## 如:1062錯(cuò)誤是指一些主鍵重復(fù),1032錯(cuò)誤是因?yàn)橹鲝臄?shù)據(jù)庫數(shù)據(jù)不一致
slave_skip_errors=1062
03-03谅猾、在master服務(wù)器授權(quán)slave服務(wù)器可以同步權(quán)限(master節(jié)點(diǎn)執(zhí)行)
注意:在master服務(wù)器上執(zhí)行
mysql > mysql -uroot -pmaster的密碼
# 授予slave服務(wù)器可以同步master服務(wù)
mysql > grant replication slave, replication client on *.* to 'root'@'slave服務(wù)的ip' identified by 'slave服務(wù)器的密碼';
mysql > flush privileges;
# 查看MySQL現(xiàn)在有哪些用戶及對(duì)應(yīng)的IP權(quán)限(可以不執(zhí)行柄慰,只是一個(gè)查看)
mysql > select user,host from mysql.user;
03-04、查詢master服務(wù)的binlog文件名和位置(master節(jié)點(diǎn)執(zhí)行)
mysql > show master status;
日志文件名:mysql-bin.000002
復(fù)制的位置:154
03-05税娜、slave進(jìn)行關(guān)聯(lián)master節(jié)點(diǎn)(slave節(jié)點(diǎn)執(zhí)行)
mysql > mysql -uroot -p你slave的密碼
開始綁定
mysql> change master to master_host='master服務(wù)器ip', master_user='root', master_password='master密碼', master_port=3306, master_log_file='mysql-bin.000002',master_log_pos=154;
這里注意!!!! master_log_file 和 master_log_pos 都是通過 master服務(wù)器通過show master status獲得坐搔。
03-06、在slave節(jié)點(diǎn)上查看主從同步狀態(tài)(slave節(jié)點(diǎn)執(zhí)行)
啟動(dòng)主從復(fù)制
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
再查看主從同步狀態(tài)
mysql> show slave status\G;
同步狀態(tài)圖
03-07巧涧、主從復(fù)制測(cè)試
1:在master下創(chuàng)建數(shù)據(jù)庫和表薯蝎,或者修改和新增,刪除記錄都會(huì)進(jìn)行同步(master節(jié)點(diǎn)執(zhí)行)
2:點(diǎn)擊查看slave節(jié)點(diǎn)信息(slave節(jié)點(diǎn)執(zhí)行)