基于SSL的mysql服务器的主从架构实现

 基于SSLmysql服务器的主从架构实现mysql

说明:本文选用172.16.22.1做为主服务器,172.16.22.3做为从服务器 linux

从服务器的mysql软件版本应大于或等于主服务器的mysql软件版本 sql

主服务器与从服务器的server-id 应不一样 vim

 

1、准备条件:安装mysql(本文选用相似于一种绿色软件的方式安装mysql,特色:方便、快捷) 安全

1.172.16.22.1主机上安装mysql-5.5.20 服务器

(1).准备数据存放的文件系统 架构

新建一个逻辑卷,并将其挂载至特定目录。 ide

增长一个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数据的存放目录。 spa

(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 

 

2、配置主从服务器

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哈哈~

相关文章
相关标签/搜索