溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

MySQL 中怎么搭建主從高可用

發(fā)布時(shí)間:2021-07-13 15:45:24 來(lái)源:億速云 閱讀:172 作者:Leah 欄目:大數(shù)據(jù)

MySQL 中怎么搭建主從高可用,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

1. mysql 下載

操作系統(tǒng):CentOS 7.5

MySQL:mysql-5.7.29

  在 CentOS 中只用使用 wget 命令下載即可,下載完成后進(jìn)行解壓:

> wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
> tar -xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
mysql-community-embedded-devel-5.7.29-1.el7.x86_64.rpm
mysql-community-test-5.7.29-1.el7.x86_64.rpm
mysql-community-embedded-5.7.29-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.29-1.el7.x86_64.rpm
mysql-community-libs-5.7.29-1.el7.x86_64.rpm
mysql-community-client-5.7.29-1.el7.x86_64.rpm
mysql-community-server-5.7.29-1.el7.x86_64.rpm
mysql-community-devel-5.7.29-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm
mysql-community-common-5.7.29-1.el7.x86_64.rpm

2 安裝

檢查移除系統(tǒng)自帶的mysql 

rpm -qa | grep mariadb
rpm -e mariadb-libs-5.5.41-2.el7_0.x86_64 --nodeps     # 如果有的話(huà),使用這種方式移除

上面 MySQL 的安裝包解壓后有很多組件,一般不需要全部安裝,挑常用的幾個(gè)安裝即可,并且要注意安裝順序:

rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.29-1.el7.x86_64.rpm

3 初始化

 mysqld --initialize --user=mysql # --user 是可選的參數(shù),意思是創(chuàng)建一個(gè)名稱(chēng)是 mysql 的用戶(hù)

初始化完成后,mysql 會(huì)給 root 用戶(hù)創(chuàng)建一個(gè)臨時(shí)的登錄密碼,登錄進(jìn)去后再對(duì) root 用戶(hù)的密碼進(jìn)行自定義修改,臨時(shí)密碼在 mysql 的日志中,默認(rèn)路徑是 /var/log/mysqld.log,一般在最后一行類(lèi)似下面:

A temporary password is generated for root@localhost: hSQ&zl/3m?oF

使用系統(tǒng)方式啟動(dòng) mysql,同時(shí)還把 mysql 的加入到系統(tǒng)自啟動(dòng)列表中:

systemctl start mysqld.service
systemctl status mysqld.service     # 檢查是否啟動(dòng)成功

使用上面日志中的臨時(shí)密碼登錄,登錄后修改密碼

mysql -uroot -p
set password=password('your_new_password');

為了讓集群中的各個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)能正常通信,需要關(guān)閉防火墻,線(xiàn)上環(huán)境需要在防火墻中放行 3306 的端口 

systemctl stop iptables      # iptables 防火墻
systemctl stop firewalld     # firewalld 防火墻,CentOS 自帶
systemctl disable firewalld.service   # 徹底一點(diǎn),從開(kāi)機(jī)啟動(dòng)中禁用掉

4 配置主從

4.1 配置主庫(kù)

修改主庫(kù)的配置文件 /etc/my.cnf,增加以下配置:

# log_bin
server-id=1                          # 設(shè)置 server-id,每個(gè)數(shù)據(jù)庫(kù)不能重復(fù),必須
log_bin=mysql-bin                    # 指定 binlog 的名稱(chēng),相當(dāng)于開(kāi)啟 bin log, 必須
sync-binlog=1                        # 開(kāi)始刷新 bin log 到磁盤(pán),每次有更新事務(wù),完成后都要馬上刷新到磁盤(pán)
binlog-ignore-db=performance_schema  # binlog 中忽略的庫(kù)
binlog-ignore-db=information_schema
binlog-ignore-db=sys
#binlog-do-db=lagou                   # 可以使用這個(gè)參數(shù)指定只同步那個(gè)庫(kù)

保存退出后,重啟數(shù)據(jù)庫(kù):

systemctl restart mysqld

設(shè)置哪些 ip 的 slave 可以從本 master 同步 binlog。

grant replication slave on *.* to 'root'@'%' identified by 'root';    # 復(fù)制授權(quán)
grant all privileges on *.* to 'root'@'%' identified by 'root';
flush privileges;                                                     # 刷新權(quán)限

在查看一下數(shù)據(jù)庫(kù)作為 master 的一些狀態(tài)

mysql> show master status;
+------------------+----------+--------------+-------------------------------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                          | Executed_Gtid_Set |
+------------------+----------+--------------+-------------------------------------------+-------------------+
| mysql-bin.000001 |      869 |              | performance_schema,information_schema,sys |                   |
+------------------+----------+--------------+-------------------------------------------+-------------------

重點(diǎn)關(guān)注當(dāng)前使用的 bin log 文件名稱(chēng)以及 bin log 的寫(xiě)入位置。

4.2 配置從庫(kù)

修改每個(gè)從庫(kù)的 /etc/my.cnf,添加一下內(nèi)容:

server-id=3   # 注意一個(gè)集群環(huán)境中的 id 不能沖突
relay_log=mysql-relay-bin
# read_only=1    # 開(kāi)啟只讀

重啟數(shù)據(jù)庫(kù),然后登陸到 mysql 中做一些相關(guān)配置:

show slave status;      # 查看 salve 狀態(tài),如果已經(jīng)是開(kāi)啟狀態(tài),需要先 stop slave;修改配置后,在 start slave;
# 設(shè)置主庫(kù)的 bin log 信息(用到了主庫(kù)中當(dāng)前 bin log 的文件名稱(chēng)以及當(dāng)前寫(xiě)位置)
change master to master_host='192.168.0.11',master_port=3306,master_user='root',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=869;
show slave status;    # 查看從庫(kù)狀態(tài), 第一次配置,此時(shí)連接 master 的狀態(tài)應(yīng)該是 No
start slave;          # 開(kāi)啟 salve 模式

看完上述內(nèi)容,你們掌握MySQL 中怎么搭建主從高可用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guā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)容。

AI