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需要国家,省,城市,公司,部门这些信息一致)
- # mkdir -pv /data/{mysql,ssl}
- # cd /data/ssl
- # (umask 077; openssl genrsa 1024 > mysql.key)
- # openssl req -new -key mysql.key -out mysql.csr
- # openssl ca -in mysql.csr -out mysql.crt -days 365
- # cp /etc/pki/CA/cacert.pem .
- # cd /data
- # cp /etc/pki/CA/cacert.pem .
- # (umask 077; openssl genrsa 1024 > slave.key)
- # openssl req -new -key slave.key -out slave.csr
- # openssl ca -in slave.csr -out slave.crt -days 365
- # ssh slave 'mkdir -pv /data/mysql'
- # scp slave.* cacert.pem slave:/data/ssl/
- # rm –rf slave.* cacert.pem
二、 载入半同步支持并提供从复制用户(位于主服务器操作)
2、 插入谷歌提供的半同步补丁模块semisync的主模块支持,并创建复制所需用户
- mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
- mysql> GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO [email protected] IDENTIFIED BY'123' REQUIRE SSL;
- mysql> FLUSH PRIVILEGES ;
- mysql> \q
Ps: 若需要卸载半同步模块,在mysql中执行如下语句:
mysql> UNINSTALL PLUGIN rpl_semi_sync_master;