1.试验指标

环境:

环境:

准备主从服务器:

 mysql服务器作为生产条件中动用最普遍的数据库软件,以其开源性,稳定性而常见应用,但与此同时由于数量存储,读写频率高,极易造成数据库出错,从而给集团造成不可挽回的损失,大家除了做好数据库的备份工作外,同时,还应该化解数据库服务器的单点故障难题。

A、B两台服务器分别安装mysql-5.7.18服务端,配置成互为主导同步。

A、B两台服务器分别安装mysql-5.7.18服务端,配置成互为主干同步。

主:106.123.123.12

2.搭建环境

linux系统版本为CentOS7

linux系统版本为CentOS7

从:106.123.12.10

两台 mysql 服务器

A服务器ip:192.168.1.7   主机名:test1

A服务器ip:192.168.1.7   主机名:test1

Master(106.123.123.12)服务器:

172.16.1.2     mysql   + keepalived

B服务器ip:192.168.1.8   主机名:test2

B服务器ip:192.168.1.8   主机名:test2

1.编辑/etc/my.cnf

172.16.1.12   mysql  + keepalived

(同一局域网下)

(同一局域网下)

vim /etc/my.cnf

一台测试机

 

 

2.配置my.cnf

172.16.1.1

一、准备

一、准备

#mysql配置基本,6主主复制及keepalived。亟待备份的数据库

3.条件布署

  1.修改主机名

  1.修改主机名

binlog-do-db=business

一台 mysql 服务器 + keepalived

   命令:hostnamectl  set-hostname  xxx

   命令:hostnamectl  set-hostname  xxx

#不须要备份的数据库

1)对于mysql源码安装恐怕yum 安装均可,此处不多讲。

   (查看主机名 命令:hostname)

   (查看主机名 命令:hostname)

binlog-ignore-db=mysql

2) 主MySQL配置

  2.闭馆防火墙

  2.停歇防火墙

#启航二进制文件

主MySQL安装时间同步器,yum  -y  install ntp

   1)查看防火墙状态

   1)查看防火墙状态

log-bin=mysql-bin

vim   /etc/ntpd.conf

    命令:firewall-cmd  –state

    命令:firewall-cmd  –state

#服务器ID

添加

    结果:running

    结果:running

server-id=1

server 127.127.1.0
fudge 127.127.1.0 startum 8

   2)防火墙是运营处境,先关闭防火墙服务

   2)防火墙是运营境况,先关闭防火墙服务

#重启

启动service   ntpd  start

    命令:systemctl  mask  firewalld

    命令:systemctl  mask  firewalld

service mysqld restart

安顿mysql目录下的 my.cnf文件

   3)关闭防火墙

   3)关闭防火墙

#登录mysql

vim my.cnf

    命令:systemctl  stop  firewalld

    命令:systemctl  stop  firewalld

mysql -h localhost -p -u root

[mysqld]
log-slave-updates=true                           
#打开从服务器的日志更新
server-id =
11                                          #主服务器的ID ,那些可以随便定,不过与从服务器要不等

   4)检查防火墙状态

   4)检查防火墙状态

#在主服务器的mysql 为 从服务器的mysql 创制用户,并给主从复制的权杖

log-bin=mysql-bin                                    #翻开二进制日志

    命令:firewall-cmd  –state

    命令:firewall-cmd  –state

create user ‘master’@’106.123.12.10’ identified by ‘123456’;

登录mysql,   mysql   -uroot   -p123456  

    结果:not  running

    结果:not  running

grant replication slave on *.* to ‘master’@’106.123.12.10’ identified
by ‘123456’;

创建myslave 账号,并授权能够复制

  3.关闭selinux策略

  3.关闭selinux策略

Slave(106.123.12.10)服务器:

grant   replication slave   on  *.*  to  ‘myslave’@’172.16.1.12’    
identified   by  ‘123456’;

   1)查看selinux运营情状

   1)查看selinux运维状态

1.配备服务ID

flush   privileges;

    命令:getenforce

    命令:getenforce

# vim /etc/my.cnf

展现主服务的情状;

    结果:Enforcing

    结果:Enforcing

在[mysqld]下面进入

 show   master  status;

    澳门金沙国际 1

    澳门金沙国际 2

server-id=2

难忘file 及position地点的字符串,在计划从服务时候会用到。

   2)永久性关闭(需重启电脑),编辑selinux文件vi 
/etc/sysconfig/selinux修改SELINUX=disabled

   2)永久性关闭(需重启电脑),编辑selinux文件vi 
/etc/sysconfig/selinux修改SELINUX=disabled

重启Mysql服务

迄今,主 mysql 配置达成,重启service mysqld   restart

    澳门金沙国际 3

    澳门金沙国际 4

service mysqld restart

3)从mysql服务配置

   3)为关闭状态

   3)为关门状态

2.布署复制

MySQL安装时间同步器,yum  -y  install ntpdate

    澳门金沙国际 5

    澳门金沙国际 6

登录mysql

ntpdate  172.16.1.2      时间同步

二 、配置主服务器(master)从服务器(slave)

② 、配置主服务器(master)从服务器(slave)

mysql -h localhost -p -u root

配置mysql目录下的 my.cnf文件

  1.打开A服务器的my.cnf文件vi 
/etc/my.cnf,在文件的[mysqld]下添加如下内容

  1.打开A服务器的my.cnf文件vi 
/etc/my.cnf,在文书的[mysqld]下添加如下内容

执行

在里面添加

   server-id=1      
#不可能不与别的服务器分裂,且务必为1~232之间的正整数值

   server-id=1      
#非得与别的服务器分化,且务必为1~23第22中学间的正整数值

注意:change …..中的  master_log_file ,master_log_pos 必须与
主服务器的布局一致。

[mysqld]

   log-bin=mysql-bin

   log-bin=mysql-bin

可在主服务器中输入:SHOW PROCESSLIST\G,查看配置。

relay-log=relay-log-bin                                     #
传递日志,前缀为 relay-log-bin

   log-bin-index=mysql-bin

   log-bin-index=mysql-bin

File                         | Position | Binlog_Do_DB |
Binlog_Ignore_DB | Executed_Gtid_Set |

relay-log-index=slave-relay-bin.index             # 传递日志的目录文件

   澳门金沙国际 7

   澳门金沙国际 8

mysql-bin.000002  |154         | lallalal               | mysql||

log-bin=mysql-bin                                          
 #翻开二进制日志

  

  

这里的File 为 master_log_file,position为 master_log_pos

server-id =
12                                                  #服务器的ID ,那么些能够随便定,可是与主服务器要不等

   在B服务器my.cnf文件中的[mysqld]下添加上海体育场地内容,只更改server-id值即可。

   在B服务器my.cnf文件中的[mysqld]下添加上海教室内容,只更改server-id值即可。

mysql> change master to master_host=’106.123.123.12′, 

重启服务   service  mysqld restart

   server-id=2    

   server-id=2    

master_user=’master’,

登录mysql,   mysql   -uroot   -p123456  

   log-bin=mysql-bin

   log-bin=mysql-bin

master_password=’123456′,

change  master  to  master_host
=’172.16.1.2′,master_user=’myslave’,master_password=’123456′,master_log_file=’此处为主服务show 
master 命令突显的 file’,master_log_pos=’此处为主服务show  master
命令呈现的 pos”;

   log-bin-index=mysql-bin

   log-bin-index=mysql-bin

master_port=3306,

此处 master_host =’172.16.1.2′,为主mysql的ip

  2.在A服务器中的mysql安装路径下(rpm安装路径为/var/lib/mysql)创立全库备份文件all.sql。

  2.在A服务器中的mysql安装路径下(rpm安装路径为/var/lib/mysql)创设全库备份文件all.sql。

master_log_file=’mysql-bin.000003′,

start   slave;                       #打开从劳动

   创造命令:touch  /var/lib/mysql/all.sql

   创建命令:touch  /var/lib/mysql/all.sql

master_log_pos=2005,

show slave status\G;         #来得从服务地方

   备份命令:[root@test1 mysql]# mysqldump -uroot -p123
–all-databases > /var/lib/mysql/all.sql

   备份命令:[root@test1 mysql]# mysqldump -uroot -p123
–all-databases > /var/lib/mysql/all.sql

master_connect_retry=10;

如果

 

 

参数详解:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

   把all.sql文件拷贝到B服务器中的某些路径下(以/var/lib/mysql路径为例)实行回复。

   把all.sql文件拷贝到B服务器中的某些路径下(以/var/lib/mysql路径为例)举办苏醒。

master_host:主服务器的IP。

两项为yes,则意味运行从服务成功。

   复苏命令:[root@test2 /]# mysql -uroot -p123 <
/var/lib/mysql/all.sql

   复苏命令:[root@test2 /]# mysql -uroot -p123 <
/var/lib/mysql/all.sql

master_user:配置主服务器时建立的用户名

如果Slave_IO_Running: No

  3.在A、B服务器的mysql中创立用户用于共同。

  3.在A、B服务器的mysql中开创用户用于共同。

master_password:用户密码

兴许的标题一是主服务和从服务的server-id,不可能为重复;二是授权时肯定要可信。grant  
replication slave   on  *.*  to  ‘myslave’@’172.16.1.12’    
identified   by  ‘123456’;

   创建用户:mysql> create user ‘tongbu’@’%’ identified by
‘tongbu’;

   成立用户:mysql> create user ‘tongbu’@’%’ identified by
‘tongbu’;

master_port:主服务器mysql端口,若是没有修改,暗中同意即可。

那里172.16.1.12为从服务器的ip

   授权:mysql> grant all on *.* to ‘tongbu’@’%’;

   授权:mysql> grant all on *.* to ‘tongbu’@’%’;

master_log_file:日志文件名称,填写查看master状态时展现的File

4)以上两步达成了mysql主从复制,大家要促成主主,也正是两台mysql
,一台既是主,也是从,另一台既是主也是从,所以大家依据上面包车型地铁计划在两台mysql上做反而的从主配置。

   删除用户:mysql> drop user ‘用户名’@’%’;

   删除用户:mysql> drop user ‘用户名’@’%’;

master_log_pos:日志地方,填写查看master状态时展示的Position

主mysql上,做从布局 

    A、B服务器用户创立完结后,测试用户相互是不是足以长距离登陆mysql。

    A、B服务器用户创造达成后,测试用户相互是不是足以远程登陆mysql。

master_connect_retry:重连次数

布局mysql目录下的 my.cnf文件

      [root@test1 /]# mysql -utongbu -ptongbu -h192.168.1.8

      [root@test1 /]# mysql -utongbu -ptongbu -h192.168.1.8

启航进度

在其间添加

   [root@test2 /]# mysql -utongbu -ptongbu -h192.168.1.7

   [root@test2 /]# mysql -utongbu -ptongbu -h192.168.1.7

mysql> start slave;

[mysqld]

  

  

查阅从服务器状态:

relay-log=relay-log-bin                                     #
传递日志,前缀为 relay-log-bin

   测试无难点后重启A、B服务器中的mysql服务:[root@test /]# service
mysqld restart

   测试无难点后重启A、B服务器中的mysql服务:[root@test /]# service
mysqld restart

show slave status\G 

relay-log-index=slave-relay-bin.index             # 传递日志的目录文件

  4.设置A为主服务器,B为从服务器。

  4.设置A为主服务器,B为从服务器。

Slave_IO_Running: Yes

log-bin=mysql-bin                                          
 #开启二进制日志

   1)查看A服务器mysql中的二进制日志名和偏移量值

   1)查看A服务器mysql中的二进制日志名和偏移量值

Slave_SQL_Running: Yes

重启服务   service  mysqld restart

    命令:mysql> show master status\G

    命令:mysql> show master status\G

八个都为YES 才通。

登录mysql,   mysql   -uroot   -p123456  

    如下图

    如下图

change  master  to  master_host
=’172.16.1.12′,master_user=’myslave’,master_password=’123456′,master_log_file=’此处为主服务show 
master 命令显示的 file’,master_log_pos=’此处为主服务show  master
命令呈现的 pos”;

    澳门金沙国际 9

    澳门金沙国际 10

此处的master_host =’172.16.1.12′  为从mysql服务器的ip

   2)在B服务器中配备连接服务器

   2)在B服务器中布局连接服务器

start   slave;                       #拉开从劳动

    mysql> stop slave;

    mysql> stop slave;

show slave status\G;         #展现从劳动情状

    mysql> change master to

    mysql> change master to

如果

      -> master_host=’192.168.1.7′,

      -> master_host=’192.168.1.7′,

Slave_IO_Running: Yes Slave_SQL_Running: Yes

      -> master_user=’tongbu’,

      -> master_user=’tongbu’,

两项为yes,则象征运转从服务成功。

      -> master_password=’tongbu’,

      -> master_password=’tongbu’,

 

      -> master_log_file=’mysql-bin.000024′,

      -> master_log_file=’mysql-bin.000024′,

从mysql上,做主配置

      -> master_log_pos=154;

      -> master_log_pos=154;

安顿mysql目录下的 my.cnf文件

    mysql> start slave;

    mysql> start slave;

vim my.cnf

    mysql> show slave status\G
输入此命令查看Slave_IO_Running和Slave_SQL_Running的值是或不是为Yes,如下图

    mysql> show slave status\G
输入此命令查看Slave_IO_Running和Slave_SQL_Running的值是或不是为Yes,如下图

[mysqld] log-slave-updates=true                           
#翻开从服务器的日记更新

    澳门金沙国际 11

    澳门金沙国际 12

登录mysql,   mysql   -uroot   -p123456  

  5.设置B为主服务器,A为从服务器。

  5.设置B为主服务器,A为从服务器。

创办myslave 账号,并授权可以复制

   1)查看B服务器mysql中的二进制日志名和偏移量

   1)查看B服务器mysql中的二进制日志名和偏移量

grant   replication slave   on  *.*  to  ‘myslave’@’172.16.1.12’    
identified   by  ‘123456’;

    命令:mysql> show master status\G

    命令:mysql> show master status\G

flush   privileges;

    澳门金沙国际 13

    澳门金沙国际 14

呈现主服务的景色;

   2)在A服务器中配置连接服务器。

   2)在A服务器中布局连接服务器。

 show   master  status;

    mysql> stop slave;

    mysql> stop slave;

切记file 及position地方的字符串,在安排从劳动时候会用到。

    mysql> change master to

    mysql> change master to

至此,两台MySQL服务器的各自铺排了中心,即一台既是主又是从,另一台既是从也是主。

      -> master_host=’192.168.1.8′,

      -> master_host=’192.168.1.8′,

5)mysql主主复制测试

      -> master_user=’tongbu’,

      -> master_user=’tongbu’,

mysql  -uroot  -p123456 任意登录一台mysql服务器,

      -> master_password=’tongbu’,

      -> master_password=’tongbu’,

create  database  test  default  character  set  utf8;

      -> master_log_file=’mysql-bin.000027′,

      -> master_log_file=’mysql-bin.000027′,

create  table  test;

      -> master_log_pos=154;

      -> master_log_pos=154;

 到另一台MySQL上show   databases;  show   tables;

    mysql> start slave;

    mysql> start slave;

展现了数据库和数量表都已建好,能够看出已经联合成功

    mysql> show slave status\G
查看Slave_IO_Running和Slave_SQL_Running的值是或不是为Yes

    mysql> show slave status\G
查看Slave_IO_Running和Slave_SQL_Running的值是或不是为Yes

6)配置keepalived,达成高可用

 

 

在主mysql服务器配置 

迄今截止两台mysql数据库互为着力同步安插完毕。

至此两台mysql数据库互为主干同步布置完结。

yum  -y install  keepalived

 

 

cp  /etc/keepalived/keepalived.conf   
/etc/keepalived/keepalived.conf.bak

漏洞非凡多排查:

不当排查:

vim  /etc/keepalived.conf

1.Slave_IO_Running状态错误

1.Slave_IO_Running状态错误

vrrp_instance VI_1 {                                         #实例1
    state
MASTER                                             #景况为主
    interface
ens33                                            #绑定网卡
    virtual_router_id 11                                      #  
id 号,主从一致
    priority 100                                                  
#先行级为100
    advert_int 1
    #nopreempt                                                 
#非抢占形式
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress
{                                         #虚拟ip地址
        172.16.1.199
    }
}
virtual_server 172.16.1.199 3306  {                 
     delay_loop 2                                                 
#间隔2秒检查真实服务器状态 
     lb_algo wrr                                                    
#LVS   arithmetic
     lb_kind DR                                                    
#LVS model
     persistence_timeout 60                                  #k
     protocol TCP 
     real_server 172.16.1.2 3306 
{                        #实事求是服务器 ,也正是主mysql服务器
         weight 3 
         #notify_down /usr/local/mysql/bin/mysql.sh  #
可进行脚本路径 
         TCP_CHECK { 
             connect_timeout 10    #timeout
             nb_get_retry 3       #conect times to try to connect
             delay_before_retry 3   #interval of retry
             connect_port 3306    # check mysql port
         }
     } 
}

 检查MySQL> show slave status\G;时,Slave_IO_Running状态为Connecting错误,出现的原故首要分为两种,必要检查安插:

 检查MySQL> show slave status\G;时,Slave_IO_Running状态为Connecting错误,出现的由来主要分为三种,必要检查安排:

起步服务,service  keepalived  start

 1)互联网堵塞  

 1)互联网不通  

在从mysql服务器上配备

 2)账户权限配置错误,如密码不对、账号错误、地址错误  

 2)账户权限配置错误,如密码不对、账号错误、地址错误  

yum  -y install  keepalived

 3)二进制文件地方不对

 3)二进制文件地点不对

cp  /etc/keepalived/keepalived.conf   
/etc/keepalived/keepalived.conf.bak

2.主备数据争持或区别造成的不胜

2.主备数据抵触或不相同造成的老大

vim  /etc/keepalived.conf

 主键争论、表已存在等错误代码如1062,1032,1060等,能够在mysql配置文件内定略过此类很是并继续下条sql同步,那样可避防止过多中坚同步的非凡中断。打开/etc/
mysql下的my.cnf文件,在[mysqld]后添加如下代码:

 主键争执、表已存在等错误代码如1062,1032,1060等,能够在mysql配置文件钦点略过此类至极并继续下条sql同步,这样能够免止过多着力同步的极度中断。打开/etc/
mysql下的my.cnf文件,在[mysqld]后添加如下代码:

本处只写与主mysql服务器分歧处

 slave-skip-errors = 1062,1032,1060

 slave-skip-errors = 1062,1032,1060

 

  1. 跳过格外恢复生机同步
  1. 跳过13分复苏同步

    #备用服务器上为SLAVE
    state SLAVE
    #绑定vip的网卡为ens33,依据本人服务器网卡
    interface ens33
    virtual_router_id 11                     #澳门金沙国际,与主服务器 
id号码一致
    #备用服务器上为90
    priority
90                                   #先期级比主mysql服务器小
}
virtual_server 172.16.1.199 3306 {  
     real_server 172.16.1.12 3306
{               #实事求是服务器 ,也正是从mysql服务器
}

 mysql >slave stop;

 mysql >slave stop;

其余与主mysql服务器上陈设文件一律

 mysql >SET GLOBAL sql_slave_skip_counter = 1;

 mysql >SET GLOBAL sql_slave_skip_counter = 1;

运转服务,service  keepalived  start

 mysql >slave start;

 mysql >slave start;

能够在主mysql服务器上看到3个VIP地址,172.16.1.199

4.测试

 结束主mysql服务器上的keepalived服务,  service  keepalived  stop

与此同时查看另一台的从mysql  的ip,ip a

能够看来有一vip ,172.16.1.199

笔者们在测试机172.16.1.1上登录从mysql ,    mysql   -uroot   -p123456  -P
3306   -h  172.16.1.12

签到成功,大家做2个 插入数据试验

use test;

insert into  test   values();

到两台的数据库下查看,select   *  from  test;

数据同步成功。

启航  主mysql服务器上的keepalived服务,  service  keepalived  start

停止从mysql服务器上的keepalived服务,  service  keepalived  stop

翻看另一台的主mysql  的ip,ip a

能够见见有一vip ,172.16.1.199

做相同的操作 insert into  test   values();

到两台的数据库下查看,select   *  from  test;

多少同步成功,从而完毕两台mysql数据库服务器的高可用及主主数据同步。

                                           

 

相关文章