《Mysql學(xué)習(xí)linux系統(tǒng)中使用openssl實(shí)現(xiàn)mysql主從復(fù)制》要點(diǎn):
本文介紹了Mysql學(xué)習(xí)linux系統(tǒng)中使用openssl實(shí)現(xiàn)mysql主從復(fù)制,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
MYSQL學(xué)習(xí)????????證書(shū)準(zhǔn)備:
MYSQL學(xué)習(xí)CA證書(shū):
MYSQL學(xué)習(xí)第一步:創(chuàng)建CA私鑰
MYSQL學(xué)習(xí)[root@localhost CA]# (umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
MYSQL學(xué)習(xí)第二步:生成自簽證書(shū)
MYSQL學(xué)習(xí)[root@localhost CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem ?-days 7300 -out /etc/pki/CA/cacert.pem
MYSQL學(xué)習(xí)――――――――――――――――――――――――――――C
MYSQL學(xué)習(xí)mysql準(zhǔn)備私鑰及證書(shū)申請(qǐng)文件 :
MYSQL學(xué)習(xí)第一步:創(chuàng)建mysql私鑰:
MYSQL學(xué)習(xí)[root@localhost ~]# (umask 066;openssl genrsa -out /var/lib/mysql/ssl/mysql.key 2048)
MYSQL學(xué)習(xí)第二步:生成證書(shū)申請(qǐng)文件及發(fā)送給CA服務(wù)端
MYSQL學(xué)習(xí)[root@localhost ~]# openssl req -new -key /var/lib/mysql/ssl/mysql.key -days 365 -out /var/lib/mysql/ssl/mysql.csr
MYSQL學(xué)習(xí)注意:國(guó)家,省 ,公司名稱必須和CA一致
MYSQL學(xué)習(xí)將證書(shū)申請(qǐng)文件發(fā)送至CA服務(wù)器
MYSQL學(xué)習(xí)??????????????? ――――――――――――――――――――――――――――C
MYSQL學(xué)習(xí)在CA服務(wù)器端頒發(fā)證書(shū):
MYSQL學(xué)習(xí)[root@localhost CA]# openssl ca -in /tmp/mysql.csr -out /tmp/mysql.crt -days 365
MYSQL學(xué)習(xí)附上查看證書(shū)中的信息命令:
MYSQL學(xué)習(xí)openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|subject|serial|dates
MYSQL學(xué)習(xí)??????????????? ――――――――――――――――――――――――――――C
MYSQL學(xué)習(xí)將證書(shū)發(fā)送至mysql服務(wù)器
MYSQL學(xué)習(xí)以及將CA的自簽證書(shū)發(fā)送至從服務(wù)器
MYSQL學(xué)習(xí)證書(shū)準(zhǔn)備動(dòng)作到此結(jié)束
MYSQL學(xué)習(xí)基于ssl功能實(shí)現(xiàn)主從復(fù)制,是主從雙方都需要互相驗(yàn)證,即從服務(wù)器也要有自己的證書(shū).
MYSQL學(xué)習(xí)所以,按照上述流程,生成slave服務(wù)器的證書(shū)
MYSQL學(xué)習(xí)?????????? ================================================
MYSQL學(xué)習(xí)??????? 配置mysql服務(wù)端:
MYSQL學(xué)習(xí)在主服務(wù)器端查看關(guān)于ssl有關(guān)的參數(shù) ?及 ?主從復(fù)制C主服務(wù)器 ?的配置項(xiàng):
MYSQL學(xué)習(xí)MariaDB [(none)]> show variables like ‘%ssl%';
MYSQL學(xué)習(xí)? ? ? ? ? ??
MYSQL學(xué)習(xí)由于ssl功能配置項(xiàng)為全局配置參數(shù),所以 編輯 /etc/my.cnf 文件 :
MYSQL學(xué)習(xí)由于是客戶端驗(yàn)證服務(wù)端,所以只需要配置 ?ssl_cert(mysql服務(wù)器端的證書(shū)位置)、ssl_key(mysql私鑰位置)與ssl_ca(CA證書(shū)位置)即可
MYSQL學(xué)習(xí)
MYSQL學(xué)習(xí)開(kāi)啟服務(wù),并檢查:
MYSQL學(xué)習(xí)
MYSQL學(xué)習(xí)??????????????? ――――――――――――――――――――――――――――C
MYSQL學(xué)習(xí)創(chuàng)建一個(gè)基于ssl功能,從服務(wù)器用于復(fù)制mysql主服務(wù)器數(shù)據(jù)庫(kù)的最小權(quán)限賬號(hào):
MYSQL學(xué)習(xí)MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO ‘slave1'@'10.1.35.25' IDENTIFIED BY ‘passwd' REQUIRE ssl ;???
?
MYSQL學(xué)習(xí)
MYSQL學(xué)習(xí)查看binlog位置,并記錄,用于從服務(wù)器配置:
MYSQL學(xué)習(xí)MariaDB [(none)]> SHOW MASTER LOGS;
MYSQL學(xué)習(xí)
MYSQL學(xué)習(xí)?????????????? ================================================
MYSQL學(xué)習(xí)從服務(wù)器配置:
MYSQL學(xué)習(xí)編輯 /etc/my.cnf ,由于是從服務(wù)器,所以需要開(kāi)啟中繼日志(relay_log),且server_id不應(yīng)與同一層面的mysql服務(wù)器相同
MYSQL學(xué)習(xí)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
MYSQL學(xué)習(xí)啟動(dòng)mysql服務(wù),并檢查:
MYSQL學(xué)習(xí)
MYSQL學(xué)習(xí)――――――――――――――――――――――――――――C
MYSQL學(xué)習(xí)配置從服務(wù)器,指向主服務(wù)器(這是是全局配置參數(shù),但是不建議寫(xiě)在配置文件/etc/my.cnf 中,因?yàn)槿绻鹲lave因意外宕機(jī),在為了檢查數(shù)據(jù)完整性的情況下,再啟動(dòng)mysql的時(shí)候,也會(huì)自動(dòng)啟動(dòng)復(fù)制功能,不利于排查錯(cuò)誤)
MYSQL學(xué)習(xí)MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='10.1.35.1′,MASTER_USER='slave1′,MASTER_PASSWORD='passwd',MASTER_LOG_FILE=' master-log.000025 ‘,MASTER_LOG_POS= 245 , MASTER_SSL =1, MASTER_SSL_CA ='/var/lib/mysql/ssl/cacert.pem', MASTER_SSL_CERT ='/var/lib/mysql/ssl/slave.crt', MASTER_SSL_KEY ='/var/lib/mysql/ssl/slave.key';
MYSQL學(xué)習(xí)
MYSQL學(xué)習(xí)MariaDB [(none)]> START SLAVE;
MYSQL學(xué)習(xí)
MYSQL學(xué)習(xí)? ? ? ? ? ? ? ? ================================================
MYSQL學(xué)習(xí)驗(yàn)證主從效果:
MYSQL學(xué)習(xí)??????????????? ――――――――――――――――――――――――――――C
MYSQL學(xué)習(xí)主服務(wù)器創(chuàng)建數(shù)據(jù)庫(kù) mydb
MYSQL學(xué)習(xí)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
MYSQL學(xué)習(xí)??????????????? ――――――――――――――――――――――――――――C
MYSQL學(xué)習(xí)從服務(wù)器查看:
MYSQL學(xué)習(xí)??????????????????????????
MYSQL學(xué)習(xí)? ? ? ? ? ? ? ? ================================================
MYSQL學(xué)習(xí)??? 總結(jié):
MYSQL學(xué)習(xí)復(fù)制時(shí)應(yīng)該注意的問(wèn)題:
MYSQL學(xué)習(xí)1、從服務(wù)設(shè)定為“只讀”;(雙主模式無(wú)需設(shè)置)
MYSQL學(xué)習(xí)在從服務(wù)器啟動(dòng)read_only,但僅對(duì)非SUPER權(quán)限的用戶有效;
MYSQL學(xué)習(xí)阻止所有用戶:
MYSQL學(xué)習(xí)mysql> FLUSH TABLES WITH READ LOCK;
MYSQL學(xué)習(xí)2、盡量確保復(fù)制時(shí)的事務(wù)安全
MYSQL學(xué)習(xí)在master節(jié)點(diǎn)啟用參數(shù):
MYSQL學(xué)習(xí)sync_binlog = ON ? ?#每次事務(wù)提交的時(shí)候,都立即將二進(jìn)制日志時(shí)間都重內(nèi)存同步到磁盤(pán)中,能確保從服務(wù)器能立即得到事件,而且能保護(hù)本地?cái)?shù)據(jù)安全
MYSQL學(xué)習(xí)如果用到的是InnoDB存儲(chǔ)引擎:
MYSQL學(xué)習(xí)innodb_flush_logs_at_trx_commit=ON ? ? ?#在事務(wù)提交時(shí),立即刷寫(xiě)事務(wù)日志從內(nèi)存到磁盤(pán)上
MYSQL學(xué)習(xí)innodb_support_xa=ON ? ?#支持分布式事務(wù)
MYSQL學(xué)習(xí)#這兩項(xiàng)啟動(dòng)起來(lái),能在一定程度上確保從服務(wù)器能夠立即得到主服務(wù)器的最新事件
MYSQL學(xué)習(xí)3、從服務(wù)器意外中止時(shí) 盡量避免自動(dòng)啟動(dòng)復(fù)制線程
MYSQL學(xué)習(xí)由于數(shù)據(jù)是重要的,服務(wù)器能意外終止的時(shí)間都是奇異的,所以,終止后不要讓從服務(wù)器自動(dòng)啟動(dòng)復(fù)制線程,等人工手動(dòng)排查后才從新開(kāi)啟復(fù)制線程;有可能復(fù)制線程復(fù)制到一半的時(shí)候出現(xiàn)意外,復(fù)制線程或許沒(méi)有這種功能―C不知道時(shí)候需要再次復(fù)制上次中斷的事件 ? ? ? ? ? ? ? ?
MYSQL學(xué)習(xí)4、從節(jié)點(diǎn):設(shè)置參數(shù)
MYSQL學(xué)習(xí)每一個(gè)從服務(wù)器都會(huì)保存一個(gè)文件 relay-log-info,是記錄在主服務(wù)器上復(fù)制二進(jìn)制日志的位置,以及本地中繼日志的位置,為避免產(chǎn)生繁忙的IO操作,這些參數(shù)都是先保存在內(nèi)存上的,到一定程度才會(huì)同步到磁盤(pán)上的, 所以不安全
MYSQL學(xué)習(xí)sync_master_info=ON
MYSQL學(xué)習(xí)sync_relay_log_info=ON
MYSQL學(xué)習(xí)以上兩項(xiàng)為立即刷寫(xiě)數(shù)據(jù)從內(nèi)存到磁盤(pán)
MYSQL學(xué)習(xí)以上就是本文的全部?jī)?nèi)容了,希望對(duì)大家熟悉mysql主從復(fù)制能夠有所幫助
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/1027.html