您的位置:新葡亰496net > 电脑系统 > 新葡亰496net:主从复制,主从部署以及半同步配

新葡亰496net:主从复制,主从部署以及半同步配

发布时间:2019-07-14 22:09编辑:电脑系统浏览(54)

    脚下条件设计

    新葡亰496net 1

    新葡亰496net 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万,老王做出深入检查,企业也为此对此数据库的习性和可信性建议越来越高须要。

    新葡亰496net 3

    主从复制原理

    如图

    新葡亰496net 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、实验架构及其规律

    数据库高可用架构分为

    焦点:一主一从,一主多从,一主从从

    双主

    新葡亰496net 5

    新葡亰496net 6

    1、实验架构及其规律

    数据库高可用架构分为

    中央:一主一从,一主多从,一主从从

    双主

    新葡亰496net 7

    新葡亰496net 8

    新葡亰496net 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
    

    备注:备份时的某表的动静

    新葡亰496net 10

    为了下边包车型大巴试验测量检验在那边我们备份玩再追加一条记下

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

    新葡亰496net 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相同的时候读出;大大进步了读的成效

    新葡亰496net,实际中,非常多都以读的乞请大,写的央求相对小的多,如电商网址,大多都以人人去拜候,下单的很少;所以基本的关系一度能很好的增长质量了

     

    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 
    

    新葡亰496net 12

    2)依照事态编辑上海体育地方上的信息

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

    三种方法:

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

    ② 直接把地点的音讯增多到完全备份文件里

    上面用第三种办法来操作如图

    新葡亰496net 13

    3)37主机还原并查阅

    mysql < all-2018-08-08.sql
    

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

    新葡亰496net 15

    7)57(从服务器同样的设置)

    备注:近来具体了异步同步复制,上面来看半共同设置

    slave    

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

    新葡亰496net 16

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

    新葡亰496net 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%';
    

    新葡亰496net 18

    3、开启

    set global rpl_semi_sync_master_enabled=on;
    

    备考:最棒写在配备文件中

    新葡亰496net 19

    4、查看插件变量状态

    SHOW GLOBAL STATUS LIKE '%semi%';
    

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

    新葡亰496net 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,查看主服务器二进制日志状态,地点号

    新葡亰496net 22

     

    新葡亰496net:主从复制,主从部署以及半同步配置详细过程。2、在主master 主服务器上

    ① vim /etc/my.cnf 修改mysql主配置文件,对master举行布局,富含张开二进制日志,钦赐独一的servr ID

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

    新葡亰496net 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权限。
    

    ③ 查看主服务器状态

    新葡亰496net:主从复制,主从部署以及半同步配置详细过程。在Master的数据库试行show master status,查看主服务器二进制日志状态,地方号

    新葡亰496net 24

     

    • 布局独一的server-id

    从服务器设置

    1、安装插件

    INSTALL PLUGIN rpl_semi_sync_slave SONAME  'semisync_slave.so';
    

    2、运行插件

    set global rpl_semi_sync_slave_enabled=on;
    

    备考:同样提出写在配置文件中

    新葡亰496net 25

    3、从服务器查看改插件是不是上马职业

    SHOW GLOBAL STATUS LIKE '%semi%';
    

    新葡亰496net 26

    干什么一直不起来专门的职业?

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

    因此这种状态下,先结束从服务器的主从复制功用

    1)停止:

    stop slave;
    

    2)再次开启主从复制

    start slave;
    

    3)再去查看

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

    新葡亰496net 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线程平常运维

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

    新葡亰496net 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线程正常运营

    新葡亰496net 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
    

    新葡亰496net 32

    备注:如果您是编写翻译安装在/etc/mastermha/app1.cnf配备文件中钦命日志路线,最棒大旨服务器数据库设置的地点都以同等的。

    新葡亰496net 33

    MySQL 5.6.23

    4、测试

    ① 在主上创制叁个along库

    新葡亰496net 34

    ② 从上自动生成along数据库

    新葡亰496net 35

     

    4、测试

    ① 在主上成立八个along库

    新葡亰496net 36

    ② 从上自动生成along数据库

    新葡亰496net 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;
    

    新葡亰496net 38

    (2)在从slave-mysql2上

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

    新葡亰496net 39

    ② 进行master的完全备份恢复

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

    systemctl start mariadb 开启服务

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

    新葡亰496net 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;
    

    新葡亰496net 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;
    

    新葡亰496net 42

    (2)在从slave-mysql2上

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

    新葡亰496net 43

    ② 进行master的全然备份复苏

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

    systemctl start mariadb 开启服务

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

    新葡亰496net 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;
    

    新葡亰496net 45

     

    实际落到实处进度如下:

    1. 创办MySQL用户和组

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

    ① 在master 上创建home数据库

    新葡亰496net 46

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

    新葡亰496net 47

     

    6、测验三台机器的一主多从涉嫌

    ① 在master 上创建home数据库

    新葡亰496net 48

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

    新葡亰496net 49

     

    一、计划干活:

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

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

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

    新葡亰496net 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; 关闭多少个线程

    新葡亰496net 51

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

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

    ③ systemctl restart mariadb 重启服务

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

    2. 布置MySQL用户景况变量

    实战二:完毕基本从架构及复制过滤器

    新葡亰496net 52

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

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

    有三种完成思路:

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

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

    新葡亰496net 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数据库的二进制文件
    

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

    新葡亰496net 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数据库的二进制文件
    

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

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

    新葡亰496net 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线程平常运营

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

    新葡亰496net 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线程平常运营

    新葡亰496net 61

     

    二、主数据库master修改:

    4. 安插MySQL数据库(主备操作)

    4、测量试验宗旨和复制过滤

    (1)测量试验主从涉嫌

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

    新葡亰496net 62

    (2)测试复制过滤

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

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

    新葡亰496net 63

    ② 在主上:在home库中开创叁个classes的表;从上并未有变化

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

    新葡亰496net 64

    slave-mysql1 上,过滤成功

    新葡亰496net 65

     

    4、测量检验大旨和复制过滤

    (1)测量检验主从涉嫌

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

    新葡亰496net 66

    (2)测试复制过滤

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

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

    新葡亰496net 67

    ② 在主上:在home库中创立三个classes的表;从上尚无变动

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

    新葡亰496net 68

    slave-mysql1 上,过滤成功

    新葡亰496net 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; 能够查看自身授权过的用户

    新葡亰496net 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数据库
    

    新葡亰496net 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数据库

    新葡亰496net 72

     

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

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

    因为上边主配置文件已经开启了协调的二进制文件;且slave-mysql1 是从开端就联手master的,所以授权命令也一并过了

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

    新葡亰496net 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数据库
    

    新葡亰496net 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数据库

    新葡亰496net 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库

    新葡亰496net 76

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

    新葡亰496net 77

     

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

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

    新葡亰496net 78

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

    新葡亰496net 79

     

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

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

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

    新葡亰496net 80

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

    新葡亰496net 81

     

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

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

    新葡亰496net 82

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

    新葡亰496net 83

     

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

      4.2 初始化MySQL数据库

    实战三:mysql数据库双主的贯彻

    新葡亰496net 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数据库双主的落到实处

    新葡亰496net 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开始
    

    新葡亰496net 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开始
    

    新葡亰496net 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 上也自行删除

    新葡亰496net 88

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

    新葡亰496net 89

     

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

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

    新葡亰496net 90

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

    新葡亰496net 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));

    新葡亰496net 92

    ① 在mysql1上向表中插入数据

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

    新葡亰496net 93

    ② 在mysql2上向表中插入数据

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

    新葡亰496net 94

     

    5、设置自拉长ID的表

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

    新葡亰496net 95

    ① 在mysql1上向表中插入数据

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

    新葡亰496net 96

    ② 在mysql2上向表中插入数据

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

    新葡亰496net 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、根据实战一,完毕基本

    新葡亰496net 98

     

    2、依照实战一,完成基本

    新葡亰496net 99

     

    无差距于找到my.cnf配置文件,增加server-id

    1. 手拉手主备库时间,可在主库搭建NTP SE日产GT-RVE宝马7系,备库作为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;   开启
    

    新葡亰496net 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;
    

    新葡亰496net 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;   开启
    

    新葡亰496net 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;
    

    新葡亰496net 103

     

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

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

    4、查询日志,验证

    cd /var/log/mariadb/

    tail mariadb.log

    新葡亰496net 104

    注释:

    ① 用于专门的学问的半合伙复制。

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

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

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

     

    4、查询日志,验证

    cd /var/log/mariadb/

    tail mariadb.log

    新葡亰496net 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

     

    架构图

    新葡亰496net 106

    试验五:完毕MHA 高可用mysql数据库架构

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

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

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

    ③ 应用差别的联网日志(relay log) 到任何slave;

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

    进级贰个slave 为新master;

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

     

    架构图

    新葡亰496net 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 ;
    

    新葡亰496net 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 ;
    

    新葡亰496net 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 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服务器都需要发送自己的公钥
    

    新葡亰496net 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服务器都需要发送自己的公钥
    

    新葡亰496net 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.

    新葡亰496net 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.

    新葡亰496net 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
    

    新葡亰496net 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
    

    新葡亰496net 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 进步为主节点。

    新葡亰496net 116

    注意:故障转移完结后,manager 将会自行停止,此时应用

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

    新葡亰496net 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 提高为主节点。

    新葡亰496net 118

    注意:故障转移完毕后,manager 将会自动停止,此时选择

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

    新葡亰496net 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;

    新葡亰496net 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;

    新葡亰496net 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
    

    本文由新葡亰496net发布于电脑系统,转载请注明出处:新葡亰496net:主从复制,主从部署以及半同步配

    关键词:

上一篇:新葡亰496net:经典收藏,黑客基础之DOS

下一篇:没有了