【澳门金沙30064.com】mysql配置主旨,6主主复制及keepalived

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

一、准备

一、准备

#急需备份的数据库

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;

    澳门金沙30064.com 1

    澳门金沙30064.com 2

server-id=2

牢记file 及position地方的字符串,在配置从服务时候会用到。

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

【澳门金沙30064.com】mysql配置主旨,6主主复制及keepalived。   2)永久性关闭(需重启电脑),编辑selinux文件vi 
/etc/sysconfig/selinux修改SELINUX=disabled

重启Mysql服务

从那之后,主 mysql 配置实现,重启service mysqld   restart

    澳门金沙30064.com 3

    澳门金沙30064.com 4

service mysqld restart

3)从mysql服务配置

   3)为关闭状态

   3)为关门状态

2.安排复制

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

    澳门金沙30064.com 5

    澳门金沙30064.com 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~232里头的正整数值

注意: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             # 传递日志的目录文件

   澳门金沙30064.com 7

   澳门金沙30064.com 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’,

澳门金沙30064.com ,登录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”;

    澳门金沙30064.com 9

    澳门金沙30064.com 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                           
#拉开从服务器的日记更新

    澳门金沙30064.com 11

    澳门金沙30064.com 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;

    澳门金沙30064.com 13

    澳门金沙30064.com 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. 跳过那一个复苏同步

    #备用服务器上为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

报到成功,大家做二个 插入数据试验

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数据库服务器的高可用及主主数据同步。

                                           

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图