澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:Mysql完毕公司级数据库主从

2019-08-31 作者:澳门新萄京官方网站   |   浏览(89)

当前条件设计

澳门新萄京官方网站 1

澳门新萄京官方网站 2

MySQL数据库本人提供的主从复制作用能够方便的兑现数量的多处自动备份,完结数据库的进展。多个数据备份不仅可以够升高数据的安全性,通过达成读写分离还是能够更进一竿进级数据库的负载品质。

前言

前篇说了作为运转在数据库块最起码要会两大技艺,后日的话说第二本事--主从复制

乘势业务的增长,一台数据库服务器以满意不断须要了,负载过重,那时候就要求减负,实现负载均衡读写分离,一主一从或一主多从

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

主从复制分类:

主干同步:当客户写数据主服务器必得和从服务器同步一致了才告诉客户写入成功,等待时间太长

着力异步:只要客户访谈写数据主服务器写入立马回到给客户成功

骨干半步同步:当客户访谈写数据主服务器写入并伙同在那之中三个从服务器就回去给顾客成功

备注:日常都以选取的主干异步,根据情状供给来摘取,想要数据更安全采取半步同步

长机名称 

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

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万,老王做出深远检查,公司也因此对于数据库的习性和可相信性提议越来越高须求。

  境遇背景:供销合作社规模已经形成,顾客数据已化作公司的主题命脉,二次老王一比十分大心把数据库文件删除,通过mysqldump备份攻略苏醒用了八个时辰,在这两小时中,企务暂停,损失100万,老王做出深切检讨,企业也由此对于数据库的性质和可信性建议越来越高要求。

澳门新萄京官方网站 3

主从复制原理

如图

澳门新萄京官方网站 4

备注:

着力同步有延期,为啥?因为它时是单线程传送日志

ec2t-pgtest-02

务求对数据库进行改换,使其承载力举行进步,故障修复时间减弱,有未有能兑现的方案吧?

务求对数据库实行改建,使其承载力实行进步,故障修复时间减弱,有未有能落实的方案吧?

在一主多从的数据库连串中,八个从服务器接纳异步的艺术创新主数据库的调换,业务服务器在实行写也许有关修改数据库的操作是在主服务器上进展的,读操作则是在各从服务器上进行。如若布署了多少个从服务器只怕多少个主服务器又关联到对应的负载均衡难题,关于负载均衡具体的本领细节还从来不商讨过,今日就先简单的达成一主一从的主从复制功能。

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

IP地址

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

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

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、实验架构及其规律

数据库高可用架构分为

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

双主

澳门新萄京官方网站 5

澳门新萄京官方网站 6

1、实验框架结构及其规律

数据库高可用架构分为

宗旨:一主一从,一主多从,一主从从

双主

澳门新萄京官方网站 7

澳门新萄京官方网站 8

澳门新萄京官方网站 9

主服务器设置

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

备考:备份时的某表的景况

澳门新萄京官方网站 10

为了上面包车型客车实验测量检验在那边大家备份玩再充实一条记下

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

澳门新萄京官方网站 11

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

scp…

10.189.100.195

2、过程剖判

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

① 一个写的央求,先写到redo事务日志中,

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

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

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

(2)从数据库的操作:

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

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

⑦ 从数据库也得以把实践的操作记录到协调的二进制文件中,非必须

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

 

2、进程解析

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

① 多个写的央求,先写到redo事务日志中,

② mysql的长河读事务日志,事务日志的剧情做到数据库内部存款和储蓄器中;此时得以还原顾客端,数据为脏数据

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

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

(2)从数据库的操作:

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

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

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

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

 

MySQL之间数据复制的根基是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中装有操作都会以“事件”的法子记录在二进制日志中,别的数据库作为slave通过五个I/O线程与主服务器保持通讯,并监控master的二进制日志文件的调换,要是发掘master二进制日志文件发生变化,则会把调换复制到本身的交接日志中,然后slave的二个SQL线程会把相关的“事件”施行到温馨的数据库中,以此实现从数据库和主数据库的一致性,也就落到实处了主从复制。

37、57(从)服务器设置

角色

3、主从的优势

一个master 写入,多个slave同不常候读出;大大提升了读的效用

具体中,非常多都以读的伸手大,写的诉求相对小的多,如电商网站,好些个都是人人去做客,下单的很少;所以基本的涉及一度能很好的进步品质了

 

3、主从的优势

多个master 写入,多个slave同偶然间读出;大大提升了读的功能

具体中,比非常多都以读的伸手大,写的伸手相对小的多,如电商网址,许多都以民众去拜访,下单的相当少;所以基本的关系一度能很好的进步质量了

 

完毕MySQL主从复制要求举行的配置:

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

 

4、实验前希图

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

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

③ 分别运营两台服务器mysql

 

主服务器:

2、实现复制

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

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

澳门新萄京官方网站 12

2)依据事态编辑上图上的消息

注:起先地方能够在一起备份文件里查看

三种方法:

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

② 直接把地点的新闻增添到完全备份文件里

下边用第三种艺术来操作如图

澳门新萄京官方网站 13

3)37主机还原并查阅

mysql < all-2018-08-08.sql

澳门新萄京官方网站 14

备考:以苏醒到备份时的意况

           主服务器备份完有客户新增加少对吧,上边开启主从复制看看能或无法复制过来最新的数据

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)查看表确认有未有从主服务器同步最新的数量

澳门新萄京官方网站 15

7)57(从服务器一样的装置)

备注:最近现实了异步同步复制,上面来看半齐声设置

slave    

实战一:Mysql完成数据水库蓄水体积易一主多从复制实战

澳门新萄京官方网站 16

实战一:Mysql完成数据库轻易一主多从复制实战

澳门新萄京官方网站 17

  • 敞开二进制日志
  • 配置独一的server-id
  • 收获master二进制日志文件名及地方
  • 成立一个用来slave和master通讯的客商账号

半联合实行设置

系统版本  

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、遇到策动

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%';

澳门新萄京官方网站 18

3、开启

set global rpl_semi_sync_master_enabled=on;

备考:最好写在布置文件中

澳门新萄京官方网站 19

4、查看插件变量状态

SHOW GLOBAL STATUS LIKE '%semi%';

澳门新萄京官方网站 20

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

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   #关闭名称解析,(非必须)

澳门新萄京官方网站 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

 

2、在主master 主服务器上

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

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

澳门新萄京官方网站 23

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

澳门新萄京官方网站 24

 

  • 安插独一的server-id

从服务器设置

1、安装插件

INSTALL PLUGIN rpl_semi_sync_slave SONAME  'semisync_slave.so';

2、运行插件

set global rpl_semi_sync_slave_enabled=on;

备注:同样建议写在陈设文件中

澳门新萄京官方网站 25

3、从服务器查看改插件是还是不是上马专门的工作

SHOW GLOBAL STATUS LIKE '%semi%';

澳门新萄京官方网站 26

干什么一贯不起来职业?

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

所以这种景观下,先结束从服务器的主从复制成效

1)停止:

stop slave;

2)再度开启主从复制

start slave;

3)再去查看

澳门新萄京官方网站 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 STATUSG查看从服务器状态,如下所示,也可用show processlist G查看当前复制状态:

Slave_IO_Running: Yes #IO线程平常运营

Slave_SQL_Running: Yes #SQL线程正常运行

澳门新萄京官方网站 29

 

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

澳门新萄京官方网站 30

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线程通常运作

澳门新萄京官方网站 31

 

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

澳门新萄京官方网站 32

备考:假若你是编译安装在/etc/mastermha/app1.cnf计划文件中钦点日志路线,最棒中央服务器数据库设置的地方都以相同的。

澳门新萄京官方网站 33

MySQL 5.6.23

4、测试

① 在主上创造一个along库

澳门新萄京官方网站 34

② 从上自动生成along数据库

澳门新萄京官方网站 35

 

4、测试

① 在主上创造八个along库

澳门新萄京官方网站 36

② 从上自动生成along数据库

澳门新萄京官方网站 37

 

  • 运用master分配的顾客账号读取master二进制日志
  • 启用slave服务

一. 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;

澳门新萄京官方网站 38

(2)在从slave-mysql2上

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

澳门新萄京官方网站 39

② 进行master的一同备份恢复

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

systemctl start mariadb 开启服务

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

澳门新萄京官方网站 40

开始从服务器复制线程

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;

澳门新萄京官方网站 41

 

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;

澳门新萄京官方网站 42

(2)在从slave-mysql2上

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

澳门新萄京官方网站 43

② 进行master的完全备份复苏

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

systemctl start mariadb 开启服务

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

澳门新萄京官方网站 44

伊始从服务器复制线程

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;

澳门新萄京官方网站 45

 

切切实实落到实处过程如下:

1. 创制MySQL顾客和组

6、测量试验三台机械的一主多从涉嫌

① 在master 上创建home数据库

澳门新萄京官方网站 46

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

澳门新萄京官方网站 47

 

6、测量检验三台机械的一主多从涉嫌

① 在master 上创建home数据库

澳门新萄京官方网站 48

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

澳门新萄京官方网站 49

 

一、希图工作:

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

7、解除主从关系,复苏单身的服务器

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

澳门新萄京官方网站 50

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

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

③ systemctl restart mariadb 重启服务

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

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

澳门新萄京官方网站 51

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

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

③ systemctl restart mariadb 重启服务

1.主从数据库版本最棒同一

2. 安顿MySQL客户意况变量

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

澳门新萄京官方网站 52

框架结构原理:贰个主master,二个从slave1;从slave1再做主,另贰个slave2以他为主做从;概况做法与上实验相似

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

有两种达成思路:

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

实战二:完成大旨从架构及复制过滤器

澳门新萄京官方网站 53

架构原理:三个主master,三个从slave1;从slave1再做主,另贰个slave2以她为主做从;大意做法与上尝试相似

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

有二种完成思路:

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

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

1、情形图谋

机器名称

IP配置

服务角色

备注

master-mysql

192.168.30.107

主数据库

二进制日志

slave-mysql1

192.168.30.7

从数据库

中继日志

slave-mysql2

192.168.30.2

从数据库

中继日志

1、情况策画

机器名称

IP配置

服务角色

备注

master-mysql

192.168.30.107

主数据库

二进制日志

slave-mysql1

192.168.30.7

从数据库

中继日志

slave-mysql2

192.168.30.2

从数据库

中继日志

主数据库:182.92.172.80 /linux

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

澳门新萄京官方网站 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

 

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

澳门新萄京官方网站 56

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

澳门新萄京官方网站 57

 

从数据库:123.57.44.85 /linux

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

Slave_IO_Running: Yes #IO线程平常运作

Slave_SQL_Running: Yes #SQL线程寻常运维

澳门新萄京官方网站 59

 

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

澳门新萄京官方网站 60

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线程符合规律运作

澳门新萄京官方网站 61

 

二、主数据库master修改:

4. 计划MySQL数据库(主备操作)

4、测验大旨和复制过滤

(1)测量检验主从涉嫌

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

澳门新萄京官方网站 62

(2)测试复制过滤

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

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

澳门新萄京官方网站 63

② 在主上:在home库中开创多个classes的表;从上未曾调换

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

澳门新萄京官方网站 64

slave-mysql1 上,过滤成功

澳门新萄京官方网站 65

 

4、测量试验核心和复制过滤

(1)测验主从涉嫌

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

澳门新萄京官方网站 66

(2)测试复制过滤

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

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

澳门新萄京官方网站 67

② 在主上:在home库中成立八个classes的表;从上从未有过成形

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

澳门新萄京官方网站 68

slave-mysql1 上,过滤成功

澳门新萄京官方网站 69

 

1.修改mysql配置

  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; 可以查阅自个儿授权过的客户

澳门新萄京官方网站 70

 

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

澳门新萄京官方网站 71

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

澳门新萄京官方网站 72

 

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

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

因为上边主配置文件已经展开了祥和的二进制文件;且slave-mysql1 是从开头就联手master的,所以授权命令也同步过了

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

澳门新萄京官方网站 73

 

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

澳门新萄京官方网站 74

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

澳门新萄京官方网站 75

 

找到主数据库的布署文件my.cnf(也许my.ini),笔者的在/etc/mysql/my.cnf,在[mysqld]有的插入如下两行:

# 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库

澳门新萄京官方网站 76

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

澳门新萄京官方网站 77

 

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

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

澳门新萄京官方网站 78

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

澳门新萄京官方网站 79

 

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

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

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

澳门新萄京官方网站 80

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

澳门新萄京官方网站 81

 

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

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

澳门新萄京官方网站 82

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

澳门新萄京官方网站 83

 

[mysqld]
log-bin=mysql-bin #开启二进制日志
server-id=1 #设置server-id

  4.2 初始化MySQL数据库

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

澳门新萄京官方网站 84

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

为了减轻双主同期对五个数据库举行写入,采纳自拉长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公司,小并发访谈量,毕竟还要写入易出错

 

实战三:mysql数据库双主的兑现

澳门新萄京官方网站 85

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

为了解决双主同期对一个数据库举行写入,接纳自拉长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集团,小并发访谈量,毕竟还要写入易出错

 

2.重启mysql,创造用于共同的客户账号

$ 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

数据库

中继日志、二进制日志

1、情状打算

机器名称

IP配置

服务角色

备注

mysql1

192.168.30.107

数据库

中继日志、二进制日志

mysql2

192.168.30.7

数据库

中继日志、二进制日志

打开mysql会话shell>mysql -hlocalhost -uname -ppassword

  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开始

澳门新萄京官方网站 86

systemctl start mariadb

 

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开始

澳门新萄京官方网站 87

systemctl start mariadb

 

创设用户并授权:客商:rel1密码:slavepass

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

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;   # 启动复制线程
mysql> CREATE USER 'repl'@'123.57.44.85' IDENTIFIED BY 'slavepass';#创建用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'123.57.44.85';#分配权限
mysql>flush privileges;   #刷新权限

  4.4 安装MySQL时区

4、测量检验双方互为骨干的涉及

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

澳门新萄京官方网站 88

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

澳门新萄京官方网站 89

 

4、测量试验双方互为着力的关联

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

澳门新萄京官方网站 90

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

澳门新萄京官方网站 91

 

3.翻看master状态,记录二进制文件名(mysql-bin.000003)和岗位(73):

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

澳门新萄京官方网站 92

① 在mysql1上向表中插入数据

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

澳门新萄京官方网站 93

② 在mysql2上向表中插入数据

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

澳门新萄京官方网站 94

 

5、设置自增进ID的表

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

澳门新萄京官方网站 95

① 在mysql1上向表中插入数据

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

澳门新萄京官方网站 96

② 在mysql2上向表中插入数据

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

澳门新萄京官方网站 97

 

mysql > SHOW MASTER STATUS;
 ------------------ ---------- -------------- ------------------ 
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
 ------------------ ---------- -------------- ------------------ 
| mysql-bin.000003 | 73       | test         | manual,mysql     |
 ------------------ ---------- -------------- ------------------ 

  4.5 设置MySQL服务相关

试验四:实现半联合复制的一主多从

  原理:介于异步复制和全同台复制之间,主库在实行完客商端提交的作业后不是当下回去给顾客端,而是等候至少三个从库接收到并写到relay log中才回来给顾客端。绝对于异步复制,半协同复制进步了多少的安全性,同期它也产生了迟早水准的推迟,那几个延迟最少是三个TCP/IP往返的时刻。所以,半三只复制最棒在低延时的网络中利用。

专一:本来是应当至少2个从mysql,手艺有真正的机能,不过原理都是同样的,作者就只用了一主一从

实行四:完成半联合签字复制的一主多从

  原理:介于异步复制和全同台复制之间,主库在施行完顾客端提交的作业后不是即时回到给顾客端,而是等候至少多少个从库接收到并写到relay log中才回来给顾客端。相对于异步复制,半齐声复制提升了数码的安全性,同有的时候候它也致使了料定水准的推移,那个延迟最少是一个TCP/IP往返的年华。所以,半联手复制最棒在低延时的网络中央银行使。

细心:本来是应有至少2个从mysql,技能有实在的效应,不过原理都以一律的,笔者就只用了一主一从

二、从服务器slave修改:

# 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

从数据库

中继日志

1、遭遇准备

机器名称

IP配置

服务角色

备注

master-mysql

192.168.30.107

主数据库

二进制日志

slave-mysql

192.168.30.7

从数据库

中继日志

1.修改mysql配置

 二. MySQL主从复制陈设

2、依照实战一,完结中央

澳门新萄京官方网站 98

 

2、依照实战一,落成中央

澳门新萄京官方网站 99

 

平等找到my.cnf配置文件,加多server-id

1. 共同主备库时间,可在主库搭建NTP SE中华VVE安德拉,备库作为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;   开启

澳门新萄京官方网站 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

 

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

澳门新萄京官方网站 102

 

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

澳门新萄京官方网站 103

 

[mysqld]
server-id=2 #设置server-id,必须唯一

2. 增添hosts文件分析确定保证主备能够并行分析host主机名

4、查询日志,验证

cd /var/log/mariadb/

tail mariadb.log

澳门新萄京官方网站 104

注释:

① 用于专业的半手拉手复制。

② 在主服务器上启用了半同台复制。

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

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

 

4、查询日志,验证

cd /var/log/mariadb/

tail mariadb.log

澳门新萄京官方网站 105

注释:

① 用于专门的学业的半联合举行复制。

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

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

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

 

2.重启mysql,张开mysql会话,推行一齐SQL语句(需求主服务器主机名,登录凭据,二进制文件的称呼和职位):

3. 主库做以下操作

试验五:实现MHA 高可用mysql数据库架构

原理:总的说来正是当主master mysql宕机时,从slave mysql顶上去的一文山会海操作

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

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

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

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

升迁二个slave 为新master;

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

 

架构图

澳门新萄京官方网站 106

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

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

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

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

③ 应用差别的紧接日志(relay log) 到别的slave;

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

晋升一个slave 为新master;

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

 

架构图

澳门新萄京官方网站 107

mysql> CHANGE MASTER TO
    ->     MASTER_HOST='182.92.172.80',
    ->     MASTER_USER='rep1',
    ->     MASTER_PASSWORD='slavepass',
    ->     MASTER_LOG_FILE='mysql-bin.000003',
    ->     MASTER_LOG_POS=73;

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

 

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

 

3.开行slave同步进度:

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

澳门新萄京官方网站 108

 

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 ;

澳门新萄京官方网站 109

 

mysql>start slave;

  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澳门新萄京官方网站:Mysql完毕公司级数据库主从复制架构实战,主从复制。 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服务器都需要发送自己的公钥

澳门新萄京官方网站 110

 

(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、配置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服务器都需要发送自己的公钥

澳门新萄京官方网站 111

 

(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

4.查看slave状态:

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

澳门新萄京官方网站 112

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

 

4、开启服务从前的检查测验

留心:开启服务从前的反省极其有须要,因为mha服务是管制mysql的,所有要求很严苛,如若检查通可是,开启服务时会有一群错误。每一趟运转服务在此以前都需检查评定条件。

① 检查实验各节点间ssh 互信通讯配置是不是Ok:

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

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

  [info]All SSH connection tests passed successfully.

澳门新萄京官方网站 113

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

 

mysql> show slave statusG;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 182.92.172.80
                  Master_User: rep1
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000013
          Read_Master_Log_Pos: 11662
               Relay_Log_File: mysqld-relay-bin.000022
                Relay_Log_Pos: 11765
        Relay_Master_Log_File: mysql-bin.000013
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
        ...

   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

澳门新萄京官方网站 114

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

 

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

澳门新萄京官方网站 115

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

 

当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了。接下来就足以开展局地证实了,譬喻在主master数据库的test数据库的一张表中插入一条数据,在slave的test库的一律数据表中查阅是不是有新增添的多寡就可以验证主从复制作用是还是不是可行,还是能够关闭slave(mysql>stop slave;),然后再修改master,看slave是或不是也对应修改(甘休slave后,master的改换不会联手到slave),就足以产生主从复制作用的求证了。

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 进步为主节点。

澳门新萄京官方网站 116

注意:故障转移完毕后,manager 将会活动甘休,此时采纳

masterha_check_status 命令检查测验将会碰着错误提醒,如下所示:

澳门新萄京官方网站 117

 

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 进步为主节点。

澳门新萄京官方网站 118

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

masterha_check_status 命令检验将会蒙受错误提示,如下所示:

澳门新萄京官方网站 119

 

仍是可以用到的别样相关参数:

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;

澳门新萄京官方网站 120

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

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 &

 

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;

澳门新萄京官方网站 121

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

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 &

 

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

 

master开启二进制日志后私下认可记录全体库全体表的操作,能够经过布置来内定只记录内定的数据库以致点名的表的操作,具体在mysql配置文件的[mysqld]可增多修改如下选项:

  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

 

# 不同步哪些数据库  
binlog-ignore-db = mysql  
binlog-ignore-db = test  
binlog-ignore-db = information_schema  

# 只同步哪些数据库,除此之外,其他不同步  
binlog-do-db = game  
$ grep "relay-log" /etc/my.cnf
relay-log = /usr/local/mysql/arch/relay-bin
relay-log-index  = /usr/local/mysql/arch/relay-log-index

如此前查看master状态时就能够观察只记录了test库,忽略了manual和mysql库。

  4.2 选取贰个独一的server-id**

 参照他事他说加以考察资料:

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

MySQL官方手册

 4.3 创设具备复制权限的顾客(可选,switchover为主库的时候须要)**

 MySQL数据库设置基本同步

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)

MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实施

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

CentOS系统MySQL双机热备配置


$ 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

本文由澳门新萄京官方网站发布于澳门新萄京官方网站,转载请注明出处:澳门新萄京官方网站:Mysql完毕公司级数据库主从

关键词: