澳门金沙国际 1

脚下环境设计

澳门金沙国际 2

前言

前篇说了作为运行在数据库块最起码要会两大技巧,前天的话说第一技巧–主从复制

乘势业务的进步,一台数据库服务器以知足不断须要了,负载过重,那时候就须求减压,达成负载均衡读写分离,一主一从或一主多从

主服务器只管写,从服务器管读,从而升高功效减轻压力。

主从复制分类:

着力同步:当用户写数据主服务器必须和从服务器同步一致了才告知用户写入成功,等待时间太长

主旨异步:只要用户访问写数据主服务器写入立马回到给用户成功

宗旨半步同步:当用户访问写数据主服务器写入并协同其中3个从服务器就回到给用户成功

备注:平时都以行使的主导异步,根据环境需求来抉择,想要数据更安全选择半步同步

Mysql完成集团级数据库主从复制框架结构实战

长机名称 

Mysql完毕集团级数据库主从复制架构实战

主从复制注意事项

注意:selinux策略、防火墙

一 、开启二进制日志

log_bin

贰 、设置二进制记录格式为ROW(推荐)

叁 、设置唯一server-id

server_id=#

④ 、设置datadir中日记名称(可选)

log-basename=master

五 、创造有复制权限的用户账号

GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'HOST' IDENTIFIED BY 'replpass';

陆 、要是要启用级联复制,须要在从服务器启用

log_bin
log_slave_updates

七 、限制从服务器为只读

read_only=ON

⑧ 、禁止主机名解析

skip_name_resolve = on

九 、高可用从服务器要增进

relay_log_purge=0 #不清除中继日志

10、怎么样保障主从复制的工作安全(依照要求增进)

1)在master节点启用参数:

sync_binlog=1
# 每次写后立即同步二进制日志到磁盘,性能差

2)假设用到的为InnoDB存储引擎:

innodb_flush_log_at_trx_commit=1 
# 每次事务提交立即同步日志写磁盘
innodb_support_xa=ON 
# 默认值,分布式事务MariaDB10.3.0废除
sync_master_info=# 
# #次事件后master.info同步到磁盘

3)在slave节点启用参数:

sync_relay_log=# 
# #次写后同步relay log到磁盘
sync_relay_log_info=#
# #次事务后同步relay-log.info到磁盘

  环境背景:集团规模已经形成,用户数量已变为集团的中央命脉,贰次老王一相当的大心把数据库文件删除,通过mysqldump备份策略恢复生机用了四个钟头,在那两钟头中,公司事情暂停,损失100万,老王做出深入检讨,公司也由此对此数据库的性质和可相信性建议更高须要。

基本布置以及半同步配置详细经过,项目实战7。ec2t-pgtest-01

  环境背景:公司范围已经形成,用户数量已改为商行的中坚命脉,2回老王一非常的大心把数据库文件删除,通过mysqldump备份策略复苏用了三个小时,在那两小时中,集团业务暂停,损失100万,老王做出深切反省,公司也为此对于数据库的质量和可信赖性提议更高须要。

主从复制原理

如图

澳门金沙国际 3

备注:

骨干同步有延迟,为啥?因为它时是单线程传送日志

务求对数据库进行改造,使其承载力举办进步,故障修复时间收缩,有没有能兑现的方案吧?

ec2t-pgtest-02

务求对数据库举行改造,使其承载力实行进步,故障修复时间减少,有没有能促成的方案吧?

实战-落成主从复制+高可用

Mysql达成数据库主从复制实战框架结构及其规律

IP地址

Mysql实现数据库主从复制实战架构及其规律

未雨绸缪干活

预备4台主机6⑦ 、1柒 、3柒 、57,分别担任角色为治本主机、主服务器、贰个从服务器

安装包:和主服务器同版本的mysql数据库包、和高可用安装包

mha4mysql-manager

mha4mysql-node

比如主服务器已经运转了1年了,发现知足不断须求了,需求搭建从服务器,大家先从搭建从服务器开端

备考:首先保险主服务器开启了二进制日志

肯定二进制文件已运维

MariaDB [(none)]> show variables like ‘%log_bin%’

确认server-id

MariaDB [(none)]> show variables like ‘server%’;

① 、实验架构及其规律

数据库高可用架构分为

骨干:一主一从,一主多从,一主从从

双主

澳门金沙国际 4

澳门金沙国际 5

10.189.102.118

壹 、实验架构及其规律

数据库高可用架构分为

大旨:一主一从,一主多从,一主从从

双主

澳门金沙国际 6

澳门金沙国际 7

主服务器设置

壹 、创立可用来复制的账号

grant replication slave on *.* to repluser@'192.168.43.%' identified by 'centos';

② 、完全备份数据(用于在从服务器上来还原)

mysqldump -pcentos -A -F --single-transaction --master-data=1 >/data/all-`date +%F`.sql

备注:备份时的某表的图景

澳门金沙国际 8

为了上面包车型大巴实验测试在此处大家备份玩再扩充一条记下

insert hellodb.students (name,age)values('gaoda001',20);

澳门金沙国际 9

③ 、传送到从服务器3柒 、57上

scp…

② 、进度分析

(1)主数据库(innodb引擎)的操作:

① 二个写的呼吁,先写到redo事务日志中,


mysql的过程读事务日志,作业日志的始末做到数据库内部存款和储蓄器中;此时得以过来客户端,数据为脏数据

③ 请求的操作记录到二进制日志

二进制日志再写磁盘中写;优化策略,变随机写为顺序写

(2)从数据库的操作:

I/O
thread
线程:从主的数据库上,把二进制文件的内容过来,写到relay log中继日志

SQL thread线程:把relay
log
剧情拉出去,写到数据库内部存款和储蓄器

⑦ 从数据库也可以把推行的操作记录到温馨的二进制文件中,非必须

⑧ 从数据库的二进制写到本人的磁盘

 

10.189.100.195

② 、进度分析

(1)主数据库(innodb引擎)的操作:

① 3个写的请求,先写到redo事务日志中,


mysql的历程读事务日志,事务日志的内容做到数据库内部存款和储蓄器中;此时能够还原客户端,数据为脏数据

③ 请求的操作记录到二进制日志

二进制日志再写磁盘中写;优化策略,变随机写为顺序写

(2)从数据库的操作:

I/O
thread
线程:从主的数据库上,把二进制文件的内容过来,写到relay log中继日志

SQL thread线程:把relay
log
内容拉出去,写到数据库内部存储器

⑦ 从数据库也足以把履行的操作记录到自身的二进制文件中,非必须

⑧ 从数据库的二进制写到自个儿的磁盘

 

3柒 、57(从)服务器设置

③ 、主从的优势

三个master 写入,多个slave同时读出;大大进步了读的功用

具体中,很多都是读的呼吁大,写的伸手相对小的多,如电商网站,大多都是人人去拜访,下单的较少;所以基本的关系一度能很好的增高品质了

 

角色

叁 、主从的优势

2个master 写入,八个slave同时读出;大大提升了读的功能

现实中,很多都以读的伏乞大,写的伏乞绝对小的多,如电商网站,大多都以芸芸众生去做客,下单的较少;所以基本的涉及曾经能很好的增高品质了

 

① 、配置文件
vim /etc/my.cnf

1)开启二进制日志

log-bin=mysql-bin

2)设置server-id(要和主服务id区分开)

server-id=2

备注:57装置为3 借使他们分歧就可

3)从服务器设置为只读

read_only=on

4)禁止主机名解析

skip_name_resolve = on

5)数据和目录分开存放

innodb_file_per_table = on 
# 10版本以上默认开启

6)重启或运行服务

备考:以免万一能够查阅下最根本的两项开启了未曾

mysql -e "show variables like 'log%'"
mysql -e "show variables like 'server%'"

四 、实验前准备

① iptables -F && setenforce 清空防火墙策略,关闭selinux

② 拿两台服务器都使用yum 格局安装Mysql 服务,必要版本一样

③ 分别运行两台服务器mysql

 

master      

④ 、实验前准备

① iptables -F && setenforce 清空防火墙策略,关闭selinux

② 拿两台服务器都使用yum 格局安装Mysql 服务,供给版本相同

③ 分别运维两台服务器mysql

 

二 、实现复制

1)进入数据库查找同步代码

MariaDB [(none)]> help change
MariaDB [(none)]> help change master to 

澳门金沙国际 10

2)根据气象编辑上海体育场合上的音信

注:开端地点能够在一点一滴备份文件里查看

两种形式:

① 先还有完全备份数据再拿以上音信编辑下,在数据库中履行

② 直接把地点的消息添加到完全备份文件里

上面用第③种方法来操作如图

澳门金沙国际 11

3)37主机还原并查看

mysql < all-2018-08-08.sql

澳门金沙国际 12

备考:以恢复生机到备份时的意况

          
主服务器备份完有用户新加数量对吧,上面开启主从复制看看能还是不可能复制过来最新的数额

4)查看复制状态

MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 192.168.43.17
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000005  
          Read_Master_Log_Pos: 385       #从主服务器读取到的位置
               Relay_Log_File: centos7_05-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql-bin.000005
             Slave_IO_Running: No       #表示还没开启
            Slave_SQL_Running: No       #表示还没开启
              Replicate_Do_DB:  
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 385
              Relay_Log_Space: 256
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: NULL   ##注意这个 表示同步时间差
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 0
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
                   Using_Gtid: No
                  Gtid_IO_Pos: 
      Replicate_Do_Domain_Ids: 
  Replicate_Ignore_Domain_Ids: 
                Parallel_Mode: conservative
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: 
1 row in set (0.03 sec)

5)开启主从复制并查阅意况

start slave;

MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.43.17
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000005
          Read_Master_Log_Pos: 608
               Relay_Log_File: centos7_05-relay-bin.000003
                Relay_Log_Pos: 778
        Relay_Master_Log_File: mysql-bin.000005
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 608
              Relay_Log_Space: 1092
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
                   Using_Gtid: No
                  Gtid_IO_Pos: 
      Replicate_Do_Domain_Ids: 
  Replicate_Ignore_Domain_Ids: 
                Parallel_Mode: conservative
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
1 row in set (0.00 sec)

6)查看表确认有没有从主服务器同步最新的多少

澳门金沙国际 13

7)57(从服务器同样的安装)

备考:近来切实了异步同步复制,上边来看半联手设置

实战一:Mysql完毕数据库简单一主多从复制实战

澳门金沙国际 14

slave    

实战一:Mysql完毕数据库简单一主多从复制实战

澳门金沙国际 15

半一同设置

① 、环境准备

centos 系统服务器3 台、一台用户做Mysql 主服务器,2台用于做Mysql
从服务器
,配置好yum 源、
防火墙关闭、各节点时钟服务协同、各节点之间能够通过主机名相互通讯

机器名称

IP配置

服务角色

备注

master-mysql

192.168.30.107

主数据库

二进制日志

slave-mysql1

192.168.30.7

从数据库

中继日志

slave-mysql2

192.168.30.2

从数据库

中继日志

 

系统版本  

① 、环境准备

centos 系统服务器3 台、一台用户做Mysql 主服务器,2台用于做Mysql
从服务器
,配置好yum 源、
防火墙关闭、各节点时钟服务协同、各节点之间能够通过主机名相互通信

机器名称

IP配置

服务角色

备注

master-mysql

192.168.30.107

主数据库

二进制日志

slave-mysql1

192.168.30.7

从数据库

中继日志

slave-mysql2

192.168.30.2

从数据库

中继日志

 

主服务器设置

一 、首先在主服务器上安装插件

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

备注:

show plugins; ##翻开当前系统中的插件列表

UNINSTALL PLUGIN rpl_semi_sync_master;##卸载插件

② 、查看插件状态

SHOW GLOBAL VARIABLES LIKE '%semi%';

澳门金沙国际 16

3、开启

set global rpl_semi_sync_master_enabled=on;

备注:最好写在布署文件中

澳门金沙国际 17

肆 、查看插件变量状态

SHOW GLOBAL STATUS LIKE '%semi%';

澳门金沙国际 18

备注:那里记录有多少个半协同主机

二 、在主master 主服务器上

① vim /etc/my.cnf
修改mysql主配置文件,对master实行布署,包罗打开二进制日志,内定唯一的servr
ID

server-id=1             #配置server-id,让主服务器有唯一ID号
log-bin=mysql-bin   #打开Mysql日志,日志格式为二进制
skip-name-resolve   #关闭名称解析,(非必须)

澳门金沙国际 19

systemctl start mariadb 开启服务

 

开创并授权slave mysql 用的复制帐号

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO slave@'192.168.%.%' IDENTIFIED BY 'along';
分析:在Master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE权限。

③ 查看主服务器状态

在Master的数据库执行show master
status,查看主服务器二进制日志状态,地点号

澳门金沙国际 20

 

CentOS release 6.8

② 、在主master 主服务器上

① vim /etc/my.cnf
修改mysql主配置文件,对master举行配备,蕴含打开二进制日志,内定唯一的servr
ID

server-id=1             #配置server-id,让主服务器有唯一ID号
log-bin=mysql-bin   #打开Mysql日志,日志格式为二进制
skip-name-resolve   #关闭名称解析,(非必须)

澳门金沙国际 21

systemctl start mariadb 开启服务

 

创办并授权slave mysql 用的复制帐号

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO slave@'192.168.%.%' IDENTIFIED BY 'along';
分析:在Master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE权限。

③ 查看主服务器状态

在Master的数据库执行show master
status,查看主服务器二进制日志状态,地点号

澳门金沙国际 22

 

从服务器设置

壹 、安装插件

INSTALL PLUGIN rpl_semi_sync_slave SONAME  'semisync_slave.so';

二 、运营插件

set global rpl_semi_sync_slave_enabled=on;

备注:同样建议写在配置文件中

澳门金沙国际 23

③ 、从服务器查看改插件是或不是开端工作

SHOW GLOBAL STATUS LIKE '%semi%';

澳门金沙国际 24

为啥没有从头工作?

因为是先打开的主从复制再设置的次插件

由此那种意况下,先结束从服务器的主从复制成效

1)停止:

stop slave;

2)再度开启主从复制

start slave;

3)再去查看

澳门金沙国际 25

备注:以往就启用了半共同功能,上边起首搭建高可用,完毕主服务器宕机自动升级从服务器当主

3、在从slave mysql1上

① 修改主配置文件

vim /etc/my.cnf 打开中继日志,钦点唯一的servr ID,设置只读权限

server-id=2       #配置server-id,让从服务器有唯一ID号
relay_log = mysql-relay-bin    #打开Mysql日志,日志格式为二进制
read_only = 1    #设置只读权限
log_bin = mysql-bin         #开启从服务器二进制日志,(非必须)
log_slave_updates = 1  #使得更新的数据写进二进制日志中

澳门金沙国际 26

systemctl start mariadb 开启服务

 


启航从服务器复制线程,让slave连接master,并初步重做master二进制日志中的事件。

MariaDB [(none)]> change master to master_host='192.168.30.107',
    -> master_user='slave',
    -> master_password='along',
    -> master_log_file='mysql-bin.000001',
    -> master_log_pos=245;
MariaDB [(none)]>  start slave;   # 启动复制线程,就是打开I/O线程和SQL线程;实现拉主的bin-log到从的relay-log上;再从relay-log写到数据库内存里

③ 查看从服务器状态

可使用SHOW SLAVE STATUS\G查看从服务器状态,如下所示,也可用show
processlist \G查看当前复制状态:

Slave_IO_Running: Yes #IO线程正常运作

Slave_SQL_Running: Yes #SQL线程符合规律运行

澳门金沙国际 27

 

数量版本  

3、在从slave mysql1上

① 修改主配置文件

vim /etc/my.cnf 打开中继日志,内定唯一的servr ID,设置只读权限

server-id=2       #配置server-id,让从服务器有唯一ID号
relay_log = mysql-relay-bin    #打开Mysql日志,日志格式为二进制
read_only = 1    #设置只读权限
log_bin = mysql-bin         #开启从服务器二进制日志,(非必须)
log_slave_updates = 1  #使得更新的数据写进二进制日志中

澳门金沙国际 28

systemctl start mariadb 开启服务

 


开行从服务器复制线程,让slave连接master,并早先重做master二进制日志中的事件。

MariaDB [(none)]> change master to master_host='192.168.30.107',
    -> master_user='slave',
    -> master_password='along',
    -> master_log_file='mysql-bin.000001',
    -> master_log_pos=245;
MariaDB [(none)]>  start slave;   # 启动复制线程,就是打开I/O线程和SQL线程;实现拉主的bin-log到从的relay-log上;再从relay-log写到数据库内存里

③ 查看从服务器状态

可使用SHOW SLAVE STATUS\G查看从服务器状态,如下所示,也可用show
processlist \G查看当前复制状态:

Slave_IO_Running: Yes #IO线程正常运作

Slave_SQL_Running: Yes #SQL线程平常运维

澳门金沙国际 29

 

MHA高性能

备考:四台主机之间必须是ssh基于key验证登陆,所以要先完毕ssh相互链接

步骤:

ssh-keygen

cd .ssh

ssh-copy-id 192.168.43.67

把.ssh目录考到别的主机

壹 、在主服务器上创设管理者账号

grant all on *.* to mhauser@'192.168.43.%' identified by 'centos';

贰 、在67管理主机上安装以下包

mha4mysql-manager 
mha4mysql-node

③ 、在1柒 、3⑦ 、57设置如下包

mha4mysql-node

④ 、在管制主机创设管理节点

mkdir /etc/mastermha/
cd /etc/mastermha/
vim app1.cnf

遵照地点成立的音讯填写

[server default]
user=mhauser
password=centos
manager_workdir=/app/mastermha/app1/
manager_log=/app/mastermha/app1/manager.log
remote_workdir=/app/mastermha/app1/
ssh_user=root
repl_user=repluser
repl_password=centos
ping_interval=1
##以上是全局设置

##以下是针对某一组集群设置
[server1]
hostname=192.168.43.17
candidate_master=1
[server2]
hostname=192.168.43.37
candidate_master=1
[server3]
hostname=192.168.43.57
candidate_master=1

备注:

candidate_master=1:是说主服务器宕机了涵盖那项的主机有时机当主

5、测试

1)ssh协议

/usr/bin/masterha_check_ssh --conf=/etc/mastermha/app1.cnf

二 、检查复制

masterha_check_repl --conf=/etc/mastermha/app1.cnf

③ 、运行(暗中认可前台执行)

masterha_manager --conf=/etc/mastermha/app1.cnf

澳门金沙国际 30

备考:若是您是编写翻译安装在/etc/mastermha/app1.cnf布局文件中钦命日志路径,最好大旨服务器数据库设置的位置都以千篇一律的。

澳门金沙国际 31

4、测试

① 在主上成立二个along库

澳门金沙国际 32

② 从上自动生成along数据库

澳门金沙国际 33

 

MySQL 5.6.23

4、测试

① 在主上成立3个along库

澳门金沙国际 34

② 从上自动生成along数据库

澳门金沙国际 35

 

伍 、若要继续丰硕新salve,完毕一主多从

假如master 现已运维很久了,想对新安装的slave
举办数量同步,甚至它从不master 的数额。

(1)在主master-mysql 上

① 进行完全备份
mysqldump --all-databases > /backup/mysql-all-backup-`date +%F-%T`.sql
把备份生成的文件发给salve-mysql2机器上
scp /backup/mysql-all-backup-2017-11-20-22\:04\:06.sql @192.168.30.2:  
② 查看现在的二进制文件状态
MariaDB [(none)]> show master status;

澳门金沙国际 36

(2)在从slave-mysql2上

① vim /etc/my.cnf 修改主配置文件,设为从

澳门金沙国际 37

② 进行master的一心备份复苏

mysql -uroot -p < mysql-all-backup-2017-11-20-22\:04\:06.sql

systemctl start mariadb 开启服务

复苏完后,数据直接与主完全一致

澳门金沙国际 38

伊始从服务器复制线程

MariaDB [(none)]> change master to master_host='192.168.30.107',
    -> master_user='slave',
    -> master_password='along',
    -> master_log_file='mysql-bin.000003',
    -> master_log_pos=500;

澳门金沙国际 39

 

一. MySQL数据库安装

⑤ 、若要继续累加新salve,达成一主多从

假如master 早就运转很久了,想对新装置的slave
实行多少同步,甚至它没有master 的数目。

(1)在主master-mysql 上

① 进行完全备份
mysqldump --all-databases > /backup/mysql-all-backup-`date +%F-%T`.sql
把备份生成的文件发给salve-mysql2机器上
scp /backup/mysql-all-backup-2017-11-20-22\:04\:06.sql @192.168.30.2:  
② 查看现在的二进制文件状态
MariaDB [(none)]> show master status;

澳门金沙国际 40

(2)在从slave-mysql2上

① vim /etc/my.cnf 修改主配置文件,设为从

澳门金沙国际 41

② 进行master的完全备份苏醒

mysql -uroot -p < mysql-all-backup-2017-11-20-22\:04\:06.sql

systemctl start mariadb 开启服务

回复完后,数据直接与主完全一致

澳门金沙国际 42

起步从服务器复制线程

MariaDB [(none)]> change master to master_host='192.168.30.107',
    -> master_user='slave',
    -> master_password='along',
    -> master_log_file='mysql-bin.000003',
    -> master_log_pos=500;

澳门金沙国际 43

 

六 、测试三台机器的一主多从涉嫌

① 在master 上创建home数据库

澳门金沙国际 44

② 在slave-mysql1 和2 上自动生成home库

澳门金沙国际 45

 

1. 成立MySQL用户和组

六 、测试三台机械的一主多从涉嫌

① 在master 上创建home数据库

澳门金沙国际 46

② 在slave-mysql1 和2 上自动生成home库

澳门金沙国际 47

 

⑦ 、解除主从关系,苏醒单身的服务器

① MariaDB [(none)]> stop slave; 关闭五个线程

澳门金沙国际 48

② vim /etc/my.cnf 删除3行

relay-log =mysql-relay-log
read-only = 1
log_slave_updates = 1

③ systemctl restart mariadb 重启服务

# groupadd -g 101 dba
# useradd -u 514 -g dba -G root -d /usr/local/mysql mysqladmin

柒 、解除主从关系,恢复生机单身的服务器

① MariaDB [(none)]> stop slave; 关闭四个线程

澳门金沙国际 49

② vim /etc/my.cnf 删除3行

relay-log =mysql-relay-log
read-only = 1
log_slave_updates = 1

③ systemctl restart mariadb 重启服务

实战二:达成宗旨从架构及复制过滤器

澳门金沙国际 50

架构原理:贰个主master,三个从slave1;从slave1再做主,另三个slave2以他为主做从;大体做法与上实验相似

复制过滤原理:复制过滤器:(黑、白名单)仅复制有限2个或多少个数据库相关的数据,而非全数;由复制过滤器实行;

有三种完毕思路:

(1) 主服务器
主服务器仅向二进制日志中记录有关特定数据库相关的写操作;
binlog_do_db=      #仅允许从复制这个库的二进制日志
binlog_ignore_db=  #除了这个库,其他都允许复制
(2) 从服务器
从服务器的SQL THREAD仅重放关注的数据库或表相关的事件,并将其应用于本地;
Replicate_Do_DB=       #只复制主的这个数据库数据
Replicate_Ignore_DB=  #除了这个都复制

2. 安插MySQL用户环境变量

实战二:落成基本从架构及复制过滤器

澳门金沙国际 51

架构原理:三个主master,2个从slave1;从slave1再做主,另一个slave2以他为主做从;大体做法与上尝试相似

复制过滤原理:复制过滤器:(黑、白名单)仅复制有限贰个或多少个数据库相关的多少,而非全部;由复制过滤器实行;

有两种完结思路:

(1) 主服务器
主服务器仅向二进制日志中记录有关特定数据库相关的写操作;
binlog_do_db=      #仅允许从复制这个库的二进制日志
binlog_ignore_db=  #除了这个库,其他都允许复制
(2) 从服务器
从服务器的SQL THREAD仅重放关注的数据库或表相关的事件,并将其应用于本地;
Replicate_Do_DB=       #只复制主的这个数据库数据
Replicate_Ignore_DB=  #除了这个都复制

一 、环境准备

机器名称

IP配置

服务角色

备注

master-mysql

192.168.30.107

主数据库

二进制日志

slave-mysql1

192.168.30.7

从数据库

中继日志

slave-mysql2

192.168.30.2

从数据库

中继日志

$ cat .bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs

PATH=/usr/local/mysql/bin:$PATH:$HOME/bin

export PATH

壹 、环境准备

机器名称

IP配置

服务角色

备注

master-mysql

192.168.30.107

主数据库

二进制日志

slave-mysql1

192.168.30.7

从数据库

中继日志

slave-mysql2

192.168.30.2

从数据库

中继日志

2、在主master 主服务器上

① vim /etc/my.cnf  修改mysql主配置文件,对master进行配置,打开二进制日志,指定唯一的servr ID,设置复制过滤
server-id=1             #配置server-id,让主服务器有唯一ID号
log-bin=mysql-bin   #打开Mysql日志,日志格式为二进制
skip-name-resolve   #关闭名称解析,(非必须)
binlog_ignore_db=home   #除了home数据库,其他都允许从复制主的二进制文件
#binlog_do_db=along   #仅允许从复制along数据库的二进制文件

澳门金沙国际 52

systemctl start mariadb 开启服务

 

开创并授权slave mysql 用的复制帐号

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO slave@'192.168.%.%' IDENTIFIED BY 'along';
分析:在Master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE权限。

③ 查看主服务器状态

在Master的数据库执行show master
status,查看主服务器二进制日志状态,地方号

澳门金沙国际 53

 

3. 下载MySQL二进制包并设置

二 、在主master 主服务器上

① vim /etc/my.cnf  修改mysql主配置文件,对master进行配置,打开二进制日志,指定唯一的servr ID,设置复制过滤
server-id=1             #配置server-id,让主服务器有唯一ID号
log-bin=mysql-bin   #打开Mysql日志,日志格式为二进制
skip-name-resolve   #关闭名称解析,(非必须)
binlog_ignore_db=home   #除了home数据库,其他都允许从复制主的二进制文件
#binlog_do_db=along   #仅允许从复制along数据库的二进制文件

澳门金沙国际 54

systemctl start mariadb 开启服务

 

创建并授权slave mysql 用的复制帐号

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO slave@'192.168.%.%' IDENTIFIED BY 'along';
分析:在Master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE权限。

③ 查看主服务器状态

在Master的数据库执行show master
status,查看主服务器二进制日志状态,地方号

澳门金沙国际 55

 

3、在从slave mysql1上

① 修改主配置文件

vim /etc/my.cnf 打开中继日志,钦赐唯一的servr ID,设置只读权限

server-id=2       #配置server-id,让从服务器有唯一ID号
relay_log = mysql-relay-bin    #打开Mysql日志,日志格式为二进制
read_only = 1    #设置只读权限
log_bin = mysql-bin         #开启从服务器二进制日志,(必须)
log_slave_updates = 1  #使得更新的数据写进二进制日志中

澳门金沙国际 56

systemctl start mariadb 开启服务

 


起步从服务器复制线程,让slave连接master,并开首重做master二进制日志中的事件。

MariaDB [(none)]> change master to master_host='192.168.30.107',
    -> master_user='slave',
    -> master_password='along',
    -> master_log_file='mysql-bin.000001',
    -> master_log_pos=245;
MariaDB [(none)]>  start slave;   # 启动复制线程,就是打开I/O线程和SQL线程;实现拉主的bin-log到从的relay-log上;再从relay-log写到数据库内存里

③ 查看从服务器状态

可使用SHOW SLAVE STATUS\G查看从服务器状态,如下所示,也可用show
processlist \G查看当前复制状态:

Slave_IO_Running: Yes #IO线程不荒谬运作

Slave_SQL_Running: Yes #SQL线程寻常运转

澳门金沙国际 57

 

$ mkdir /usr/local/mysql/{data,arch}
$ wget https://downloads.mysql.com/archives/get/file/mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz
$ tar -zxf mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz
$ mv mysql-5.6.23-linux-glibc2.5-x86_64/* /usr/local/mysql/

3、在从slave mysql1上

① 修改主配置文件

vim /etc/my.cnf 打开中继日志,钦定唯一的servr ID,设置只读权限

server-id=2       #配置server-id,让从服务器有唯一ID号
relay_log = mysql-relay-bin    #打开Mysql日志,日志格式为二进制
read_only = 1    #设置只读权限
log_bin = mysql-bin         #开启从服务器二进制日志,(必须)
log_slave_updates = 1  #使得更新的数据写进二进制日志中

澳门金沙国际 58

systemctl start mariadb 开启服务

 


开发银行从服务器复制线程,让slave连接master,并开端重做master二进制日志中的事件。

MariaDB [(none)]> change master to master_host='192.168.30.107',
    -> master_user='slave',
    -> master_password='along',
    -> master_log_file='mysql-bin.000001',
    -> master_log_pos=245;
MariaDB [(none)]>  start slave;   # 启动复制线程,就是打开I/O线程和SQL线程;实现拉主的bin-log到从的relay-log上;再从relay-log写到数据库内存里

③ 查看从服务器状态

可使用SHOW SLAVE STATUS\G查看从服务器状态,如下所示,也可用show
processlist \G查看当前复制状态:

Slave_IO_Running: Yes #IO线程不荒谬运营

Slave_SQL_Running: Yes #SQL线程符合规律运维

澳门金沙国际 59

 

四 、测试宗旨和复制过滤

(1)测试主从涉嫌

在主上创制2个along、home库;从上自动生成along、home数据库

澳门金沙国际 60

(2)测试复制过滤

① 在主上:在along库中创制二个classes的表;从上自动生成

MariaDB [home]> create table classes (id int not null,name
varchar(20));

澳门金沙国际 61

② 在主上:在home库中创立三个classes的表;从上未曾转变

MariaDB [home]> create table classes (id int not null,name
varchar(20));

澳门金沙国际 62

slave-mysql1 上,过滤成功

澳门金沙国际 63

 

4. 布署MySQL数据库(主备操作)

肆 、测试中央和复制过滤

(1)测试主从涉嫌

在主上创造三个along、home库;从上自动生成along、home数据库

澳门金沙国际 64

(2)测试复制过滤

① 在主上:在along库中创制一个classes的表;从上自动生成

MariaDB [home]> create table classes (id int not null,name
varchar(20));

澳门金沙国际 65

② 在主上:在home库中创建1个classes的表;从上从未有过成形

MariaDB [home]> create table classes (id int not null,name
varchar(20));

澳门金沙国际 66

slave-mysql1 上,过滤成功

澳门金沙国际 67

 

⑤ 、设置slave-mysql2 为slave-mysql1 的从,且在mysql2 设置复制过滤

(1)在slave-mysql1上,不用怎么设置

因为上面主配置文件已经拉开了和谐的二进制文件;且slave-mysql1
是从初步就一同master的,所以授权命令也一并过了

MariaDB [home]> select user,host from mysql.user;
能够查阅本人授权过的用户

澳门金沙国际 68

 

(2)slave-mysql2 上,能够像上试验一样,先给主的完全备份在本机苏醒一下

① 在主上完备
mysqldump --all-databases > /backup/mysql-all-backup-`date +%F-%T`.sql
scp /backup/mysql-all-backup-2017-11-21-11:14:59.sql @192.168.30.2:  

② 进行master的完全备份恢复
mysql -uroot -p < mysql-all-backup-2017-11-20-22\:04\:06.sql

③ 在slave-mysql2 上
vim /etc/my.cnf  修改主配置文件,设为从;且设置过滤
server-id =3
relay-log =mysql-relay-log
read-only = 1
log-bin = mysql-bin
log_slave_updates = 1
replicate_do_dB=along    #只复制它的主的along数据库

澳门金沙国际 69

systemctl start mariadb 开启服务

 

④ mysql 打开数据库,查看数据恢复生机成功;

起步从服务器复制线程,让slave连接master,并起头重做master二进制日志中的事件。

MariaDB [(none)]> change master to master_host='192.168.30.107',
    -> master_user='slave',
    -> master_password='along',
    -> master_log_file='mysql-bin.000008',
    -> master_log_pos=773;
MariaDB [(none)]> start slave;

⑤ MariaDB [(none)]> show slave status \G;
查看,三个经过打开,且只复制主的along数据库

澳门金沙国际 70

 

  4.1 制造MySQL配置文件/etc/my.cnf

五 、设置slave-mysql2 为slave-mysql1 的从,且在mysql2 设置复制过滤

(1)在slave-mysql1上,不用怎么设置

因为上边主配置文件已经打开了投机的二进制文件;且slave-mysql1
是从开头就一路master的,所以授权命令也一起过了

MariaDB [home]> select user,host from mysql.user;
能够查看自身授权过的用户

澳门金沙国际 71

 

(2)slave-mysql2 上,能够像上试验一样,先给主的通通备份在本机恢复一下

① 在主上完备
mysqldump --all-databases > /backup/mysql-all-backup-`date +%F-%T`.sql
scp /backup/mysql-all-backup-2017-11-21-11:14:59.sql @192.168.30.2:  

② 进行master的完全备份恢复
mysql -uroot -p < mysql-all-backup-2017-11-20-22\:04\:06.sql

③ 在slave-mysql2 上
vim /etc/my.cnf  修改主配置文件,设为从;且设置过滤
server-id =3
relay-log =mysql-relay-log
read-only = 1
log-bin = mysql-bin
log_slave_updates = 1
replicate_do_dB=along    #只复制它的主的along数据库

澳门金沙国际 72

systemctl start mariadb 开启服务

 

④ mysql 打开数据库,查看数据恢复生机成功;

启航从服务器复制线程,让slave连接master,并初叶重做master二进制日志中的事件。

MariaDB [(none)]> change master to master_host='192.168.30.107',
    -> master_user='slave',
    -> master_password='along',
    -> master_log_file='mysql-bin.000008',
    -> master_log_pos=773;
MariaDB [(none)]> start slave;

⑤ MariaDB [(none)]> show slave status \G;
查看,多少个进度打开,且只复制主的along数据库

澳门金沙国际 73

 

⑥ 、测试主从从和slave-mysql2的复制过滤

(1)在主上删除job数据库,master 和slave-mysql1 都剔除成功

MariaDB [home]> drop database job; 删除job库

澳门金沙国际 74

因为slave-mysql2 只同步slave-mysql1 的along库,所以并未去除

澳门金沙国际 75

 

(2)在主上的along数据库,成立3个grade 表,master 和slave-mysql1
都剔除成功

MariaDB [along]> create table grade (id int not null,name
varchar(20));

澳门金沙国际 76

在slave-mysql2 上也自动生成成功

澳门金沙国际 77

 

# cat /etc/my.cnf 
[client]
port            = 3306
socket          = /usr/local/mysql/data/mysql.sock

[mysqld]
port            = 3306
socket          = /usr/local/mysql/data/mysql.sock

skip-external-locking
key_buffer_size = 256M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
query_cache_size= 32M
max_allowed_packet = 16M
myisam_sort_buffer_size=128M
tmp_table_size=32M

table_open_cache = 512
thread_cache_size = 8
wait_timeout = 86400
interactive_timeout = 86400
max_connections = 600

# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 32

#isolation level and default engine 
default-storage-engine = INNODB
transaction-isolation = READ-COMMITTED

server-id  = 1
basedir     = /usr/local/mysql
datadir     = /usr/local/mysql/data
pid-file     = /usr/local/mysql/data/hostname.pid

#open performance schema
log-warnings
sysdate-is-now

binlog_format = MIXED
log_bin_trust_function_creators=1
log-error  = /usr/local/mysql/data/hostname.err
log-bin=/usr/local/mysql/arch/mysql-bin
#other logs
#general_log =1
#general_log_file  = /usr/local/mysql/data/general_log.err
#slow_query_log=1
#slow_query_log_file=/usr/local/mysql/data/slow_log.err

#for replication slave
#log-slave-updates 
#sync_binlog = 1

#for innodb options 
innodb_data_home_dir = /usr/local/mysql/data/
innodb_data_file_path = ibdata1:500M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/arch
innodb_log_files_in_group = 2
innodb_log_file_size = 200M

innodb_buffer_pool_size = 2048M
innodb_additional_mem_pool_size = 50M
innodb_log_buffer_size = 16M

innodb_lock_wait_timeout = 100
#innodb_thread_concurrency = 0
innodb_flush_log_at_trx_commit = 1
innodb_locks_unsafe_for_binlog=1

#innodb io features: add for mysql5.5.8
performance_schema
innodb_read_io_threads=4
innodb-write-io-threads=4
innodb-io-capacity=200
#purge threads change default(0) to 1 for purge
innodb_purge_threads=1
innodb_use_native_aio=on

#case-sensitive file names and separate tablespace
innodb_file_per_table = 1
lower_case_table_names=1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[mysqlhotcopy]
interactive-timeout

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

六 、测试主从从和slave-mysql2的复制过滤

(1)在主上删除job数据库,master 和slave-mysql1 都剔除成功

MariaDB [home]> drop database job; 删除job库

澳门金沙国际 78

因为slave-mysql2 只同步slave-mysql1 的along库,所以并未去除

澳门金沙国际 79

 

(2)在主上的along数据库,创立1个grade 表,master 和slave-mysql1
都剔除成功

MariaDB [along]> create table grade (id int not null,name
varchar(20));

澳门金沙国际 80

在slave-mysql2 上也自动生成成功

澳门金沙国际 81

 

实战三:mysql数据库双主的落到实处

澳门金沙国际 82

原理:双主便是两者互为中央

为了缓解双主同时对3个数据库进行写入,选拔自增进ID来消除,多个mysql写入用奇偶ID岔开

① 创建表,设置ID为自增长
create table userInfo (id int PRIMARY KEY AUTO_INCREMENT,name varchar(50) NOT NULL);
② 定义一个节点使用奇数id:从1开始,步长为2,
auto_increment_increment=2   #表示自增长字段每次递增的量,步长
auto_increment_offset=1          #表示自增长字段从那个数开始
③ 另一个节点使用偶数id:从2开始,步长为2,
auto_increment_increment=2
auto_increment_offset=2

应用:只适合小型集团,小并发访问量,究竟还要写入易出错

 

  4.2 初始化MySQL数据库

实战三:mysql数据库双主的落到实处

澳门金沙国际 83

原理:双主正是两岸互为基本

为了缓解双主同时对二个数据库进行写入,选取自增进ID来消除,五个mysql写入用奇偶ID岔开

① 创建表,设置ID为自增长
create table userInfo (id int PRIMARY KEY AUTO_INCREMENT,name varchar(50) NOT NULL);
② 定义一个节点使用奇数id:从1开始,步长为2,
auto_increment_increment=2   #表示自增长字段每次递增的量,步长
auto_increment_offset=1          #表示自增长字段从那个数开始
③ 另一个节点使用偶数id:从2开始,步长为2,
auto_increment_increment=2
auto_increment_offset=2

应用:只适合小型企业,小并发访问量,毕竟还要写入易出错

 

壹 、环境准备

机器名称

IP配置

服务角色

备注

mysql1

192.168.30.107

数据库

中继日志、二进制日志

mysql2

192.168.30.7

数据库

中继日志、二进制日志

$ scripts/mysql_install_db --user=mysqladmin --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

Installing MySQL system tables...2017-07-12 02:46:46 0 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release.
2017-07-12 02:46:46 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
OK

Filling help tables...2017-07-12 02:47:40 0 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release.
2017-07-12 02:47:40 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

  /usr/local/mysql/bin/mysqladmin -u root password 'new-password'
  /usr/local/mysql/bin/mysqladmin -u root -h ec2t-userdata-01 password 'new-password'

Alternatively you can run:

  /usr/local/mysql/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:

  cd . ; /usr/local/mysql/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl

  cd mysql-test ; perl mysql-test-run.pl

Please report any problems at http://bugs.mysql.com/

The latest information about MySQL is available on the web at

  http://www.mysql.com

Support MySQL by buying support/licenses at http://shop.mysql.com

WARNING: Found existing config file /usr/local/mysql/my.cnf on the system.
Because this file might be in use, it was not replaced,
but was used in bootstrap (unless you used --defaults-file)
and when you later start the server.
The new default config file was created as /usr/local/mysql/my-new.cnf,
please compare it with your file and take the changes you need.

WARNING: Default config file /etc/my.cnf exists on the system
This file will be read by default by the MySQL server
If you do not want to use this, either remove it, or use the
--defaults-file argument to mysqld_safe when starting the server

壹 、环境准备

机器名称

IP配置

服务角色

备注

mysql1

192.168.30.107

数据库

中继日志、二进制日志

mysql2

192.168.30.7

数据库

中继日志、二进制日志

② 、配置总布局文件,除了ID号和胚胎数,两边都是均等的

vim /etc/my/cnf

server-id =1    #mysql1的配置ID为1,mysql2的ID为2
relay-log =mysql-relay-log
log-bin = mysql-bin
log_slave_updates = 1
auto_increment_increment=2   #表示自增长字段每次递增的量,步长
auto_increment_offset=1   #表示自增长字段从那个数开始,mysql1从1开始;mysql2从2开始

澳门金沙国际 84

systemctl start mariadb

 

  4.3 运维MySQL数据库,并为root用户安装密码,删除多余用户

贰 、配置总陈设文件,除了ID号和早先数,两边都以同等的

vim /etc/my/cnf

server-id =1    #mysql1的配置ID为1,mysql2的ID为2
relay-log =mysql-relay-log
log-bin = mysql-bin
log_slave_updates = 1
auto_increment_increment=2   #表示自增长字段每次递增的量,步长
auto_increment_offset=1   #表示自增长字段从那个数开始,mysql1从1开始;mysql2从2开始

澳门金沙国际 85

systemctl start mariadb

 

叁 、相互设为对方的从

(1)授权远程登录的用户
mysql1、2 上
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO slave@'192.168.%.%' IDENTIFIED BY 'along';

(2)开启复制线程
① mysql1 上
MariaDB [(none)]> change master to master_host='192.168.30.7',
    -> master_user='slave',
    -> master_password='along',
    -> master_log_file='mysql-bin.000002',
    -> master_log_pos=245;
MariaDB [(none)]>  start slave;   # 启动复制线程

② mysql2 上
MariaDB [(none)]> change master to master_host='192.168.30.107',
    -> master_user='slave',
    -> master_password='along',
    -> master_log_file='mysql-bin.000002',
    -> master_log_pos=245;
MariaDB [(none)]>  start slave;   # 启动复制线程
$ /usr/local/mysql/bin/mysqld_safe &
[1] 2531
$ 170714 03:34:41 mysqld_safe Logging to '/usr/local/mysql/data/hostname.err'.
170714 03:34:41 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

$ mysqladmin -u root password "mypna123"
$ mysql -u root -pmypna123
mysql> select user,password,host from mysql.user;
+------+-------------------------------------------+------------------+
| user | password                                  | host             |
+------+-------------------------------------------+------------------+
| root | *FDC33561AE905A01A945F356C99B76E1F0707B3B | localhost        |
| root |                                           | ec2t-pgtest-01   |
| root |                                           | 127.0.0.1        |
| root |                                           | ::1              |
|      |                                           | localhost        |
|      |                                           | ec2t-pgtest-01   |
+------+-------------------------------------------+------------------+
6 rows in set (0.00 sec)

mysql> delete from mysql.user where user='' or password='';
Query OK, 2 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select user,password,host from mysql.user;
+------+-------------------------------------------+-----------+
| user | password                                  | host      |
+------+-------------------------------------------+-----------+
| root | *FDC33561AE905A01A945F356C99B76E1F0707B3B | localhost |
+------+-------------------------------------------+-----------+
1 row in set (0.00 sec)

③ 、相互设为对方的从

(1)授权远程登录的用户
mysql1、2 上
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO slave@'192.168.%.%' IDENTIFIED BY 'along';

(2)开启复制线程
① mysql1 上
MariaDB [(none)]> change master to master_host='192.168.30.7',
    -> master_user='slave',
    -> master_password='along',
    -> master_log_file='mysql-bin.000002',
    -> master_log_pos=245;
MariaDB [(none)]>  start slave;   # 启动复制线程

② mysql2 上
MariaDB [(none)]> change master to master_host='192.168.30.107',
    -> master_user='slave',
    -> master_password='along',
    -> master_log_file='mysql-bin.000002',
    -> master_log_pos=245;
MariaDB [(none)]>  start slave;   # 启动复制线程

④ 、测试双方互为骨干的涉及

在mysql1上,删除test数据库;mysql2 上也自行删除

澳门金沙国际 86

在mysql2上,创造xiaohei数据库;mysql2 上也自动生成

澳门金沙国际 87

 

  4.4 安装MySQL时区

肆 、测试双方互为基本的涉及

在mysql1上,删除test数据库;mysql2 上也自行删除

澳门金沙国际 88

在mysql2上,成立xiaohei数据库;mysql2 上也自动生成

澳门金沙国际 89

 

5、设置自拉长ID的表

MariaDB [along]> create table home (id int PRIMARY KEY
AUTO_INCREMENT,name varchar(20));

澳门金沙国际 90

① 在mysql1上向表中插入数据

MariaDB [along]> insert into home(name)
value(‘mayun’),(‘mahuateng’),(‘wangjianlin’);

澳门金沙国际 91

② 在mysql2上向表中插入数据

MariaDB [along]> insert into home(name)
value(‘dinglei’),(‘liyanhong’),(‘leijun’);

澳门金沙国际 92

 

$ mysql -u root -pmypna123 -e "SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');"
Warning: Using a password on the command line interface can be insecure.
+-----------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','GMT','MET') |
+-----------------------------------------------+
| NULL                                          |
+-----------------------------------------------+


$ /usr/local/mysql/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -pmypna123 mysql
Warning: Using a password on the command line interface can be insecure.
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.

$ mysql -u root -pmypna123 -e "SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');"
Warning: Using a password on the command line interface can be insecure.
+-----------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','GMT','MET') |
+-----------------------------------------------+
| 2004-01-01 13:00:00                           |
+-----------------------------------------------+

$ mysql -u root -pmypna123 -e "SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');"
Warning: Using a password on the command line interface can be insecure.
+-----------------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00') |
+-----------------------------------------------------+
| 2004-01-01 22:00:00                                 |
+-----------------------------------------------------+

伍 、设置自拉长ID的表

MariaDB [along]> create table home (id int PRIMARY KEY
AUTO_INCREMENT,name varchar(20));

澳门金沙国际 93

① 在mysql1上向表中插入数据

MariaDB [along]> insert into home(name)
value(‘mayun’),(‘mahuateng’),(‘wangjianlin’);

澳门金沙国际 94

② 在mysql2上向表中插入数据

MariaDB [along]> insert into home(name)
value(‘dinglei’),(‘liyanhong’),(‘leijun’);

澳门金沙国际 95

 

实验四:完结半一并复制的一主多从

  原理:介于异步复制和全同台复制之间,主库在实施完客户端提交的事务后不是当时回到给客户端,而是等候至少二个从库接收到并写到relay
log中才回去给客户端
。相对于异步复制,半协办理并答复制升高了数据的安全性,同时它也导致了必然程度的推迟,那些延迟最少是几个TCP/IP往返的日子。所以,半一同复制最还好低延时的互联网中利用。

专注:本来是相应至少1个从mysql,才能有实在的效劳,可是原理都以一律的,笔者就只用了一主一从

  4.5 设置MySQL服务相关

实验四:完结半手拉手复制的一主多从

  原理:介于异步复制和全同台复制之间,主库在履行完客户端提交的事务后不是立即回到给客户端,而是等候至少三个从库接收到并写到relay
log中才回去给客户端
。相对于异步复制,半联合举行复制提升了数额的安全性,同时它也促成了一定水平的推迟,这些延迟最少是3个TCP/IP往返的岁月。所以,半一块复制最幸亏低延时的网络中动用。

在意:本来是应该至少一个从mysql,才能有真正的职能,不过原理都是一模一样的,我就只用了一主一从

一 、环境准备

机器名称

IP配置

服务角色

备注

master-mysql

192.168.30.107

主数据库

二进制日志

slave-mysql

192.168.30.7

从数据库

中继日志

# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql
# chmod +x /etc/rc.d/init.d/mysql
# chown mysqladmin:dba /etc/rc.d/init.d/mysql
# echo 'su - mysqladmin -c "/etc/init.d/mysql start --federated"' >> /etc/rc.local
# chkconfig --add mysql
# chkconfig mysql --level 2345 on

壹 、环境准备

机器名称

IP配置

服务角色

备注

master-mysql

192.168.30.107

主数据库

二进制日志

slave-mysql

192.168.30.7

从数据库

中继日志

② 、遵照实战一,实现核心

澳门金沙国际 96

 

 二. MySQL主从复制计划

贰 、根据实战一,完成大旨

澳门金沙国际 97

 

叁 、加载模块,达成半一块

(1)在主master-mysql 上:

MariaDB [(none)]> install plugin rpl_semi_sync_master soname 'semisync_master.so';  加载模块
MariaDB [(none)]> show global variables like 'rpl_semi%';  查看是否开启 
MariaDB [(none)]> set global rpl_semi_sync_master_enabled = on;   开启

澳门金沙国际 98

 

(2)在从slave-mysql 上:

MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
SHOW GLOBAL VARIABLES LIKE 'rpl_semi%';
set global variables rpl_semi_sync_slave_enabled = on;
为了主从同步,再重启启动下slave 两个进程
MariaDB [(none)]> stop slave;
MariaDB [(none)]> start slave;

澳门金沙国际 99

 

1. 联手主备库时间,可在主库搭建NTP SE凯雷德VE陆风X8,备库作为NTP client

③ 、加载模块,完毕半同台

(1)在主master-mysql 上:

MariaDB [(none)]> install plugin rpl_semi_sync_master soname 'semisync_master.so';  加载模块
MariaDB [(none)]> show global variables like 'rpl_semi%';  查看是否开启 
MariaDB [(none)]> set global rpl_semi_sync_master_enabled = on;   开启

澳门金沙国际 100

 

(2)在从slave-mysql 上:

MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
SHOW GLOBAL VARIABLES LIKE 'rpl_semi%';
set global variables rpl_semi_sync_slave_enabled = on;
为了主从同步,再重启启动下slave 两个进程
MariaDB [(none)]> stop slave;
MariaDB [(none)]> start slave;

澳门金沙国际 101

 

肆 、查询日志,验证

cd /var/log/mariadb/

tail mariadb.log

澳门金沙国际 102

注释:

① 用于工作的半协同复制。

② 在主服务器上启用了半一起复制。

③ 运维半联合的binlog 转储到slave (id:2)上

④ 结束异步的二进制文件转储

 

2. 添加hosts文件分析确定保障主备能够相互解析host主机名

肆 、查询日志,验证

cd /var/log/mariadb/

tail mariadb.log

澳门金沙国际 103

注释:

① 用于工作的半联合署名复制。

② 在主服务器上启用了半协助举行理并答复制。

③ 运行半协同的binlog 转储到slave (id:2)上

④ 截止异步的二进制文件转储

 

尝试五:完成MHA 高可用mysql数据库架构

原理:由此可知正是当主master mysql宕机时,从slave
mysql顶上去的一多级操作

① 从宕机崩溃的master 封存二进制日志事件(binlog events );

② 识别含有最新更新的slave;

③ 应用差距的连片日志(relay log) 到其余slave;

④ 应用从master 封存的二进制日志事件(binlog events);

晋升贰个slave 为新master;

⑥ 使用其它的slave 连接新的master

 

架构图

澳门金沙国际 104

3. 主库做以下操作

实验五:完成MHA 高可用mysql数据库框架结构

原理:简单来说便是当主master mysql宕机时,从slave
mysql顶上去的一多元操作

① 从宕机崩溃的master 保存二进制日志事件(binlog events );

② 识别含有最新更新的slave;

③ 应用差距的连片日志(relay log) 到任何slave;

④ 应用从master 保存的二进制日志事件(binlog events);

晋级多少个slave 为新master;

⑥ 使用其他的slave 连接新的master

 

架构图

澳门金沙国际 105

一 、环境准备

机器名称

IP配置

服务角色

备注

master-mysql

192.168.30.107

主数据库

二进制日志、中继日志

slave-mysql1

192.168.30.7

从数据库

二进制日志、中继日志

slave-mysql2

192.168.30.2

从数据库

二进制日志、中继日志

MHA manager

192.168.30.3

MHA的管理节点

 

  3.1 启用二进制日志

① 、环境准备

机器名称

IP配置

服务角色

备注

master-mysql

192.168.30.107

主数据库

二进制日志、中继日志

slave-mysql1

192.168.30.7

从数据库

二进制日志、中继日志

slave-mysql2

192.168.30.2

从数据库

二进制日志、中继日志

MHA manager

192.168.30.3

MHA的管理节点

 

贰 、实现三台服务器的一主多从

注意点:


各个节点都需打开二进制和连接日志,因为主会宕机,当主的机械修复实现,能够看作从接二连三选拔,所以中继日志是必须的;从也会在主宕机的时候,顶为主,所以二进制日志也是必须的

② 各从节点必须出示启用其read-only 属性,并关闭relay_log_purge
清理中继日志的成效

③ 注意各个mysql 的server-id都不能够同一

(1)vim  /etc/my.cnf  修改配置文件
① 主的配置文件
server-id=1
log-bin=mysql-bin
relay-log=mysql-relay-log
skip-name-resolve

② 从的配置文件,各个从的配置文件除了ID,其他都相同
server-id =2[/3]    #各自对应自己的id
relay-log =mysql-relay-log
log-bin = mysql-bin
read_only = on
relay_log_purge = 0
skip_name_resolve

systemctl start mariadb   启动服务

(2)在主上:授权
MariaDB [(none)]> grant replication slave,replication client on *.* to slave@'192.168.30.%' identified by 'along';

(3)在从上:开启I/O,SQL线程,实现主从
MariaDB [(none)]> change master to master_host='192.168.30.107',
master_user='slave',
master_password='along',
master_log_file='mysql-bin.000001',
master_log_pos=245;
MariaDB [(none)]> start slave ;

澳门金沙国际 106

 

$ grep "log-bin" /etc/my.cnf 
log-bin=/usr/local/mysql/arch/mysql-bin

② 、落成三台服务器的一主多从

注意点:


每一个节点都需开启二进制和接通日志,因为主会宕机,当主的机器修复实现,能够当作从一而再选取,所以中继日志是必须的;从也会在主宕机的时候,顶为主,所以二进制日志也是必须的

② 各从节点必须出示启用其read-only 属性,并关闭relay_log_purge
清理中继日志的效果

③ 注意每一种mysql 的server-id都不可能同一

(1)vim  /etc/my.cnf  修改配置文件
① 主的配置文件
server-id=1
log-bin=mysql-bin
relay-log=mysql-relay-log
skip-name-resolve

② 从的配置文件,各个从的配置文件除了ID,其他都相同
server-id =2[/3]    #各自对应自己的id
relay-log =mysql-relay-log
log-bin = mysql-bin
read_only = on
relay_log_purge = 0
skip_name_resolve

systemctl start mariadb   启动服务

(2)在主上:授权
MariaDB [(none)]> grant replication slave,replication client on *.* to slave@'192.168.30.%' identified by 'along';

(3)在从上:开启I/O,SQL线程,实现主从
MariaDB [(none)]> change master to master_host='192.168.30.107',
master_user='slave',
master_password='along',
master_log_file='mysql-bin.000001',
master_log_pos=245;
MariaDB [(none)]> start slave ;

澳门金沙国际 107

 

3、配置MHA的准备

(1)MHA的安装

需安装三个包 rz,笔者已经停放本人网盘里,要求的私聊http://pan.baidu.com/s/1kV8BCJt

mha4mysql-manager-0.56-0.el6.noarch.rpm

mha4mysql-node-0.56-0.el6.noarch.rpm

不无节点,包含Manager都需安装:

yum -y localinstall mha4mysql-*

 

(2)实现各种节点都基于秘钥认证

解析:MHA 集群中的各节点相互之间均需求依照ssh
互信通讯,以贯彻长途控制及数码管理功能。

澳门金沙国际,例:主master 机器:

ssh-keygen -t rsa    生成公私秘钥对,可以直接敲3个回车,不须加密
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.30.7:  
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.30.2:
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.30.3:   把公钥发给其他3个机器
注意:每个mysql服务器都需要发送自己的公钥

澳门金沙国际 108

 

(3)给MHA manager授权

MariaDB [(none)]> grant all on *.* to ‘mhaadm’@’192.168.30.%’
identified by ‘along’;

留神:MHA manager
须求做过多事,所以给相当大的权力;且已经实现中央,所以只需在master上实施授权命令

 

(4)定义MHA 管理配置文件

mkdir /etc/mha_master 创设布局文件存放目录

vim /etc/mha_master/app.cnf
设置配置文件,只顾注释不要加在配置文件中,不然检查和测试可是

[server default]         // 适用于server1,2,3 个server 的配置
user=mhaadm            //mha 管理用户
password=along         //mha 管理密码
manager_workdir=/etc/mha_master/app         //mha_master 自己的工作路径
manager_log=/etc/mha_master/manager.log  // mha_master 自己的日志文件
remote_workdir=/mydata/mha_master/app     // 每个远程主机的工作目录在何处
ssh_user=root                 //  基于ssh 的密钥认证
repl_user=slave              // 数据库用户名
repl_password=along     // 数据库密码
ping_interval=1     // ping 间隔时长
[server1]               // 节点1
hostname=192.168.30.107   // 节点1 主机地址
ssh_port=22          // 节点1 的ssh 端口
candidate_master=1            //  将来可不可以成为master 候选节点/ 主节点
[server2]
hostname=192.168.30.7
ssh_port=22
candidate_master=1
[server3]
hostname=192.168.30.2
ssh_port=22
candidate_master=1

  3.2 选拔3个唯一的server-id

3、配置MHA的准备

(1)MHA的安装

需安装1个包 rz,小编已经停放自身网盘里,须要的私聊http://pan.baidu.com/s/1kV8BCJt

mha4mysql-manager-0.56-0.el6.noarch.rpm

mha4mysql-node-0.56-0.el6.noarch.rpm

富有节点,包罗Manager都需安装:

yum -y localinstall mha4mysql-*

 

(2)完毕种种节点都基于秘钥认证

剖析:MHA 集群中的各节点相互之间均须求依照ssh
互信通讯,以促成长途控制及数码管理功用。

例:主master 机器:

ssh-keygen -t rsa    生成公私秘钥对,可以直接敲3个回车,不须加密
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.30.7:  
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.30.2:
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.30.3:   把公钥发给其他3个机器
注意:每个mysql服务器都需要发送自己的公钥

澳门金沙国际 109

 

(3)给MHA manager授权

MariaDB [(none)]> grant all on *.* to ‘mhaadm’@’192.168.30.%’
identified by ‘along’;

小心:MHA manager
须求做过多事,所以给非常大的权柄;且早已落到实处大旨,所以只需在master上执行授权命令

 

(4)定义MHA 管理配置文件

mkdir /etc/mha_master 创立布局文件存放目录

vim /etc/mha_master/app.cnf
设置配置文件,专注注释不要加在配置文件中,不然检查和测试可是

[server default]         // 适用于server1,2,3 个server 的配置
user=mhaadm            //mha 管理用户
password=along         //mha 管理密码
manager_workdir=/etc/mha_master/app         //mha_master 自己的工作路径
manager_log=/etc/mha_master/manager.log  // mha_master 自己的日志文件
remote_workdir=/mydata/mha_master/app     // 每个远程主机的工作目录在何处
ssh_user=root                 //  基于ssh 的密钥认证
repl_user=slave              // 数据库用户名
repl_password=along     // 数据库密码
ping_interval=1     // ping 间隔时长
[server1]               // 节点1
hostname=192.168.30.107   // 节点1 主机地址
ssh_port=22          // 节点1 的ssh 端口
candidate_master=1            //  将来可不可以成为master 候选节点/ 主节点
[server2]
hostname=192.168.30.7
ssh_port=22
candidate_master=1
[server3]
hostname=192.168.30.2
ssh_port=22
candidate_master=1

④ 、开启服务此前的检查和测试

瞩目:开启服务从前的检查万分有供给,因为mha服务是管理mysql的,全数须要很严谨,假诺检查通可是,开启服务时会有一堆错误。老是运维服务在此之前都需检查和测试条件。

① 检查和测试各节点间ssh 互信通讯配置是或不是Ok:

masterha_check_ssh -conf=/etc/mha_master/app.cnf

  输出新闻最后一行类似如下音讯,表示其通过检查和测试。

  [info]All SSH connection tests passed successfully.

澳门金沙国际 110

② 检查管理的MySQL 复制集群的接连配置参数是否OK :

masterha_check_repl -conf=/etc/mha_master/app.cnf

  输出消息最后一行类似如下音讯,表示其经过检查和测试。

  MySQL Replication Health is OK.

 

注意:若果测试时会报错
,也许是从节点上尚未账号,因为这么些架构,任何3个从节点,将有可能成为主节点,所以也要求创设账号。

故此,那里只要在mater 节点上海重机厂新实施以下操作即可:

  MariaDB [(none)]> grant all on *.* to
‘mhaadm’@’192.168.30.%’ identified by ‘along’;

  MariaDB [(none)]> FLUSH PRIVILEGES;

Manager 节点上再一次运维,就展现Ok 了。

 

$ grep "server-id" /etc/my.cnf 
server-id  = 1

四 、开启服务在此之前的检查和测试

留神:开启服务此前的检查卓殊有必不可少,因为mha服务是管制mysql的,所有供给很严谨,假如检查通可是,开启服务时会有一堆错误。老是运转服务在此之前都需检查和测试条件。

① 检查和测试各节点间ssh 互信通讯配置是或不是Ok:

masterha_check_ssh -conf=/etc/mha_master/app.cnf

  输出音信末了一行类似如下信息,表示其经过检查和测试。

  [info]All SSH connection tests passed successfully.

澳门金沙国际 111

② 检查管理的MySQL 复制集群的连日配置参数是或不是OK :

masterha_check_repl -conf=/etc/mha_master/app.cnf

  输出音讯最后一行类似如下音讯,表示其通过检查和测试。

  MySQL Replication Health is OK.

 

注意:设若测试时会报错
,恐怕是从节点上从未有过账号,因为那些架构,任何一个从节点,将有大概成为主节点,所以也需求成立账号。

为此,那里只要在mater 节点上再一次实施以下操作即可:

  MariaDB [(none)]> grant all on *.* to
‘mhaadm’@’192.168.30.%’ identified by ‘along’;

  MariaDB [(none)]> FLUSH PRIVILEGES;

Manager 节点上再也运转,就展现Ok 了。

 

5、启动MHA

(1)开启mha服务

nohup masterha_manager -conf=/etc/mha_master/app.cnf &> /etc/mha_master/manager.log &
启动成功后,可用过如下命令来查看master 节点的状态:
masterha_check_status -conf=/etc/mha_master/app.cnf

澳门金沙国际 112

app (pid:3777) is running(0:PING_OK), master:192.168.30.107

上面的音讯中”app (pid:3777)is running(0:PING_OK)” 表示MHA 服务运转OK
,不然,则会呈现为接近”app is stopped(1:NOT_RUNNINg).”

(2)假诺要适可而止MHA ,要求动用master_stop 命令。

masterha_stop -conf=/etc/mha_master/app.cnf

 

   3.3 创设具有复制权限的用户

5、启动MHA

(1)开启mha服务

nohup masterha_manager -conf=/etc/mha_master/app.cnf &> /etc/mha_master/manager.log &
启动成功后,可用过如下命令来查看master 节点的状态:
masterha_check_status -conf=/etc/mha_master/app.cnf

澳门金沙国际 113

app (pid:3777) is running(0:PING_OK), master:192.168.30.107

上面包车型客车音信中”app (pid:3777)is running(0:PING_OK)” 表示MHA 服务运转OK
,不然,则会显得为接近”app is stopped(1:NOT_RUNNINg).”

(2)假设要适可而止MHA ,须求动用master_stop 命令。

masterha_stop -conf=/etc/mha_master/app.cnf

 

六 、测试MHA 测试故障转移

(1) 在master 节点关闭mariadb 服务, 模拟主节点数据崩溃

killall -9 mysqld mysqld_safe

rm -rf /var/lib/mysql/*

(2) 在manager 节点查看日志:

tail -20 /etc/mha_master/manager.log
日志文件中冒出如下音讯,表示manager
检查和测试到192.168.30.107节点故障,而后自动执行故障转移,将192.168.30.7
升高为主节点。

澳门金沙国际 114

注意:故障转移完结后,manager 将会活动甘休,此时利用

masterha_check_status 命令检查和测试将会赶上错误提醒,如下所示:

澳门金沙国际 115

 

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

⑥ 、测试MHA 测试故障转移

(1) 在master 节点关闭mariadb 服务, 模拟主节点数据崩溃

killall -9 mysqld mysqld_safe

rm -rf /var/lib/mysql/*

(2) 在manager 节点查看日志:

tail -20 /etc/mha_master/manager.log
日志文件中冒出如下消息,表示manager
检查和测试到192.168.30.107节点故障,而后自动执行故障转移,将192.168.30.7
进步为主节点。

澳门金沙国际 116

注意:故障转移完成后,manager 将会自行截至,此时选择

masterha_check_status 命令检查和测试将会境遇错误提示,如下所示:

澳门金沙国际 117

 

⑦ 、提供新的从节点以修复复制集群

原本 master 节点故障后,需求再行准备好二个新的 MySQL
节点
。基于来自于master 节点的备份复苏数据后,将其安排为新的 master
的从节点即可。注意,新参与的节点借使为增加产量节点,其 IP 地址要安顿为本来
master 节点的 IP
,不然,还亟需修改 app.cnf 中相应的 ip
地址。随后再一次运营 manager ,同等看待复检查和测试其场馆。

除却扩展新的mysql 节点,也可以将坏掉主mysql
修复,再将其当作从参与集群中。由于机械有限,作者就用修复好的主作为从,修复复制集群。

(1)修复主mysql

yum -y remove mariadb-server

yum -y install mariadb-server

 

(2)在另八个机器上备份,在修补好的机械上回复

① 在此外通常的机器上备份

mysqldump –all-databases > /backup/mysql-all-backup-`date
+%F-%T`.sql

scp /backup/mysql-all-backup-2017-11-26-14\:03\:19.sql
@192.168.30.107:

 

② 在修补的机器上修复

mysql -uroot -p < mysql-all-backup-2017-11-26-14\:03\:19.sql

 

(3)把修复的机器作为新主的从

① 在新主上查询二进制日志和地方号

MariaDB [(none)]> show master status;

澳门金沙国际 118

② 在新修复的机器上,设为从,运转线程

MariaDB [(none)]> change master to master_host='192.168.30.7',
master_user='slave',
master_password='along',
master_log_file='mysql-bin.000003',
master_log_pos=245;
MariaDB [(none)]> start slave;

③ 在新主上海重机厂新授权

revoke delete on *.* from 'mhaadm'@'192.168.30.%';
revoke delete on *.* from 'slave'@'192.168.30.%';
grant replication slave,replication client on *.* to slave@'192.168.30.%' identified by 'along';
grant all on *.* to 'mhaadm'@'192.168.30.%' identified by 'along';

 

(4) 新节点提供后再也实施行检查查操作

masterha_check_status -conf=/etc/mha_master/app.cnf
masterha_check_repl -conf=/etc/mha_master/app.cnf
检查无误,再次运行,这次要记录日志
masterha_manager -conf=/etc/mha_master/app.cnf >/etc/mha_master/manager.log 2>&1 &

 

八 、新节点上线,故障转换苏醒注意事项

(1)
在生产条件中,当您的主节点挂了后,一定要在从节点上做一个备份,拿着备份文件把主节点手动升高为从节点,并指明从哪二个日志文件的岗位上马复制

(2) 每叁次机关实现更换后,每2遍的(replication health ) 检查和测试不ok
始终都以开发银行不了
不可能不手动修复主节点,除非你改配置文件

(3) 手动修复主节点提高为从节点后,再次运营检查和测试命令

masterha_check_repl –conf=/etc/mha_master/app.cnf

(4) 再度运维起来就复苏成功了

masterha_manager –conf=/etc/mha_master/app.cnf

 

4. 备库做以下操作

⑦ 、提供新的从节点以修复复制集群

原来 master 节点故障后,供给再次准备好叁个新的 MySQL
节点
。基于来自于master 节点的备份复苏数据后,将其布局为新的 master
的从节点即可。注意,新进入的节点假设为增加产量节点,其 IP 地址要布局为本来
master 节点的 IP
,不然,还要求修改 app.cnf 中相应的 ip
地址。随后再一次运转 manager ,相提并论新检查和测试其场馆。

而外扩大新的mysql 节点,也可以将坏掉主mysql
修复,再将其看作从参加集群中。由于机械有限,笔者就用修复好的主作为从,修复复制集群。

(1)修复主mysql

yum -y remove mariadb-server

yum -y install mariadb-server

 

(2)在另八个机器上备份,在修补好的机器上过来

① 在别的平常的机械上备份

mysqldump –all-databases > /backup/mysql-all-backup-`date
+%F-%T`.sql

scp /backup/mysql-all-backup-2017-11-26-14\:03\:19.sql
@192.168.30.107:

 

② 在修补的机械上修复

mysql -uroot -p < mysql-all-backup-2017-11-26-14\:03\:19.sql

 

(3)把修复的机械作为新主的从

① 在新主上查询二进制日志和职位号

MariaDB [(none)]> show master status;

澳门金沙国际 119

② 在新修复的机械上,设为从,运营线程

MariaDB [(none)]> change master to master_host='192.168.30.7',
master_user='slave',
master_password='along',
master_log_file='mysql-bin.000003',
master_log_pos=245;
MariaDB [(none)]> start slave;

③ 在新主上海重机厂新授权

revoke delete on *.* from 'mhaadm'@'192.168.30.%';
revoke delete on *.* from 'slave'@'192.168.30.%';
grant replication slave,replication client on *.* to slave@'192.168.30.%' identified by 'along';
grant all on *.* to 'mhaadm'@'192.168.30.%' identified by 'along';

 

(4) 新节点提供后再也实施检查操作

masterha_check_status -conf=/etc/mha_master/app.cnf
masterha_check_repl -conf=/etc/mha_master/app.cnf
检查无误,再次运行,这次要记录日志
masterha_manager -conf=/etc/mha_master/app.cnf >/etc/mha_master/manager.log 2>&1 &

 

  4.1 启用中继日志

8、新节点上线,故障转换苏醒注意事项

(1)
在生养环境中,当你的主节点挂了后,一定要在从节点上做3个备份,拿着备份文件把主节点手动提高为从节点,并指明从哪3个日记文件的任务上马复制

(2) 每贰遍机关完毕更换后,每二回的(replication health ) 检查和测试不ok
始终都是开发银行不了
必须手动修复主节点,除非您改配置文件

(3) 手动修复主节点进步为从节点后,再次运行物检疫查和测试命令

masterha_check_repl –conf=/etc/mha_master/app.cnf

(4) 再度运维起来就过来成功了

masterha_manager –conf=/etc/mha_master/app.cnf

 

$ grep "relay-log" /etc/my.cnf
relay-log = /usr/local/mysql/arch/relay-bin
relay-log-index  = /usr/local/mysql/arch/relay-log-index

  4.2 分选七个唯一的server-id**

$ grep "server-id" /etc/my.cnf
server-id  = 2

 4.3 创建具有复制权限的用户(可选,switchover为主库的时候必要)**

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

** 4.4 从服务器开启二进制日志(可选,做级联复制的时候供给)


$ grep "log-bin" /etc/my.cnf
log-bin=/usr/local/mysql/arch/mysql-bin

**  4.5
从服务器更新操作记入二进制日志(可选,做级联复制的时候供给)**

$ grep "log-slave-updates" /etc/my.cnf
log-slave-updates = true

  4.6 锁定从服务器为只读(可选,安全起见,备库设为只读)

$ grep "read-only" /etc/my.cnf
read-only = 1

5. 查看主库当前binary log和postion

mysql> show master status\G
*************************** 1. row ***************************
             File: mysql-bin.000004
         Position: 397
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

6. 在从库连接主库

mysql> CHANGE MASTER TO MASTER_HOST='ec2t-pgtest-01',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=397;
Query OK, 0 rows affected, 2 warnings (0.07 sec)

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: ec2t-pgtest-01
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 120
               Relay_Log_File: relay-bin.000004
                Relay_Log_Pos: 283
        Relay_Master_Log_File: mysql-bin.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 120
              Relay_Log_Space: 613
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
                  Master_UUID: 342fbbf4-6896-11e7-822f-0ad588ebcbcc
             Master_Info_File: /data/01/local/mysql/data/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
1 row in set (0.00 sec)

 

 
注意:如果那时主库已经运转一段时间,并且有大气数额存在,须要动用mysqldump命令将主库导出(要钦命记录导出时的二进制文件和position)。然后把导出来的数码再一次导入进从服务器,此时,再去连接主服务器就供给钦点从主服务器的哪位二进制文件和position伊始复制数据了。而怎么驾驭从哪些二进制文件和position开端复制数据吧?便是从mysqldump导出数据文件中记录了导出数据时的二进制文件和position,能够试用一下指令将主库导出

$ mysqldump -u root -pmypna123 --flush-privileges --single-transaction --master-data=2 --all-databases > all_database.sql

7. 在主库查看从库音讯

mysql> show slave hosts;
+-----------+------+------+-----------+--------------------------------------+
| Server_id | Host | Port | Master_id | Slave_UUID                           |
+-----------+------+------+-----------+--------------------------------------+
|         2 |      | 3306 |         1 | b88d1498-68f5-11e7-849e-0a0ce639fa30 |
+-----------+------+------+-----------+--------------------------------------+
1 row in set (0.00 sec)

 二. MySQL主从半同步复制布署

 半同步机制

a. 当Master上打开半齐声复制的功力时,至少应当有三个Slave开启其功效。此时,贰个线程在Master上交给业务将遭遇阻塞,直到得知三个已打开半同台复制作用的Slave已收到此事情的具有事件,或等候超时。

b. 当Slave主机连接到Master时,能够查阅其是不是处于半联合实行复制的建制。

c. 当二个作业的轩然大波都已写入其relay-log中且已刷新到磁盘上,Slave才会告知已选用。

d.  借使等待超时,也正是Master没被报告已吸收接纳,此时Master会自动转换为异步复制的编写制定。当至少一个半一块的Slave赶上了,Master与其Slave自动转换为半联手复制的建制。

e.  半同步复制的效果要在Master,Slave都张开,半多头复制才会起效果;否则,只开启一边,它依然为异步复制。

1. 在主库安装半联手插件

  1.1 查看主库未开启半同步时的气象

mysql> show status like '%semi%';
Empty set (0.00 sec)

mysql> show variables like '%semi%';
Empty set (0.00 sec)

mysql> show plugins;
+----------------------------+----------+--------------------+---------+---------+
| Name                       | Status   | Type               | Library | License |
+----------------------------+----------+--------------------+---------+---------+
| binlog                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| mysql_old_password         | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| sha256_password            | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| MRG_MYISAM                 | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| MyISAM                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| MEMORY                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| CSV                        | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| InnoDB                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| INNODB_TRX                 | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_LOCKS               | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_LOCK_WAITS          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP                 | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMPMEM              | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMPMEM_RESET        | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP_PER_INDEX       | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP_PER_INDEX_RESET | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_BUFFER_PAGE         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_BUFFER_PAGE_LRU     | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_BUFFER_POOL_STATS   | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_METRICS             | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_DEFAULT_STOPWORD | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_DELETED          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_BEING_DELETED    | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_CONFIG           | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_INDEX_CACHE      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_INDEX_TABLE      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_TABLES          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_TABLESTATS      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_INDEXES         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_COLUMNS         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_FIELDS          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_FOREIGN         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_FOREIGN_COLS    | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_TABLESPACES     | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_DATAFILES       | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| PERFORMANCE_SCHEMA         | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| BLACKHOLE                  | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| FEDERATED                  | DISABLED | STORAGE ENGINE     | NULL    | GPL     |
| ARCHIVE                    | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| partition                  | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
+----------------------------+----------+--------------------+---------+---------+

  1.2 查看主库的半协助举行插件

$ ls -lh /usr/local/mysql/lib/plugin/semisync_master.so 
-rwxr-x--- 1 mysqladmin dba 408K Jan 19  2015 /usr/local/mysql/lib/plugin/semisync_master.so

  1.3 安装主库的半协同插件

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 = 5000;
Query OK, 0 rows affected (0.00 sec)

 
安装后开发银行和定制核心连接错误的超时时间暗中认可是10s可改为5s,一旦有二回超时自动降级为异步。(以上内容要想永远有效必要写到配置文件中)

$ grep rpl_semi_sync /etc/my.cnf 
rpl_semi_sync_master_enabled = 1;
rpl_semi_sync_master_timeout = 2000;

  1.4 查看主库安装好半一块插件的景观

mysql> show status like '%semi%';
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 0     |
| 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     |
+--------------------------------------------+-------+
14 rows in set (0.00 sec)

mysql> show variables like '%semi%';
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled       | ON    |
| rpl_semi_sync_master_timeout       | 10000 |
| rpl_semi_sync_master_trace_level   | 32    |
| rpl_semi_sync_master_wait_no_slave | ON    |
+------------------------------------+-------+
4 rows in set (0.02 sec)

mysql> show plugins;
+----------------------------+----------+--------------------+--------------------+---------+
| Name                       | Status   | Type               | Library            | License |
+----------------------------+----------+--------------------+--------------------+---------+
| binlog                     | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL               | GPL     |
| mysql_old_password         | ACTIVE   | AUTHENTICATION     | NULL               | GPL     |
| sha256_password            | ACTIVE   | AUTHENTICATION     | NULL               | GPL     |
| MRG_MYISAM                 | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| MyISAM                     | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| MEMORY                     | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| CSV                        | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| InnoDB                     | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| INNODB_TRX                 | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_LOCKS               | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_LOCK_WAITS          | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_CMP                 | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_CMP_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_CMPMEM              | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_CMPMEM_RESET        | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_CMP_PER_INDEX       | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_CMP_PER_INDEX_RESET | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_BUFFER_PAGE         | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_BUFFER_PAGE_LRU     | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_BUFFER_POOL_STATS   | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_METRICS             | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_FT_DEFAULT_STOPWORD | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_FT_DELETED          | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_FT_BEING_DELETED    | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_FT_CONFIG           | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_FT_INDEX_CACHE      | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_FT_INDEX_TABLE      | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_SYS_TABLES          | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_SYS_TABLESTATS      | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_SYS_INDEXES         | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_SYS_COLUMNS         | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_SYS_FIELDS          | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_SYS_FOREIGN         | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_SYS_FOREIGN_COLS    | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_SYS_TABLESPACES     | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_SYS_DATAFILES       | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| PERFORMANCE_SCHEMA         | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| BLACKHOLE                  | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| FEDERATED                  | DISABLED | STORAGE ENGINE     | NULL               | GPL     |
| ARCHIVE                    | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| partition                  | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| rpl_semi_sync_master       | ACTIVE   | REPLICATION        | semisync_master.so | GPL     |
+----------------------------+----------+--------------------+--------------------+---------+

2. 在从库安装半手拉手插件

  2.1 查看从库未开启半同步时的情事

mysql> show status like '%semi%';
Empty set (0.00 sec)

mysql> show variables like '%semi%';
Empty set (0.00 sec)

mysql> show plugins;
+----------------------------+----------+--------------------+---------+---------+
| Name                       | Status   | Type               | Library | License |
+----------------------------+----------+--------------------+---------+---------+
| binlog                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| mysql_old_password         | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| sha256_password            | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| MRG_MYISAM                 | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| MyISAM                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| MEMORY                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| CSV                        | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| InnoDB                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| INNODB_TRX                 | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_LOCKS               | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_LOCK_WAITS          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP                 | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMPMEM              | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMPMEM_RESET        | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP_PER_INDEX       | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP_PER_INDEX_RESET | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_BUFFER_PAGE         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_BUFFER_PAGE_LRU     | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_BUFFER_POOL_STATS   | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_METRICS             | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_DEFAULT_STOPWORD | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_DELETED          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_BEING_DELETED    | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_CONFIG           | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_INDEX_CACHE      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_INDEX_TABLE      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_TABLES          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_TABLESTATS      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_INDEXES         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_COLUMNS         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_FIELDS          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_FOREIGN         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_FOREIGN_COLS    | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_TABLESPACES     | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_DATAFILES       | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| PERFORMANCE_SCHEMA         | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| BLACKHOLE                  | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| FEDERATED                  | DISABLED | STORAGE ENGINE     | NULL    | GPL     |
| ARCHIVE                    | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| partition                  | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
+----------------------------+----------+--------------------+---------+---------+

  2.2 查看从库的半共同插件

$ ls -lh /usr/local/mysql/lib/plugin/semisync_slave.so
-rwxr-x--- 1 mysqladmin dba 245K Jan 19  2015 /usr/local/mysql/lib/plugin/semisync_slave.so

  2.3 安装从库的半一同插件

mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
Query OK, 0 rows affected (0.02 sec)

mysql> set global rpl_semi_sync_slave_enabled = 1;
Query OK, 0 rows affected (0.00 sec)

  2.4 查看从库安装好半2头插件的动静**

mysql> show status like '%semi%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | OFF   |
+----------------------------+-------+
1 row in set (0.00 sec)

mysql> show variables like '%semi%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled     | ON    |
| rpl_semi_sync_slave_trace_level | 32    |
+---------------------------------+-------+
2 rows in set (0.02 sec)

mysql> show plugins;
+----------------------------+----------+--------------------+-------------------+---------+
| Name                       | Status   | Type               | Library           | License |
+----------------------------+----------+--------------------+-------------------+---------+
| binlog                     | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL              | GPL     |
| mysql_old_password         | ACTIVE   | AUTHENTICATION     | NULL              | GPL     |
| sha256_password            | ACTIVE   | AUTHENTICATION     | NULL              | GPL     |
| MRG_MYISAM                 | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| MyISAM                     | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| MEMORY                     | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| CSV                        | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| InnoDB                     | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| INNODB_TRX                 | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_LOCKS               | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_LOCK_WAITS          | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CMP                 | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CMP_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CMPMEM              | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CMPMEM_RESET        | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CMP_PER_INDEX       | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CMP_PER_INDEX_RESET | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_BUFFER_PAGE         | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_BUFFER_PAGE_LRU     | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_BUFFER_POOL_STATS   | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_METRICS             | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_FT_DEFAULT_STOPWORD | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_FT_DELETED          | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_FT_BEING_DELETED    | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_FT_CONFIG           | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_FT_INDEX_CACHE      | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_FT_INDEX_TABLE      | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_SYS_TABLES          | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_SYS_TABLESTATS      | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_SYS_INDEXES         | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_SYS_COLUMNS         | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_SYS_FIELDS          | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_SYS_FOREIGN         | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_SYS_FOREIGN_COLS    | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_SYS_TABLESPACES     | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_SYS_DATAFILES       | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| PERFORMANCE_SCHEMA         | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| BLACKHOLE                  | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| FEDERATED                  | DISABLED | STORAGE ENGINE     | NULL              | GPL     |
| ARCHIVE                    | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| partition                  | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| rpl_semi_sync_slave        | ACTIVE   | REPLICATION        | semisync_slave.so | GPL     |
+----------------------------+----------+--------------------+-------------------+---------+

**2.5 重启slave复制线程**

mysql> stop slave;
Query OK, 0 rows affected (0.06 sec)

mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

**2.6 再一次翻开半联合举行状态


mysql> show status like '%semi%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON    |
+----------------------------+-------+

2.7 将半同步铺排写到配置文件

$ grep rpl_semi_sync /etc/my.cnf
rpl_semi_sync_slave_enabled=1

相关文章