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