mysql基於SSL實現主從複製

mysql數據庫基於SSL實現主從複製

實驗環境:node

node1:192.168.4.61mysql

node2:192.168.4.62linux

CA:192.168.4.63sql

node1和node2時間同步

[root@node1~]#ntpdate 172.18.0.1數據庫

[root@node2~]#ntpdate 172.18.0.1vim

[root@node1~]#vim /etc/chrony.conf #node1和node2操做同樣服務器

2017-11-11_184716.jpg

[root@node1~]#systemctl start chronyd.service #啓動服務ssh

node1和node2基於key鏈接

[root@node1~]#ssh-keygenide

2017-11-12_100027.jpg

[root@node1~]#ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.4.62#將公鑰複製到node2上測試

node2操做和node1操做相同。

修改hosts文件

node1和node2配置相同

[root@node1~]#vim /etc/hosts

  3 192.168.4.61 node1
 4 192.168.4.62 node2

確保關閉iptables和selinux

node1和node2安裝mariadb數據庫

[root@node1~]#yum install -y mariadb-server

[root@node2~]#yum install -y mariadb-server

配置node1爲主服務器

[root@node1~]#vim /etc/my.cnf.d/server.cnf

2017-11-12_102328.jpg

[root@node1~]#systemctl start mariadb #啓動mariadb服務

MariaDB [(none)]> GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'joah'@'192.168.4.62' IDENTIFIED BY '123456';  #對用戶受權
查看是否開啓二進制日誌
MariaDB [(none)]> SHOW VARIABLES LIKE '%log%bin%';

2017-11-12_103625.jpg

在node1上二進制日誌狀態信息
MariaDB [(none)]> SHOW MASTER STATUS;

2017-11-12_103831.jpg

配置node2從服務器

[root@node2~]#vim /etc/my.cnf.d/server.cnf

2017-11-12_103127.jpg

[root@node2~]#systemctl start mariadb #啓動mariadb服務

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.4.61',MASTER_USER='joah',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-log.000003',MASTER_LOG_POS=417;   #設置鏈接主服務器
啓動從服務器
MariaDB [(none)]> START SLAVE;
啓動IO線程和SQL線程
MariaDB [(none)]> START SLAVE IO_THREAD,SQL_THREAD;
查看從服務器狀態
MariaDB [(none)]> START SLAVE IO_THREAD,SQL_THREAD;

2017-11-12_104235.jpg

若是出現圖中紅框中的信息說明已經啓動成功。
測試是否已經實現主從複製

MYSQL8.gif

實現SSL功能

搭建CA服務器

[root@CA/etc/pki/CA]#touch index.txt

[root@CA/etc/pki/CA]#echo 01 > serial

生成key文件

[root@CA/etc/pki/CA]#(umask 077;openssl genrsa -out private/cakey.pem 2048)

生成自簽證書

[root@CA/etc/pki/CA]#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650

2017-11-12_105240.jpg

node1生成證書

[root@node1~]#mkdir /etc/mysql/ssl -pv

[root@node1~]#chown mysql.mysql /etc/mysql/ssl/ -R

[root@node1/etc/mysql/ssl]#(umask 077;openssl genrsa -out master.key 2048)[root@node1/etc/mysql/ssl]#openssl req -new -key master.key -out master.csr

2017-11-12_105731.jpg

[root@node1/etc/mysql/ssl]#scp master.csr 192.168.4.63:/etc/pki/CA/newcerts/

[root@CA/etc/pki/CA/newcerts]#openssl ca -in master.csr -out master.crt -days 365

[root@CA/etc/pki/CA/newcerts]#scp master.crt ../cacert.pem 192.168.4.61:/etc/mysql/ssl

[root@node1~]#vim /etc/my.cnf.d/server.cnf

2017-11-12_110431.jpg

[root@node1~]#systemctl restart mariadb

查看是否開啓SSL功能

2017-11-12_112330.jpg

node2生成證書

[root@node2~]#mkdir /etc/mysql/ssl -pv

[root@node2~]#chown mysql.mysql /etc/mysql/ssl/ -R

[root@node2/etc/mysql/ssl]#(umask 077;openssl genrsa -out slave.key 2048)

[root@node2/etc/mysql/ssl]#openssl req -new -key slave.key -out slave.csr

[root@node2/etc/mysql/ssl]#scp slave.csr 192.168.4.63:/etc/pki/CA/newcerts

[root@CA/etc/pki/CA/newcerts]#openssl ca -in slave.csr -out slave.crt -days 365

[root@CA/etc/pki/CA/newcerts]#scp slave.crt ../cacert.pem 192.168.4.62:/etc/mysql/ssl

[root@node2/etc/mysql/ssl]#vim /etc/my.cnf.d/server.cnf

2017-11-12_111654.jpg

重啓服務

[root@node2/etc/mysql/ssl]#systemctl restart mariadb

2017-11-12_112637.jpg

基於SSL鏈接

node1受權

MariaDB [(none)]> GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'joah'@'192.168.4.62' IDENTIFIED BY '123456' REQUIRE SSL;

測試

[root@node2~]#mysql -ujoah -p123456 -h192.168.4.61 --ssl

2017-11-12_115615.jpg

node2鏈接主服務器以ssl複製

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.4.61',MASTER_USER='joah',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-log.000008',MASTER_LOG_POS=429,MASTER_SSL=1,MASTER_SSL_CA='/etc/mysql/ssl/cacert.pem',MASTER_SSL_CERT='/etc/mysql/ssl/slave.crt',MASTER_SSL_KEY='/etc/mysql/ssl/slave.key';

MariaDB [(none)]> START SLAVE;  #啓動從服務器

MariaDB [(none)]> SHOW SLAVE STATUS\G;

2017-11-12_120029.jpg

MYSQL9.gif

小結

(1)若是你已經正確的添加了證書,可是啓動之後仍是沒有啓動SSL功能,有可能沒有權限

2017-11-12_114037.jpg

[root@node2~]#chown mysql.mysql -R /etc/mysql/ssl

(2)若是出現圖片中的問題,中止slave便可

2017-11-12_113938.jpg

(3)每個過程當中都須要驗證是否成功而後進行下面的操做。

相關文章
相關標籤/搜索