文档章节

mysql5.5搭建主从复制,半同步复制,基于ssl的主从复制

fighting-cluber
 fighting-cluber
发布于 2014/03/03 12:41
字数 1098
阅读 896
收藏 110

主从复制搭建:一个master对应2个slave

##########################################

//环境规划

linux版本:centos6.4 mysql5.5.30
master:10.10.54.154
slave: 10.10.54.155 10.10.54.156
#master服务器不是新搭建的,所以需要把master数据库中数据备份到从服务器

//master修改配置文件,创建用户

1.修改配置文件

shell> vim /etc/my.cnf
[mysqld]
server_id=1
log_bin=master_bin
shell> /et/init.d/mysqld restart

2.创建用户,授予复制权限

mysql> grant replication slave on *.* to 'repl'@'10.10.54.%' identified by 'mysql';
mysql> flush privileges;

//slave修改配置文件

两个从服务器上操作一样

shell> vim /etc/my.vnf
server_id=8
log_bin=slave-bin

//mysqldump导入数据到从服务器

1.master操作

mysql> flush tables with read lock;
mysql> mysqldump -uroot -p --all-databases --flush-logs --master-data=2 > alldatabases.sql
mysql> show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000017 |      107 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> unlock tables;

2.slave操作

两台从服务器上操作一样

shell> mysql -uroot -pmysql < alldatabases.sql
//slave上执行change master操作,查看主从架构
mysql> change master to master_host='10.10.54.154',master_user='repl',master_password='mysql',master_log_file='master-bin.000006',master_log_pos=307;
mysql> start slave;
mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.10.54.154
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000017
          Read_Master_Log_Pos: 107
               Relay_Log_File: mycentos5-relay-bin.000002
                Relay_Log_Pos: 254
        Relay_Master_Log_File: master-bin.000017
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

//测试主从架构是否正常运行

1.master 上创建表

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| d1                 |
| mysql              |
| performance_schema |
| test               |
+--------------------+
mysql> use d1;
mysql> create table t1(id int NOT NULL,name varchar(20) NOT NULL);
mysql> insert into t1 values(1,'hello');

2.从服务器上查看表是否同步

mysql> use d1;
msyql> select * from t1;
+----+-------+
| id | name  |
+----+-------+
|  1 | hello |
+----+-------+


上面主从复制环境已经搭建成功,下面搭建mysql半复制(Semisynchronous Replication)

//环境规划

mysql版本:5.5.30
master:10.10.54.154
slave:10.10.54.155

#主从环境已经搭建好

//master上安装半同步复制插件

mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
Query OK, 0 rows affected (0.02 sec)
mysql> set global rpl_semi_sync_master_enabled=1;
Query OK, 0 rows affected (0.00 sec)
mysql> set global rpl_semi_sync_master_timeout=1000;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like '%semi%';
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled       | ON    |
| rpl_semi_sync_master_timeout       | 1000  |
| rpl_semi_sync_master_trace_level   | 32    |
| rpl_semi_sync_master_wait_no_slave | ON    |
+------------------------------------+-------+

#要想下次重启mysql自动生效,可以加入配置文件
sehll> vim /etc/my.cnf
[msyqld]
set global rpl_semi_sync_master_enabled=1
set global rpl_semi_sync_master_timeout=1000

//slave上安装插件

mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
mysql> set global rpl_semi_sync_slave_enabled = 1;
mysql> stop slave;
mysql> start slave;
mysql> show variables like '%semi%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled     | ON    |
| rpl_semi_sync_slave_trace_level | 32    |
+---------------------------------+-------+

#同理,要想下次重启mysql自动生效,可以加入配置文件
sehll> vim /etc/my.cnf
[msyqld]
set global rpl_semi_sync_slave_enabled = 1

//测试半同步是否生效

mysql> show global status like 'rpl_semi%';
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 1     |
| Rpl_semi_sync_master_net_avg_wait_time     | 0     |
| Rpl_semi_sync_master_net_wait_time         | 0     |
| Rpl_semi_sync_master_net_waits             | 0     |
| Rpl_semi_sync_master_no_times              | 0     |
| Rpl_semi_sync_master_no_tx                 | 0     |
| Rpl_semi_sync_master_status                | ON    |
| Rpl_semi_sync_master_timefunc_failures     | 0     |
| Rpl_semi_sync_master_tx_avg_wait_time      | 0     |
| Rpl_semi_sync_master_tx_wait_time          | 0     |
| Rpl_semi_sync_master_tx_waits              | 0     |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
| Rpl_semi_sync_master_wait_sessions         | 0     |
| Rpl_semi_sync_master_yes_tx                | 0     |
+--------------------------------------------+-------+

#测试成功


搭建mysql replication支持ssl,一主一从

//环境说明:

master:10.10.54.156
slave:10.10.54.157


1.主服务器上生成私钥
shell> cd /etc/pki/CA/
shell> umask 077;openssl genrsa -out private/cakye.pem 2048
Generating RSA private key, 2048 bit long modulus
..........................................................................+++
..............................+++

2.主服务器上生成自签证书
shell> openssl req -new -x509 -key private/cakye.pem -out cacert.pem  -days 365

3.主服务器上申请证书
shell> cd /usr/local/mysql/
shell>  mkdir ssl
shell>  chown mysql.mysql ssl
shell> umask 077; openssl genrsa -out /usr/local/mysql/ssl/master.key 2048
shell>  openssl  req -new -key /usr/local/mysql/ssl/master.key  -out  /usr/local/mysql/ssl/master.csr
shell>  openssl ca -in /usr/local/mysql/ssl/master.csr  -out  /usr/local/mysql/ssl/master.crt -days 365

4.配置文件中添加ssl支持
shell> vim /etc/my.cnf
[msyqld]
ssl
ssl-ca=/etc/pki/CA/cacert.pem
ssl-cert=/usr/local/mysql/ssl/master.crt
ssl-key=/usr/local/mysql/ssl/master.key

5.从服务器上
shell> cd /usr/local/mysql/
shell> mkdir ssl
shell> chown mysql.mysql ssl
shell> umask 077; openssl genrsa -out /usr/local/mysql/ssl/mysql.key 2048
shell> openssl  req -new -key /usr/local/mysql/ssl/master.key  -out  /usr/local/mysql/ssl/mysql.csr

6.把证书传给主服务器,在主服务器上签署证书后在传给从服务器
shell> cd /usr/local/mysql/
shell> scp mysql.csr root@10.10.54.156:/etc/pki/CA

7.主服务器上签署证书
shell> openssl ca -in mysql.csr  -out  mysql.crt -days 365

8.传回给从服务器
shell> scp cacert.pem mysql.crt root@10.10.54.157:/usr/local/mysql/ssl
shell> chown -R  mysql.mysql

9.配置my.cnf文件
在my.cnf中添加ssl支持
[mysqld]
ssl #添加这一行

10.主服务器上创建ssl链接用户
mysql> grant replication client,replication slave on *.* to ssl@10.10.54.157 identified by 'ssl';

11.从服务器上配置
mysql > change master to master_host='10.10.54.156',  master_user='ssl', master_password='ssl', master_log_file='mysql-bin.000001',master_port=3306,master_log_pos=112, master_ssl=1,master_ssl_ca='/usr/local/mysql/ssl/cacert.pem', master_ssl_cert='/usr/local/mysql/ssl/mysql.crt',master_ssl_key='/usr/local/mysql/ssl/mysql.key';

12.查看从上slave状态
mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.10.54.156
                  Master_User: ssl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 503
               Relay_Log_File: mysql-relay.000002
                Relay_Log_Pos: 263
        Relay_Master_Log_File: mysql-bin.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
                     ....
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: Yes
           Master_SSL_CA_File: /usr/local/mysql/ssl/cacert.pem
           Master_SSL_CA_Path: 
              Master_SSL_Cert: /usr/local/mysql/ssl/mysql.crt
            Master_SSL_Cipher: 
               Master_SSL_Key: /usr/local/mysql/ssl/mysql.key
        Seconds_Behind_Master: 0

© 著作权归作者所有

fighting-cluber
粉丝 29
博文 74
码字总数 78829
作品 0
抚州
私信 提问
MySQL5.6 主从复制(基于GTID和多线程)

一:GTID工作流程图 二:什么是GTID 三:配置主从复制 四:说明 1.1 GTID工作流程图 2.1 什么是GTID GTID:是一个全局唯一标识,128位的随机符,并结合事务的ID号来组合成一个唯一的标识某一...

C_凡夫俗子
2018/06/26
0
0
mariadb-10实现半同步复制及SSL安全复制

一、关于复制的相关问题 1、异步复制解决了那些问题 复制解决的基本问题是让一台服务器的数据和另外的服务器保持同步,可以位于不同的网络拓扑中,对整台服务器的特定的数据库,甚至特定的表...

鱼在天上游
2014/05/03
0
0
基于半同步,ssl的mysql级联复制

基于半同步,ssl的mysql级联复制 今天闲来无事 做了一个mysql级联复制的实验拓扑如下: 操作系统:centos6.4(64bit) 数据库:mysql-5.5.35 主服务器:node1.example.com (192.168.1.166) s...

曉魚兒
2018/07/02
0
0
MariaDB(MySQL):半同步复制+ssl+复制过滤

一、半同步复制 1.mysql的复制 通过记录主服务器的二进制日志,并在从服务器上进行重放(replay)完成复制,默认都是异步进行的。 2.半同步复制 半同步复制是google贡献给MySQL的一个补丁,在...

hoo_5
2014/05/02
0
0
构建MHA实现MySQL高可用集群架构

一、MHA简介 MHA(Master HighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环...

51tanxiaojun
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分享一个 pycharm 专业版的永久使用方法

刚开始接触Python,首先要解决的就是Python开发环境的搭建。 目前比较好用的Python开发工具是PyCharm,他有社区办和专业版两个版本,但是社区版支持有限,我们既然想好好学python,那肯定得用...

上海小胖
13分钟前
4
0
Spring Cloud Alibaba 实战(二) - 关于Spring Boot你不可不知道的实情

0 相关源码 1 什么是Spring Boot 一个快速开发的脚手架 作用 快速创建独立的、生产级的基于Spring的应用程序 特性 无需部署WAR文件 提供starter简化配置 尽可能自动配置Spring以及第三方库 ...

JavaEdge
今天
7
0
TensorFlow 机器学习秘籍中文第二版(初稿)

TensorFlow 入门 介绍 TensorFlow 如何工作 声明变量和张量 使用占位符和变量 使用矩阵 声明操作符 实现激活函数 使用数据源 其他资源 TensorFlow 的方式 介绍 计算图中的操作 对嵌套操作分层...

ApacheCN_飞龙
今天
7
0
五、Java设计模式之迪米特原则

定义:一个对象应该对其他对象保持最小的了解,又叫最小知道原则 尽量降低类与类之间的耦合 优点:降低类之间的耦合 强调只和朋友交流,不和陌生人说话 朋友:出现在成员变量、方法的输入、输...

东风破2019
昨天
23
0
jvm虚拟机结构

1:jvm可操作数据类型分为原始类型和引用类型,因此存在原始值和引用值被应用在赋值,参数,返回和运算操作中,jvm希望在运行时 明确变量的类型,即编译器编译成class文件需要对变量进行类型...

xpp_ba
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部