一氣之下,我搶過面試官電腦花10分鐘搭建了MySQL主從架構(gòu),面試官蒙了
大家好,我是互聯(lián)網(wǎng)老辛, 關(guān)注我,云計(jì)算路上不迷路;

@[toc]
面試官給下了死命令:三臺服務(wù)器,搭建一個(gè)MySQL主從架構(gòu),能不能搞定?
我一看距離下一家面試還有20分鐘。
行,10分鐘給你搞定,并寫好文檔。
一. 系統(tǒng)實(shí)驗(yàn)環(huán)境
[root@itlaoxin162 ~]# uname -r 3.10.0-1062.12.1.el7.x86_64 內(nèi)核是3.10.0 [root@itlaoxin162 ~]# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) 系統(tǒng)版本是centos 7.7
master: 192.168.1.162
slave1; 192.168.1.163
slave2: 192.168.1.71
二. 安裝MySQL5.7
1)下載MySQL 源
[root@itlaoxin162 ~]# wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
2)repo的安裝
[root@itlaoxin162 ~]# rpm -ivh mysql57-community-release-el7-9.noarch.rpm 警告:mysql57-community-release-el7-9.noarch.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID 5072e1f5: NOKEY 準(zhǔn)備中... ################################# [100%] 正在升級/安裝... 1:mysql57-community-release-el7-9 ################################# [100%]
刪除舊的MySQL
[root@itlaoxin162 ~]# rpm -qa |grep mysql php-mysql-5.4.16-48.el7.x86_64 mysql57-community-release-el7-9.noarch
[root@itlaoxin162 ~]# rpm -e php-mysql-5.4.16-48.el7.x86_64
3)開始安裝MySQL
[root@itlaoxin162 ~]# yum -y install mysql-community-server
4)啟動MySQL
[root@itlaoxin162 ~]# systemctl start mysqld.service [root@itlaoxin162 ~]# systemctl status mysqld.service
5) 查看版本:
[root@itlaoxin162 ~]# mysql -V mysql Ver 14.14 Distrib 5.7.34, for Linux (x86_64) using EditLine wrapper
6) 設(shè)置新密碼:
MySQL
[root@itlaoxin162 ~]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.34 MySQL Community Server (GPL) Copyright (c) 2000, 2021, Oracle and/or its affiliates.
修改密碼為ITlaoxin123
mysql> alter user 'root'@'localhost' identified by 'ITlaoxin123' ; Query OK, 0 rows affected (0.01 sec)
此時(shí)在192.168.1.162服務(wù)器上安裝MySQL5.7 就算完成了。
同樣的,我們我們需要在從服務(wù)器192.168.1.63 和192.168.1.71上安裝數(shù)據(jù)庫。
安裝數(shù)據(jù)庫的方式和master一樣,此處省略,請參考master的數(shù)據(jù)庫安裝方法。
三臺MySQL搭建好之后,需要把時(shí)間同步開啟,防火墻關(guān)閉:
7) 同步主服務(wù)器:
關(guān)閉防火墻和selinux [root@itlaoxin-163 ~]# setenforce 0 [root@itlaoxin-163 ~]# systemctl stop firewalld 同步服務(wù)器: [root@itlaoxin-163 ~]# /usr/sbin/ntpdate 192.168.1.162 25 Apr 18:50:18 ntpdate[75307]: no server suitable for synchronization found [root@itlaoxin-163 ~]#
三. 配置MySQL master主服務(wù)器
1.) 在/etc/my.cnf 中修改或者增加以下內(nèi)容
[root@itlaoxin162 ~]# tail -n 3 /etc/my.cnf server-id = 11 log-bin=master-bin log-slave-updates=true [root@itlaoxin162 ~]#
2) 重啟MySQL服務(wù)
[root@itlaoxin162 ~]# systemctl restart mysqld
3) 登錄MySQL程序,給服務(wù)器授權(quán)
#### 給服務(wù)器授權(quán) mysql> grant replication slave on *.* to 'myslave'@'192.168.1.%' identified by 'ZMedu123456'; Query OK, 0 rows affected, 1 warning (0.01 sec) 刷新 mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) 查看主服務(wù)器的狀態(tài): mysql> show master status; +-------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +-------------------+----------+--------------+------------------+-------------------+ | master-bin.000001 | 602 | | | | +-------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
file列顯示的日志名,position 列顯示偏移量
四. 配置從服務(wù)器
1) 在/etc/my.cnf 中修改或者增加以下內(nèi)容:
[root@itlaoxin-163 ~]# tail -n 3 /etc/my.cnf server-id = 22 ## 這里的ID不能與主服務(wù)器相同 relay-log=relay-log-bin ## 從主服務(wù)器上同步日志到本地 relay-log-index=slave-relay-bin.index ## 定義relay-log的位置和名稱 [root@itlaoxin-163 ~]#
2) 重啟從服務(wù)器的MySQL
登陸MySQL
[root@itlaoxin-163 ~]# mysql -uroot -p Enter password:
3) 配置同步
根據(jù)主服務(wù)器的結(jié)果來更改下面的master_log_file 和master_log_post 的參數(shù)
mysql> change master to master_host='192.168.1.162',master_user='myslave',master_password='ZMedu123456',master_log_file='master-bin.000001',master_log_pos=602; Query OK, 0 rows affected, 2 warnings (0.02 sec)
4) 啟動同步
mysql> start slave; Query OK, 0 rows affected (0.35 sec) mysql>
5) 查看slave確保兩個(gè)值都為yes
mysql> show slave status \G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.162 Master_User: myslave Master_Port: 3306 Connect_Retry: 60 Master_Log_File: master-bin.000001 Read_Master_Log_Pos: 602 Relay_Log_File: relay-log-bin.000002 Relay_Log_Pos: 321 Relay_Master_Log_File: master-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes
五. 驗(yàn)證主從復(fù)制結(jié)果:
1) 在主服務(wù)器上創(chuàng)建數(shù)據(jù)庫
192.168.1.62 主服務(wù)器
mysql> create database db_test; Query OK, 1 row affected (0.00 sec)
2) 查看主從服務(wù)器的數(shù)據(jù)庫是否同步
主服務(wù)器:
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | db_test | | mysql | | performance_schema | | sys | | test | +--------------------+ 6 rows in set (0.00 sec)
slave1:
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | db_test | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec)
slave 2服務(wù)器
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | db_test | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec)
可以看到主從同步已經(jīng)實(shí)現(xiàn)了。
后續(xù)
十分鐘搭建好后,面試官當(dāng)場蒙了,問怎么做的,于是我把這個(gè)技巧告訴了他:
在xshell里只要開啟一個(gè)建,三臺可以一起執(zhí)行命令:
搭建一臺的功夫,三臺都安裝好了MySQL;
從服務(wù)器不管有多少臺,在一臺操作,所有的命令都會發(fā)送到其他服務(wù)器同步執(zhí)行,你只需要看一下是否執(zhí)行成功就ok
面試官又要親自送我去地鐵站,這次真不去了!
MySQL
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。