Maria10实现主从复制架构及SSL复制 推荐
2014-04-26 01:01
295 查看
需求架构
准备工作主从服务器时间同步
详见博客“MySQL初识-架构-安装-初始化-连接-管理工具-数据文件”
部署配置主库配置
从库配置
验证
图2
可以看出主从同步正常,数据无误!
基于SSL进行安全复制生成SSL证书及私钥主从服务器都需要获得各自的证书,具体步骤详见“图解openssl实现私有CA”主库和从库各需的证书文件有:
主库配置SSL支持状态检查:
若have_ssl的值为YES,则表明SSL功能已开启使用;
若have_ssl的值为NO,则说明SSL功能并未编译进目前的Mariadb,需要重新编译程序;
若have_ssl的值为DISABLED,则表示mariadb编译时加载了SSL功能,但未启用,一般以通用二进制程序安装的Mariadb都是此值;
查看库文件:
从库配置
从库的另一种配置方法
验证
准备工作主从服务器时间同步
# 主从服务器同时配置crontab任务,与NTP服务器同步时间即可 */5 * * * * ntpdate 172.16.0.1 &>/dev/nullMariaDB的安装
详见博客“MySQL初识-架构-安装-初始化-连接-管理工具-数据文件”
部署配置主库配置
vi /etc/my.cnf server-id = 1 # 在复制架构中,需保持全局唯一 log-bin = mysql-bin # 默认在数据目录下 sync_binlog = 1 # 设置mariadb每次在提交事务前会将二进制日志同步到磁盘,保证服务器崩溃时不会丢失事件 ===== service mysqld start # 启动mariadb10 ===== mysql -hlocalhost -uroot -p # 登录mysql MariaDB [mysql]> grant replication slave,replication client on *.* to 'repluser'@'172.16.%.%' identified by 'replpass'; # 创建最小权限的复制账号 MariaDB [mysql]> flush privileges; MariaDB [mysql]> show master status; # 查看主库的状态信息
从库配置
vi /etc/my.cnf server-id = 11 # 在复制架构中,需保持全局唯一 log-bin = mysql-bin # 也可设置为none,即关闭从库的二进制日志 relay-log=/data/relaylogs/relay-bin # 设置中继日志文件 log-slave-updates = 1 # 允许从库将其重放的事件也记录到自身的二进制日志中 read_only = 1 # 从库设置为只读 ===== service mysqld start # 启动mariadb10 ===== mysql -hlocalhost -uroot -p # 登录mysql MariaDB [mysql]> change master to master_host='172.16.251.123',master_user='repluser',master_password='replpass',master_log_file='master-bin.000005',master_log_pos=379; # 连接主库 MariaDB [mysql]> start slave; MariaDB [mysql]> show slave status\G 查看从库状态
验证
# 在主库上新建数据库并创建数据 MariaDB [(none)]> create database test_for_replication; MariaDB [(none)]> create table test_for_replication.user(id int not null primary key auto_increment,name char(20) not null,year int not null,classid int not null); MariaDB [(none)]> insert into test_for_replication.user(name,year,classid) values('Jason Kk',23,2),('Hello Kitty',18,1); # 查看从库能否正常同步数据 MariaDB [(none)]> select * from test_for_replication.user; # 见下图1 MariaDB [(none)]> show slave status\G # 见下图2图1
图2
可以看出主从同步正常,数据无误!
基于SSL进行安全复制生成SSL证书及私钥主从服务器都需要获得各自的证书,具体步骤详见“图解openssl实现私有CA”主库和从库各需的证书文件有:
主库配置SSL支持状态检查:
若have_ssl的值为YES,则表明SSL功能已开启使用;
若have_ssl的值为NO,则说明SSL功能并未编译进目前的Mariadb,需要重新编译程序;
若have_ssl的值为DISABLED,则表示mariadb编译时加载了SSL功能,但未启用,一般以通用二进制程序安装的Mariadb都是此值;
查看库文件:
ldd `which mysqld` | grep ssl # 还需查看是否存在libssl.so文件,若不存在,则说明缺少库文件 # 麻烦的是若要安装此缺少的库文件,则需安装libopenssl.1.0.0的程序包,但这个包的安装依赖于glibc2.14版本,而CentOS6.5系统上原生的是glibc2.12版本的,这下就又涉及glibc的升级了,过于麻烦了,而且也很危险,故放弃之 # 那么就只能重新编译安装mariadb10了,从官网下载最新版的源码包安装吧(www.mariadb.com)Mariadb编译安装完成后,就可以配置基于SSL的安全复制了
chown -R mysql.mysql /etc/master/ssl/ # 注意修改认证相关文件的权限 ===== vi /etc/my.cnf # 在mysqld段下添加如下内容 [mysqld] ssl_ca= /etc/master/ssl/cacert.pem # 配置CA证书 ssl_cert = /etc/master/ssl/master.crt # 配置主库证书 ssl_key = /etc/master/ssl/master.key # 配置主库私钥 ssl_cipher = DHE-RSA-AES256-SHA # 指定支持的加密算法 ===== service mysqld reload # 重载配置 ===== # 再次查看相关变量: MariaDB [(none)]> show variables like '%ssl%' # 见下图 # 创建复制账户: MariaDB [mysql]> grant replication slave,replication client on *.* to 'repluser'@'172.16.%.%' identified by 'replpass' require ssl; # 特别明确必须通过SSL才能复制
从库配置
chown -R mysql.mysql /etc/slave/ssl/ ===== MariaDB [mysql]> change master to master_host='172.16.251.123',master_user='repluser',master_password='replpass',master_log_file='mysql-bin.000010',master_log_pos=776,master_ssl=1,master_ssl_ca='/etc/slave/ssl/cacert.pem',master_ssl_cert='/etc/slave/ssl/slave.crt',master_ssl_key='/etc/slave/ssl/slave.key'; # 在连接主库时直接指定本地从库的证书文件等信息 MariaDB [mysql]> start slave; MariaDB [mysql]> show slave status\G # 查看从库状态
从库的另一种配置方法
vi /root/.my.cnf # 在client段下配置从库证书信息 [client] ssl_ca = /etc/slave/ssl/cacert.pem ssl_cert = /etc/slave/ssl/slave.crt ssl_key = /etc/slave/ssl/slave.key ssl_cipher = DHE-RSA-AES256-SHA ===== MariaDB [mysql]> change master to master_host='172.16.251.123',master_user='repluser',master_password='replpass',master_log_file='mysql-bin.000010',master_log_pos=776,master_ssl=1; # 只需指定master_ssl=1即可
验证
# 主库写入: create test.table t1(name char(20) not null,age int not null); # 从库读取; show tables for test; # 验证结果见下图
相关文章推荐
- MySQL互为主从模型实现基于SSL复制 推荐
- MariaDB数据库主从复制、双主复制、半同步复制、基于SSL的安全复制实现及其功能特性介绍 推荐
- MySQL多主多从架构实现及主从复制问题处理 推荐
- MySQL/MariaDB数据库基于SSL实现主从复制 推荐
- 红帽6.4 64位上实现mysql5.6的主从复制、基于GTID复制、半同步、ssl加密复制以及读写分离 推荐
- centos7.2 安装 mysql5.7.13&&加密(ssl)实现mysql数据库的主从复制 推荐
- 基于SSL实现MySQL主从复制
- MariaDB数据库主从复制、双主复制、半同步复制、基于SSL的安全复制实现及其功能特性介绍(二)
- 用xtrabackup实现mysql的主从复制快速部署【主不锁表】 推荐
- mysql的主从构架,复制,半同步,SSL加密复制的实现
- MySQL主从架构及基于SSL实现数据复制 推荐
- redis的shell安装脚本,实现在linux下本机主从架构 推荐
- mysql主从复制架构及实现
- 企业实战(3)-主从实现基于Keepalived高可用集群网站架构 推荐
- MariaDB数据库主从复制、双主复制、半同步复制、基于SSL的安全复制实现及其功能特性介绍(三)
- 集群与负载均衡系列(8)——redis主从复制+哨兵实现高可用性架构
- Mysql常用主从复制架构以及MHA高可用的主从复制的实现
- 基于RHEL6.0的mysql服务器复制的主从架构实现
- 分布式架构高可用架构篇_08_MyCat在MySQL主从复制基础上实现读写分离
- 分布式架构学习之:MyCat在MySQL主从复制基础上实现读写分离