Mysql实现企业级数据库主从复制架构实战,主从复
分类:pc28.am神测网

时下条件设计

图片 1

前言

前篇说了作为运营在数据库块最起码要会两大本领,先天以来讲第二能力--主从复制

趁着专门的学业的增高,意气风发台数据库服务器以知足不断必要了,负载过重,这时就供给减低压力,完成负载均衡读写分离,豆蔻梢头主风流罗曼蒂克从或少年老成主多从

主服务器只管写,从服务器管读,进而升高效能缓慢解决压力。

主从复制分类:

主干同步:当顾客写数据主服务器必得和从服务器同步后生可畏致了才告知顾客写入成功,等待时间太长

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

基本半步同步:当客商访问写数据主服务器写入并联合当中七个从服务器就再次回到给客商成功

备考:经常都是运用的为主异步,依据条件供给来抉择,想要数据更安全选拔半步同步

长机名称 

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

主从复制注意事项

注意:selinux策略、防火墙

1、开启二进制日志

log_bin

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

3、设置唯蓬蓬勃勃server-id

server_id=#

4、设置datadir中国和日本记名称(可选)

log-basename=master

5、创制有复制权限的客户账号

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

6、如若要启用级联复制,需求在从服务器启用

log_bin
log_slave_updates

7、节制从服务器为只读

read_only=ON

8、幸免主机名剖判

skip_name_resolve = on

9、高可用从服务器要增添

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到磁盘

ec2t-pgtest-01

  景况背景:同盟社层面已经产生,客户数量已成为公司的大旨命脉,一遍老王一非常的大心把数据库文件删除,通过mysqldump备份计谋復苏用了几个时辰,在此两钟头中,公司业务暂停,损失100万,老王做出深切检查,公司也就此对此数据库的属性和可信赖性提议更加高必要。

主从复制原理

如图

图片 2

备注:

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

ec2t-pgtest-02

渴求对数据库实行改建,使其承载力进行进级换代,故障修复时间减弱,有未有能完结的方案吧?

实战-完成主从复制 高可用

IP地址

Mysql完结数据库主从复制实战结构及其规律

计划干活

希图4台主机67、17、37、57,分别出任角色为治本主机、主服务器、2个从服务器

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

mha4mysql-manager

mha4mysql-node

比方主服务器已经运营了1年了,发现知足不断要求了,须求搭建从服务器,大家先从搭建从服务器初步

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

断定二进制文件已运营

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

确认server-id

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

10.189.102.118

1、实验布局及其规律

数据库高可用构造分为

主干:意气风发主后生可畏从,生龙活虎主多从,少年老成主从从

双主

图片 3

图片 4

主服务器设置

1、创立可用以复制的账号

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

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

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

备注:备份时的某表的情形

图片 5

为了上边包车型地铁尝试测验在这里地大家备份玩再扩展一条记下

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

图片 6

3、传送到从服务器37、57上

scp…

10.189.100.195

2、进程解析

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

① 三个写的乞请,先写到redo事务日志中,

② mysql的进度读事务日志,作业日志的剧情做到数据库内部存款和储蓄器中;那时得以过来顾客端,数据为脏数据

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

二进制日志再写磁盘中写;优化战术,变随机写为种种写

(2)从数据库的操作:

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

SQL thread线程:把relay log剧情拉出去,写到数据库内存

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

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

 

37、57(从)服务器设置

角色

3、主从的优势

贰个master 写入,多少个slave同一时间读出;大大提升了读的频率

具体中,相当多皆以读的号召大,写的伸手相对小的多,如电子商务网址,大多都以公众去拜访,下单的相当少;所以基本的涉嫌曾经能很好的拉长品质了

 

1、配置文件
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%'"

master      

4、实验前筹算

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

② 拿两台服务器都使用yum 方式安装Mysql 服务,须要版本同样

③ 分别运维两台服务器mysql

 

2、达成复制

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

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

图片 7

2)依据气象编辑上海体育场地上的音信

注:初步地点能够在完全备份文件里查看

三种方法:

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

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

下边用第三种方法来操作如图

图片 8

3)37主机还原并查看

mysql < all-2018-08-08.sql

图片 9

备注:以回复到备份时的处境

           主服务器备份完有客商新加数码对啊,下边开启主从复制看看能还是不能复制过来最新的数据

4)查看复制状态

MariaDB [(none)]> show slave statusG
*************************** 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 statusG
*************************** 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)查看表确认有没有从主服务器同步最新的数量

图片 10

7)57(从服务器相符的安装)

备考:方今实际了异步同步复制,下边来看半合伙设置

slave    

实战意气风发:Mysql达成数据库简单大器晚成主多从复制实战

图片 11

半联手设置

系统版本  

1、意况准备

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

从数据库

中继日志

 

主服务器设置

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

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

备注:

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

UNINSTALL PLUGIN rpl_semi_sync_master;##卸载插件

2、查看插件状态

SHOW GLOBAL VARIABLES LIKE '%semi%';

图片 12

3、开启

set global rpl_semi_sync_master_enabled=on;

备考:最佳写在安顿文件中

图片 13

4、查看插件变量状态

SHOW GLOBAL STATUS LIKE '%semi%';

图片 14

备注:这里记录有多少个半联合主机

CentOS release 6.8

2、在主master 主服务器上

① vim /etc/my.cnf 修正mysql主配置文件,对master进行配备,包涵张开二进制日志,内定唯生机勃勃的servr ID

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

图片 15

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,查看主服务器二进制日志状态,地方号

图片 16

 

从服务器设置

1、安装插件

INSTALL PLUGIN rpl_semi_sync_slave SONAME  'semisync_slave.so';

2、运营插件

set global rpl_semi_sync_slave_enabled=on;

备考:近似提出写在构造文件中

图片 17

3、从服务器查看改插件是还是不是发轫工作

SHOW GLOBAL STATUS LIKE '%semi%';

图片 18

为啥平昔不起来专门的学问?

因为是先展开的主从复制再安装的次插件

于是这种景况下,先甘休从服务器的主从复制功效

1)停止:

stop slave;

2)再度开启主从复制

start slave;

3)再去查看

图片 19

备考:现在就启用了半联合签名成效,上面开端搭建高可用,完毕主服务器宕机自动进级从服务器当主

数码版本  

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  #使得更新的数据写进二进制日志中

图片 20

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 STATUSG查看从服务器状态,如下所示,也可用show processlist G查看当前复制状态:

Slave_IO_Running: Yes #IO线程平常运作

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

图片 21

 

MHA高性能

备注:四台主机之间必得是ssh基于key验证登入,所以要先达成ssh相互链接

步骤:

ssh-keygen

cd .ssh

ssh-copy-id 192.168.43.67

把.ssh目录考到其余主机

1、在主服务器上制造管理者账号

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

2、在67管理主机上设置以下包

mha4mysql-manager 
mha4mysql-node

3、在17、37、57安装如下包

mha4mysql-node

4、在拘押主机成立管理节点

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

2、检查复制

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

3、运营(默许前台实行卡塔尔

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

图片 22

备考:倘令你是编写翻译安装在/etc/mastermha/app1.cnf配置文件中指定日志路线,最佳中央服务器数据库设置的岗位都是均等的。

图片 23

MySQL 5.6.23

4、测试

① 在主上创造一个along库

图片 24

② 从上自动生成along数据库

图片 25

 

生机勃勃. MySQL数据库安装

5、若要继续累积新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;

图片 26

(2)在从slave-mysql2上

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

图片 27

② 进行master的全然备份恢复生机

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

systemctl start mariadb 开启服务

出山小草完后,数据直接与主完全风度翩翩致

图片 28

开发银行从服务器复制线程

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;

图片 29

 

1. 创办MySQL顾客和组

6、测量试验三台机械的生龙活虎主多从涉嫌

① 在master 上创建home数据库

图片 30

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

图片 31

 

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

7、灭绝主从关系,恢复生机单身的服务器

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

图片 32

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

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

③ systemctl restart mariadb 重启服务

2. 构造MySQL客商情形变量

实战二:达成主题从布局及复制过滤器

图片 33

结构原理:二个主master,二个从slave1;从slave1再做主,另多个slave2以他为主做从;大要做法与上试验相通

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

有二种达成思路:

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

1、情况构思

机器名称

IP配置

服务角色

备注

master-mysql

192.168.30.107

主数据库

二进制日志

slave-mysql1

192.168.30.7

从数据库

中继日志

slave-mysql2

192.168.30.2

从数据库

中继日志

3. 下载MySQL二进制包并安装

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数据库的二进制文件

图片 34

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,查看主服务器二进制日志状态,地方号

图片 35

 

$ 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  #使得更新的数据写进二进制日志中

图片 36

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 STATUSG查看从服务器状态,如下所示,也可用show processlist G查看当前复制状态:

Slave_IO_Running: Yes #IO线程符合规律运作

Slave_SQL_Running: Yes #SQL线程常常运营

图片 37

 

4. 计划MySQL数据库(主备操作卡塔尔(英语:State of Qatar)

4、测验大旨和复制过滤

(1)测量试验主从涉嫌

在主上创立多少个along、home库;从上自动生成along、home数据库

图片 38

(2)测试复制过滤

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

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

图片 39

② 在主上:在home库中开创一个classes的表;从上并未有成形

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

图片 40

slave-mysql1 上,过滤成功

图片 41

 

  4.1 创设MySQL配置文件/etc/my.cnf

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

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

因为上边主配置文件已经开启了团结的二进制文件;且slave-mysql1 是从初阶就一头master的,所以授权命令也联合过了

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

图片 42

 

(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数据库

图片 43

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数据库

图片 44

 

# 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

6、测量检验主从从和slave-mysql2的复制过滤

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

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

图片 45

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

图片 46

 

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

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

图片 47

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

图片 48

 

  4.2 初始化MySQL数据库

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

图片 49

原理:双主就是相互互为宗旨

为了解决双主同期对三个数据库实行写入,接纳自拉长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

应用:只相符Mini公司,小并发访谈量,终归还要写入易出错

 

$ 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

1、景况希图

机器名称

IP配置

服务角色

备注

mysql1

192.168.30.107

数据库

中继日志、二进制日志

mysql2

192.168.30.7

数据库

中继日志、二进制日志

  4.3 运转MySQL数据库,并为root顾客安装密码,删除多余客商

2、配置分公司署文件,除了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开始

图片 50

systemctl start mariadb

 

$ /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)

3、相互设为对方的从

(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;   # 启动复制线程

  4.4 安装MySQL时区

4、测验双方互为宗旨的涉嫌

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

图片 51

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

图片 52

 

$ 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                                 |
 ----------------------------------------------------- 

5、设置自增进ID的表

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

图片 53

① 在mysql1上向表中插入数据

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

图片 54

② 在mysql2上向表中插入数据

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

图片 55

 

  4.5 设置MySQL服务相关

实施四:完结半黄金时代并复制的大器晚成主多从

  原理:介于异步复制和全同台复制之间,主库在实践完顾客端提交的事体后不是当下回到给顾客端,而是等候最少贰个从库选用到并写到relay log中才回到给顾客端。相对于异步复制,半一齐复制进步了多少的安全性,同有时间它也促成了迟早水准的延期,这些延迟起码是三个TCP/IP往返的时间。所以,半合伙复制最佳在低延时的网络中央银行使。

介意:本来是应当最少2个从mysql,手艺有实在的功能,不过原理都以平等的,作者就只用了一主生龙活虎从

# 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

1、情形思索

机器名称

IP配置

服务角色

备注

master-mysql

192.168.30.107

主数据库

二进制日志

slave-mysql

192.168.30.7

从数据库

中继日志

 二. MySQL主从复制陈设

2、根据实战生机勃勃,完成大旨

图片 56

 

1. 朝气蓬勃并主备库时间,可在主库搭建NTP SELacrosseVE昂Cora,备库作为NTP client

3、加载模块,完成半齐声

(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;   开启

图片 57

 

(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;

图片 58

 

2. 增多hosts文件剖析确定保证主备能够相互解析host主机名

4、查询日志,验证

cd /var/log/mariadb/

tail mariadb.log

图片 59

注释:

① 用于工作的半联机复制。

② 在主服务器上启用了半协作复制。

③ 运营半一同的binlog 转储到slave (id:2卡塔尔(英语:State of Qatar)上

④ 甘休异步的二进制文件转储

 

3. 主库做以下操作

尝试五:完毕MHA 高可用mysql数据库结构

原理:总的来讲正是当主master mysql宕机时,从slave mysql顶上去的一多姿多彩操作

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

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

③ 应用差距的联网日志(relay log卡塔尔(قطر‎ 到任何slave;

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

晋级叁个slave 为新master;

⑥ 使用别的的slave 连接新的master

 

架构图

图片 60

  3.1 启用二进制日志

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的管理节点

 

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

2、完结三台服务器的风华正茂主多从

注意点:

① 每一种节点都需开启二进制和联网日志,因为主会宕机,当主的机械修复实现,能够看做从延续运用,所以中继日志是必需的;从也会在主宕机的时候,顶为主,所以二进制日志也是必需的

② 各从节点必得出示启用其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 ;

图片 61

 

  3.2 选取叁个唯意气风发的server-id

3、配置MHA的准备

(1)MHA的安装

需安装2个包 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服务器都需要发送自己的公钥

图片 62

 

(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
$ grep "server-id" /etc/my.cnf 
server-id  = 1

4、开启服务此前的检验

小心:开启服务以前的检讨非常常有必不可缺,因为mha服务是治本mysql的,全体须要很严苛,借使检查通可是,开启服务时会有一批错误。历次运营服务从前都需检验条件。

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

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

  输出音信最后黄金年代行相通如下音讯,表示其通过检查实验。

  [info]All SSH connection tests passed successfully.

图片 63

② 检验和调查查管理理的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 了。

 

   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

图片 64

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

 

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)

6、测量检验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 进步为主节点。

图片 65

注意:故障转移实现后,manager 将会活动甘休,那时应用

masterha_check_status 命令检验将会遇上错误提醒,如下所示:

图片 66

 

4. 备库做以下操作

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

原来 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;

图片 67

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

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卡塔尔(قطر‎在生产条件中,当您的主节点挂了后,应当要在从节点上做五个备份,拿着备份文件把主节点手动提高为从节点,并指明从哪二个日志文件的职位上马复制

(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 从服务器开启二进制日志(可选,做级联复制的时候必要卡塔尔(英语:State of Qatar)


$ 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 statusG
*************************** 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 statusG
*************************** 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 翻看从库安装好半齐声插件的状态**

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

本文由pc28.am发布于pc28.am神测网,转载请注明出处:Mysql实现企业级数据库主从复制架构实战,主从复

上一篇:时间同步设置,NTP时间同步 下一篇:克隆虚拟机引起的,Linux系统修改网卡名称
猜你喜欢
热门排行
精彩图文
  • 时间同步设置,NTP时间同步
    时间同步设置,NTP时间同步
    非域环境下有外网连接情况的时间同步 打开组策略,Powershell键入命令:gpedit.msc 2.在计算机策略对话框中,打开如下路径:计算机配置/管理模板/系统/Win
  • 获取全部权windows目录全部权,Python常用文件操作
    获取全部权windows目录全部权,Python常用文件操作
    Takeown /r /f 盘符:目录目录 获取所有权windows目录所有权,获取所有权windows Takeown /r /f 盘符:目录目录 例如: Takeown /r /f C:WindowsCSC Takeown /r /f 盘符:目录目录例如
  • Spring Batch 简介
    Spring Batch 简介
    SpringBatch是一个轻量级的,完周到向Spring的批管理框架,能够利用于公司级多量的多寡管理类别。SpringBatch以POJO和大家熟谙的Spring框架为根底,使开拓者更
  • 多线程编程,linux服务器开拓二
    多线程编程,linux服务器开拓二
    前言 事前切磋了经过,精通三个进程能做一件业务,假如想同期处理多件工作,那么必要几个经过,然而经过间非常不便利的少数是,进度间的数据交流就
  • u盘打不开怎样修复,格式化提示有写保护
    u盘打不开怎样修复,格式化提示有写保护
    近期在实验室开掘师兄留下的U盘,插上计算机后打不开,弹出格式化分界面,格式化的时候又提醒该u盘“被写保养不能够格式化”,于是筹算动用量产的