MySQL基于SSL的半同步复制

MySQL的主从复制应用场景非常多,默认的MySQL复制是基于异步且明文传输的,也就是说,速度快,但是从服务器的数据会有着一定的滞后性,明文也就意味着数据传输的不安全。因此笔者这里构建一个简单的基于加密并半同步的主从MySQL,当然由于其半同步的特性,主服务器的写操作速度必会有所降低。究竟如何选择,这取决于场景需要了。

实验环境:RHEL5.8  MySQL5.5.28

192.168.88.21      master.mos.com  master

192.168.88.22      slave.mos.com  slave

注意:笔者做了双机互信,但在此并未写出,且笔者的两个MySQL默认的root用户的密码皆为空,笔者实验环境的/etc/hosts的文件,皆如上。

一、 创建CA私有认证及所需密钥文件,在主服务器(master)上操作

1、 使用脚本创建CA内部机构,脚本链接如下:

具体下载目录在 /2012年资料/12月/6日/MySQL基于SSL的半同步复制

 

./ casetup.sh  #输入ca的主机名和email或者两次回车即可

2、 创建Master和salve所需的密钥文件,(内部CA需要国家,省,城市,公司,部门这些信息一致)

  1. # mkdir -pv /data/{mysql,ssl}
  2. # cd /data/ssl
  3. # (umask 077; openssl genrsa 1024 > mysql.key)
  4. # openssl req -new -key mysql.key -out mysql.csr
  5. # openssl ca -in mysql.csr -out mysql.crt -days 365
  6. # cp /etc/pki/CA/cacert.pem .
  7. # cd /data
  8. # cp /etc/pki/CA/cacert.pem .
  9. # (umask 077; openssl genrsa 1024 > slave.key)
  10. # openssl req -new -key slave.key -out slave.csr
  11. # openssl ca -in slave.csr -out slave.crt -days 365
  12. # ssh slave 'mkdir -pv /data/mysql'
  13. # scp slave.* cacert.pem slave:/data/ssl/
  14. # rm –rf slave.* cacert.pem

二、 载入半同步支持并提供从复制用户(位于主服务器操作)

2、 插入谷歌提供的半同步补丁模块semisync的主模块支持,并创建复制所需用户

  1. mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
  2. mysql> GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO [email protected] IDENTIFIED BY'123' REQUIRE SSL;
  3. mysql> FLUSH PRIVILEGES ;
  4. mysql> \q

Ps: 若需要卸载半同步模块,在mysql中执行如下语句:
mysql> UNINSTALL PLUGIN rpl_semi_sync_master;

相关推荐