基於SSL的mysql服務器的主從架構實現

 基於SSLmysql服務器的主從架構實現

說明:本文選用172.16.22.1作爲主服務器,172.16.22.3作爲從服務器

從服務器的mysql軟件版本應大於或等於主服務器的mysql軟件版本

主服務器與從服務器的server-id 應不同

 

一、準備條件:安裝mysql(本文選用類似於一種綠色軟件的方式安裝mysql,特點:方便、快捷)

1.172.16.22.1主機上安裝mysql-5.5.20

(1).準備數據存放的文件系統

新建一個邏輯卷,並將其掛載至特定目錄。

增加一個sda5id8e,先不要格式化。

  1. # partprobe /dev/sda 
  2. # pvcreate /dev/sda5 
  3. # vgcreate myvg /dev/sda5 
  4. # lvcreate -L 2G -n mysql myvg 
  5. # mke2fs -j /dev/myvg/mysql 
  6. # mkdir /mydata/data -pv 
  7. # mount /dev/myvg/mysql /mydata 

這裏假設其邏輯卷的掛載目錄爲/mydata,而後需要創建/mydata/data目錄做爲mysql數據的存放目錄。

(2).新建用戶以安全方式運行進程:

  1. # groupadd -r mysql 
  2. # useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql 
  3. # chown -R mysql:mysql /mydata/data 

(3).安裝並初始化mysql-5.5.20

  1. # tar xf mysql-5.5.20-linux2.6-i686.tar.gz  -C /usr/local 
  2. # cd /usr/local/ 
  3. # ln -sv mysql-5.5.20-linux2.6-i686  mysql 
  4. # cd mysql 
  5. # chown -R mysql:mysql  . 
  6. # scripts/mysql_install_db --user=mysql --datadir=/mydata/data 
  7. # chown -R root  . 
 

(4).mysql提供主配置文件:

# cd /usr/local/mysql

# cp support-files/my-large.cnf  /etc/my.cnf

並修改此文件中thread_concurrency的值爲你的CPU個數乘以2(由於只有一顆CPU,所以這裏thread_concurrency = 2),另外還需要添加如下行指定mysql數據文件的存放位置:

thread_concurrency = 2

datadir = /mydata/data

(5).mysql提供sysv服務腳本,並添加mysqld至服務列表,而後啓動服務測試。

  1. # cd /usr/local/mysql 
  2. # cp support-files/mysql.server  /etc/rc.d/init.d/mysqld 
  3. # chkconfig --add mysqld 
  4. # chkconfig mysqld on 
  5. # service mysqld restart 

爲了使用mysql的安裝符合系統使用規範,並將其開發組件導出給系統使用,這裏還需要進行如下步驟:

(6).輸出mysqlman手冊至man命令的查找路徑:

編輯/etc/man.config,添加如下行即可:

MANPATH  /usr/local/mysql/man

(7).輸出mysql的頭文件至系統頭文件路徑/usr/include

這可以通過簡單的創建鏈接實現:

# ln -sv /usr/local/mysql/include  /usr/include/mysql

(8)輸出mysql的庫文件給系統庫查找路徑, 而後讓系統重新載入系統庫:

# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

# ldconfig -v

(9).修改PATH環境變量(直接在/etc/profile文件裏添加“PATH=$PATH:/usr/local/mysql/bin”即可),讓系統可以直接使用mysql的相關命令:

  1. # vim /etc/profile 
  2. PATH=$PATH:/usr/local/mysql/bin 
  3. # source /etc/profile 

 

2.172.16.22.3主機上安裝mysql-5.5.22

(1) .新建用戶以安全方式運行進程:

  1. # groupadd -r mysql 
  2. # useradd -g mysql -r -s /sbin/nologin -M mysql 

(2).安裝並初始化mysql-5.5.22

  1. # tar xvf mysql-5.5.22-linux2.6-i686.tar.gz  -C /usr/local 
  2. # cd /usr/local/ 
  3. # ln -sv mysql-5.5.22-linux2.6-i686  mysql 
  4. # cd mysql 
  5. # chown -R mysql:mysql  . 
  6. # scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data 
  7. # chown -R root  . 

(3).mysql提供主配置文件:

# cd /usr/local/mysql

# cp support-files/my-large.cnf  /etc/my.cnf

並修改此文件中thread_concurrency的值爲你的CPU個數乘以2(由於只有一顆CPU,所以這裏thread_concurrency = 2),另外還需要添加如下行指定mysql數據文件的存放位置:

thread_concurrency = 2

datadir = /usr/local/mysql/data

 

(4).mysql提供sysv服務腳本,並添加mysqld至服務列表,而後啓動服務測試。

 

  1. # cd /usr/local/mysql 
  2. # cp support-files/mysql.server  /etc/rc.d/init.d/mysqld 
  3. # chkconfig --add mysqld 
  4. # chkconfig mysqld on 
  5. # service mysqld restart 
 

爲了使用mysql的安裝符合系統使用規範,並將其開發組件導出給系統使用,這裏還需要進行如下步驟:

(5).輸出mysqlman手冊至man命令的查找路徑:

編輯/etc/man.config,添加如下行即可:

MANPATH  /usr/local/mysql/man

(6).輸出mysql的頭文件至系統頭文件路徑/usr/include

這可以通過簡單的創建鏈接實現:

# ln -sv /usr/local/mysql/include  /usr/include/mysql

(7)輸出mysql的庫文件給系統庫查找路徑, 而後讓系統重新載入系統庫:

# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

# ldconfig -v

(8).修改PATH環境變量(直接在/etc/profile文件裏添加“PATH=$PATH:/usr/local/mysql/bin”即可),讓系統可以直接使用mysql的相關命令:

  1. # vim /etc/profile 
  2. PATH=$PATH:/usr/local/mysql/bin 
  3. # source /etc/profile 

 

二、配置主從服務器

1.配置主服務器(172.16.22.1)

(1).爲主服務器生成CA證書以及mysql的證書

# cd /etc/pki/tls

# vim openssl.cnf

[ CA_default ]

dir           = ../../CA            # Where everything is kept

把上面”=../../CA”改爲”=/etc/pki/CA”

  1. # cd .. 
  2. # cd CA 
  3. # mkdir certs crl newcerts 
  4. # touch index.txt 
  5. # echo 01 > serial 
  6. # echo 01 > crlnumber 
  7. # (umask 077;openssl genrsa 2048 > private/cakey.pem)   #生成CA自己的私鑰 
  8. # openssl req –new –x509 –key private/cakey.pem –out cacert.pem –days 3650 

依次輸入”CNHenanZZMTech   這是CA爲自己簽發證書

  1. # mkdir /usr/local/ssl 
  2. # cd /usr/local/ssl 
  3. # (umask 077;openssl genrsa 1024 > server-key.key)   #生成mysql的私鑰 
  4. # openssl rsa –in server-key.key –pubout > server-cert.pem #生成mysql的公鑰 

(1).查看/etc/my.cnf配置文件中是否啓動二進制日誌:

log-bin=mysql-bin   (默認情況下都已經開啓,此時不需要做修改)

並在mysql段增加如下三項:

 [mysqld]

ssl-ca=/etc/pki/CA/cacert.pem

ssl-cert=/usr/local/ssl/server-cert.pem

ssl-key=/usr/local/ssl/server-key.pem

(2).建立複製權限用戶:

  1. # mysql 
  2. mysql> CREATE USER 'lh'@'172.16.22.2' IDENTIFIED BY '123456'; 
  3. mysql> GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.*  TO  'lh'@'172.16.22.2'  REQUIRE SSL; 
  4. mysql> SHOW GRANTS FOR lh@’172.16.22.%’; 

 

2.配置從服務器(172.16.22.3):

(1).編輯/etc/my.cnf配置文件,更改server-id使它和主服務器的server-id不一樣,關閉二進制日誌並打開中繼日誌:

# vim /etc/my.cnf

找到server-id,並改爲

server-id = 11

找到 log-bin=mysql-bin 並禁用此項(在前面加上“#”即可)

在“#log-bin=mysql-bin”下面增加兩項:

relay-log = relay-bin

relay-log-index = relay-bin.index

 

(2).在從服務器上指定主服務器:

  1. # mysql 
  2. mysql> CHANGE MASTER TO 
  3.      -> MASTER_HOST=’172.16.22.1’, 
  4.      -> MASTER_USER=’lh’, 
  5.      -> MASTER_PASSWORD=’123456’; 
  6.      -> MASTER_SSL=1
  7.      -> MASTER_SSL_CA = 'cacert.pem'
  8.      -> MASTER_SSL_CAPATH = '/etc/pki/CA'
  9.      -> MASTER_SSL_CERT = ‘/usr/local/ssl/server-cert.pem', 
  10.      -> MASTER_SSL_KEY = '/usr/local/ssl/server-key.pem'
  11. mysql> START SLAVE; 
  12. mysql> SHOW SLAVE STATUS\G 

說明:由於基於sslmysql主從復製作者本人沒有親身實驗,所以實驗結果未知,如您在實驗之後發現問題,請給予留言提示;如您實驗沒有成功,請給出錯誤截圖;如您實驗成功,請給予實驗結果的正確截圖,謝謝回帖,來到這兒總要留點痕跡吧,O(_)O哈哈~

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章