您好,登錄后才能下訂單哦!
Mysql的主從復制
Mysql的主從復制,我們一般用來保證數據間的同步關系,比如有分公司,我們就需要把數據同步給千里之外的分公司,這樣就很方便快捷。這個實驗我們還實現了ssl安全連接,這樣在同步的過程起到了安全保護數據的作用
我們這個實驗用的mysql版本是5.7,相比較之前的版本會有一些不同
Mysql5.7 支持原生systemd
Mysql5.7 對于多核CPU、固態硬盤、鎖有著更好的優化 更好的InnoDB存儲引擎 更為健壯的復制功能
安裝mysql:
我所用的系統環境:centos7.2x86_64,這個版本自帶mariadb-libs,所以要把它卸載:
Rpm -aq | grep mariadb
安裝依賴包:
安裝cmake
【root@localhost ~】# tar zxf cmake-3.5.2.tar.gz
【root@localhost ~】# cd cmake-3.5.2/
【root@localhost cmake-3.5.2】# ./bootstrap
使用 gmake && gmakeinstall 編譯
【root@localhost cmake-3.5.2】# gmake && gmake install
安裝ncurses
【root@localhost ~】# tar zxf ncurses-5.9.tar.gz
【root@localhost ~】# cd ncurses-5.9/
【root@localhost ncurses-5.9】# ./configure && make && make install
安裝bison
【root@localhost ~】# tar zxf bison-3.0.4.tar.gz
【root@localhost ~】# cd bison-3.0.4/
【root@localhost bison-3.0.4】# ./configure && make && make install
安裝boost
【root@localhost ~】# tar zxf boost_1_59_0.tar.gz
【root@localhost ~】#cd boost_1_59_0/
【root@localhost boost_1_59_0】# cd
【root@localhost ~】#mv boost_1_59_0 /usr/local/boost
創建用戶并添加到組
【root@localhost ~】# groupadd -r mysql && useradd -r -g mysql -s /bin/false -M mysql
創建mysql安裝目錄和數據庫目錄
mkdir/usr/local/mysql ---創建目錄
mkdir/usr/local/mysql/data ---數據庫目錄
編譯安裝mysql
我們可以使用make && make install 進行編譯安裝,不過這條命令是只用單線程,安裝過程過于緩慢,用下面這條命令可以根據CPU核數指定編譯時的線程數,大大提高了安裝的速度
make -j $(grep processor/proc/cpuinfo | wc -l)
-j:根據CPU核數指定編譯時的線程數
在安裝所需模塊的時候難免輸入錯誤,當我們想重新運行cmake配置,需要刪除CMakeCache.txt文件: #makeclean
#rm -f CMakeCache.txt
優化Mysql的執行路徑
設置權限并初始化MySQL系統授權表
#cd /usr/local/mysql
# chown -R mysql:mysql . ---更改所有者,屬組,注意是mysql .
注意:5.7.6之后版本初始系統數據庫腳本(本文使用此方式初始化)
#/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data
生成一條mysql的初始密碼(注意保存),后面要用到!
創建配置文件
#cd /usr/local/mysql/support-files ---進入MySQL安裝目錄支持文件目錄
#cp my-default.cnf /etc/my.cnf ---復制模板為新的配置文件,
修改文件中配置選項,如下圖所示,添加如下配置項
#vi /etc/my.cnf
配置mysql自動啟動
我們開啟mysql服務是會報錯,原因是在mysqld.service,把默認的pid文件指定到了/var/run/mysqld/目錄,而并沒有事先建立該 目錄,因此要手動建立該目錄并把權限賦給mysql用戶;
解決方法有兩個:
一是創建mysqld.service文件里指定的目錄/var/run/mysqld并給屬主權限:chown -R mysql:mysql/var/run/mysqld
二是修改/usr/lib/system/system/mysqld.service文件里的指定路徑,寫入一個已存在的路徑
systemctl daemon-reload重新加載
再次啟動mysql服務
連接數據庫 ----密碼是剛開的初始密碼
修改庫管理員用戶root的密碼
實現基于ssl安全連接的主從復制
1)在主mysql創建SSL/RSA文件
#cd /usr/local/mysql/bin ---切換目錄
#mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data ---創建新的SSL文件
重啟mysqld服務之前,我們要給server-key.pem權限
chmod +r /usr/local/mysql/data/server-key.pem
然后再重啟服務 #systemctl restart mysqld
重啟mysql服務,這時錯誤日志中就沒有報錯了
登錄mysql,執行mysql>showvariableslike'%ssl%';
從上圖可以看到mysql支持了ssl安全連接
在主mysql上的操作完成,再生成一個復制帳號:REQUIRESSL
進入mysql :
Mysql -u root -p ‘123.abc’
Mysql>grant replication slave on *.* to ‘rep’@’192.168.1.%’identified by require ssl;
在主mysql上啟用二進制日志并重啟mysql服務
添加下面的配置項
Log-bin=mysql-bin
重啟mysql
Systemctlrestart mysqld
進入mysql
Mysql-u root -p ‘123.abc’
查看master狀態
Showmaster status;
注:要記住上圖所顯示的file和position的值,配置從服務器要用到防火墻允許3306/tcp通信
【root@localhost ~】# firewall-cmd --permanent --add-port=3306/tcp
【root@localhost ~】#firewall-cmd -reload
配置從服務器
##可以克隆主mysql,修改ip即可。
從mysql服務器 的/etc/my.cnf文件內容
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
server_id = 2
socket = /usr/local/mysql/mysql.sock
log-error = /usr/local/mysql/data/mysqld.err
relay-log = /usr/local/mysql/data/relay-log-bin
relay-log-index = /usr/local//mysqldata/slave-relay-bin.index
注:server_id要唯一,不能和其他mysql主機的重復
把主mysql生成的證書給從服務器
在主mysql中的/usr/local/mysql/daata路徑下執行scp;
【root@localhost data】# scp ca.pem client-cert.pemclient-key.pem root@192.168.1.150:/usr/local/mysql/data/
注意:192.168.1.150是從mysql的ip,192.168.1.100是主mysql的ip地址。
!!!!!!設置client-key.pem的r權限,要不然無法使用私鑰
重啟mysql服務
Systemctl restrt mysqld
進入數據庫
Mysql-u root -p‘123.abc’
查看SSL是否被支持
Show variables ‘%ssl%’;
要求:have-openssl YES
Have-ssl YES
那么在配置主從復制之前可以在從mysql上用SSL連接主服務器試試:
cd /usr/local/mysql/data
Mysql --ssl-ca=ca.pem ssl-cert=client-cert.pem ssl-key=client-key.pem -u rep
-p123456 -h 192.168.1.100
進入數據庫后,使用\s查看數據庫詳細信息,會發現是主mysql的ip,ssl測試連接成功
最后開始配置主從replicate,登錄從mysql,在從上mysql上執行:
開啟從mysql服務器
注意:因為我們的從mysql是克隆的主mysql,所以我們要修改從mysql的uuid
路徑是:/usr/local/mysql/daa/auto.cnf
修改完成之后重啟mysqld服務
Systemctl restart mysqld
登錄從mysql 執行
show slave status\G;
會發現:
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
測試:在主mysql上創建庫和表,在從mysql上會立刻進行同步!!!!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。