当前位置: 澳门新濠3559 > 操作系统 > 正文

增加 MySQL 数据库服务器,   (查看主机名 命

时间:2019-10-13 04:26来源:操作系统
1.实验指标 一 、公司网址单个 MySQL 难点解析 在店肆网址中,后端 MySQL数据库唯有一台时,会有以下难点:单点故障,服务不足 用;不能管理多量的面世数据央浼;数据错失将促成大患

1.实验指标

一 、公司网址单个 MySQL 难点解析
在店肆网址中,后端 MySQL 数据库唯有一台时,会有以下难点:单点故障,服务不足
用;不能管理多量的面世数据央浼;数据错失将促成大患难。
改建格局:
追加 MySQL 数据库服务器,对数据开展备份,产生主备。
管教准备 MySQL 数据库服务器是同一的
主服务器宕机了,备份服务器继续做事,数占有保证
MySQL 主从复制与读写分离是紧凑相关

金玉满堂mysql主从在线联合

环境:

 mysql服务器作为生产条件中选择最常见的数据库软件,以其开源性,坚固性而分布运用,但还要鉴于数量存储,读写频率高,极易导致数据库出错,进而给厂家变成不可挽回的损失,大家除了做好数据库的备份职业外,同期,还应该消除数据库服务器的单点故障难题。

澳门新濠3559 1

一.办事条件及标准

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

2.搭建境况

一台主服务器能够做多少个从服务器,从服务器也得以充任主服务器,再做多少个从服务器,依此类推....

主数据库:172.25.0.254

linux系统版本为CentOS7

两台 mysql 服务器

二、主从复制原理原理
MySQL 主从复制的花色:
·基于语句的复制
·基于行的复制
·混合类型的复制

从数据库:172.25.0.11

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

172.16.1.2     mysql   keepalived

澳门新濠3559 2

操作系统:奥迪Q5HCR-VL7

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

172.16.1.12   mysql  keepalived

1、MySQL 从服务器开启 I/O 线程,向主服务器供给数据同步(获取二进制日志)
2、MySQL 主服务器开启 I/O 线程回应从服务器
3、从服务器获得主的二进制日志写入中继日志
4、从服务器开启 SQL 线程将日志内容实施,达成多少同步

MySQL版本:mariadb-5.5.35

(同一局域网下)

一台测验机

三、MySQL 主从备份案例

安装MYSQL(yum源安装)

 

172.16.1.1

两台CentOS7服务器

主数据库

一、准备

3.条件布署

master---192.168.1.46

[root@master ~]# yum clean all

  1.修改主机名

一台 mysql 服务器  keepalived

slave---192.168.1.47

[root@master ~]# yum -y install mariadb*

   命令:hostnamectl  set-hostname  xxx

1)对于mysql源码安装只怕yum 安装均可,此处十分的少讲。

抱有服务器关闭防火墙、关闭selinux

从数据库

   (查看主机名 命令:hostname)

2) 主MySQL配置

确立即间共同情状 , 在主服务器上安装配置 NTP  时间一齐服务器

[root@slave ~]# yum clean all

  2.关门防火墙

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

[root@master ~]# yum -y install ntp

开启mariadb服务

   1)查看防火墙状态

vim   /etc/ntpd.conf

[root@master ~]# vim /etc/ntp.conf

[root@master ~]# systemctl start mariadb

    命令:firewall-cmd  --state

添加

22 server 127.127.1.0 // 手动增多此两行内容
23 fudge 127.127.1.0 startum 8

[root@slave ~]# systemctl start mariadb

    结果:running

server 127.127.1.0
fudge 127.127.1.0 startum 8

[root@master ~]# systemctl start ntpd

关闭防火墙(或然支付防火墙的mysql服务和3306端口)

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

澳门新濠3559,启动service   ntpd  start

[root@master ~]# chkconfig ntpd on

[root@master ~]# systemctl stop firewalld.service

    命令:systemctl  mask  firewalld

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

从服务器上进行时间同步

[root@slave ~]# systemctl stop firewalld.service

   3)关闭防火墙

vim my.cnf

[root@slave ~]# yum -y install ntpdate

二.mysql主从复制配置格局

    命令:systemctl  stop  firewalld

[mysqld]
log-slave-updates=true                            #拉开从服务器的日记更新
server-id = 11                                          #主服务器的ID ,那个能够随意定,但是与从服务器要不等

[root@slave ~]# ntpdate 192.168.1.46
23 Aug 17:50:14 ntpdate[3407]: adjust time server 192.168.1.46 offset 0.000029 sec
[root@slave ~]# crontab -e

1.主数据库

   4)检查防火墙状态

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

[root@slave ~]# crontab -l

修改主库my.cnf主要安装个不一样等的ID,乃至联合的数据库的名字和端口号(默以为3306)

    命令:firewall-cmd  --state

登录mysql,   mysql   -uroot   -p123456  

*/5 * * * * /usr/sbin/ntpdate 192.168.1.46

[root@slave ~]# vim /etc/my.cnf

    结果:not  running

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

布署 MySQL Master  主服务器

在[mysqld]中参加内容如下

  3.关闭selinux策略

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

[root@master ~]# vim /etc/my.cnf

server-id=1

   1)查看selinux运维境况

flush   privileges;

在[mysqld]模块动手动增添

log-bin=lhb

    命令:getenforce

显示主服务的气象;

10 log-bin=mysql-bin
11 log-slave-updates=true #手动增添,开启从日记
12 server-id=11

port=3306

    结果:Enforcing

 show   master  status;

[root@master ~]# systemctl restart mariadb

重启服务使配置生效

    澳门新濠3559 3

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

[root@master ~]# mysql -uroot -p

[root@master ~]# systemctl restart mariadb

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

由来,主 mysql 配置完毕,重启service mysqld   restart

给从服务器授权

安装mysql登入密码(私下认可情状下登入密码为空)

    澳门新濠3559 4

3)从mysql服务配置

MariaDB [(none)]> grant replication slave on *.* to 'myslave'@'192.168.1.%' identified by '123123';
Query OK, 0 rows affected (0.00 sec)

[root@master ~]# mysqladmin -uroot password '123456'

   3)为关门状态

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

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.01 sec)

报到主库赋予从库权限账号,允许客户在主库上读取日志(客商名:admin,密码:123456)

    澳门新濠3559 5

ntpdate  172.16.1.2      时间同步

MariaDB [(none)]> show master status;
------------------ ---------- -------------- ------------------
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
------------------ ---------- -------------- ------------------
| mysql-bin.000001 | 613 | | |
------------------ ---------- -------------- ------------------
1 row in set (0.00 sec)

[root@master ~]# mysql -uroot -p123456

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

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

布置从服务器

在mysql里面输入

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

在当中增多

[root@slave ~]# yum -y install mariadb-*

MariaDB [(none)]> grant replication slave on *.* to 'admin'@'172.25.0.254' identified by '123456';

   server-id=1       #必需与别的服务器分裂,且必须为1~232里面包车型大巴正整数值

[mysqld]

[root@slave ~]# vim /etc/my.cnf

为注脚账号我们得以在从的机器上用命令作如下测量检验

   log-bin=mysql-bin

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

10 relay-log=relay-log-bin
11 relay-log-index=slave-relay-bin.index
12 server-id=12 #着力服务器的 server-id  无法一直以来!

[root@slave ~]# mysql -uadmin -p123456 -h 172.25.0.11

   log-bin-index=mysql-bin

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

[root@slave ~]# systemctl restart mariadb
[root@slave ~]# mysqladmin -uroot password 123123
[root@slave ~]# mysql -uroot -p123123

呈现主数据看的音信

   澳门新濠3559 6

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

MariaDB [(none)]> change master to
-> master_host='192.168.1.46', 
-> master_port=3306,
-> master_user='myslave',
-> master_password='123123',
-> master_log_file='mysql-bin.000001',
-> master_log_pos=613;
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> show master status;

  

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

MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)

------------ ---------- -------------- ------------------

   在B服务器my.cnf文件中的[mysqld]下加多上海体育地方内容,只改变server-id值就可以。

重启服务   service  mysqld restart

MariaDB [(none)]> show slave statusG;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.46
Master_User: myslave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 613
Relay_Log_File: relay-log-bin.000002
Relay_Log_Pos: 529
Relay_Master_Log_File: mysql-bin.000001
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: 613
Relay_Log_Space: 821
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: 11
1 row in set (0.00 sec)

| File      | Position | Binlog_Do_DB | Binlog_Ignore_DB |

   server-id=2    

登录mysql,   mysql   -uroot   -p123456  

因此翻看 slave  状态,确定保障 Slave_IO_Running: Yes Slave_SQL_Running: Yes

------------ ---------- -------------- ------------------

   log-bin=mysql-bin

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

在 MySQL  主服务器成立 test db数据库

| lhb.000001 |      537 |              |                  |

   log-bin-index=mysql-bin

此处 master_host ='172.16.1.2',为主mysql的ip

[root@master ~]# mysql -uroot -p123123

------------ ---------- -------------- ------------------

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

start   slave;                       #翻开从劳动

MariaDB [(none)]> show databases;
--------------------
| Database |
--------------------
| information_schema |
| mysql |
| performance_schema |
| test |
| testdb |
--------------------
5 rows in set (0.00 sec)

1 row in set (0.00 sec)

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

show slave statusG;         #展现从劳动处境

在从服务器查看是或不是数据同步

(记录File、Position的值,设置从数据库的时候会用到)

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

如果

[root@slave ~]# mysql -uroot -p123123

2.从数据库

 

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

MariaDB [(none)]> show databases;
--------------------
| Database |
--------------------
| information_schema |
| mysql |
| performance_schema |
| test |
| testdb |
--------------------
5 rows in set (0.00 sec)

修改从数据库的my.cnf,在[mysqld]如下:

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

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

从服务器复制了主服务器上的数据库,主从复制成功。

server-id=2

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

如果Slave_IO_Running: No

 

重启下数据库

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

或是的难点一是主服务和从劳动的server-id,不能为重新;二是授权时绝对要可信赖。grant   replication slave   on  *.*  to  'myslave'@'172.16.1.12'     identified   by  '123456';

注意:

[root@slave ~]# systemctl restart mariadb

   成立客户:mysql> create user 'tongbu'@'%' identified by 'tongbu';

这里172.16.1.12为从服务器的ip

若在 从服务器 start slave; 之后发掘 Slave_IO_Running: No 、Slave_SQL_Running: Yes ,则
需要先 stop slave; 重新 change master to …; 再 start slave;

安装mysql登陆密码(默许景况下登陆密码为空)

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

4)以上两步达成了mysql主从复制,大家要兑现主主,也便是两台mysql ,一台既是主,也是从,另一台既是主也是从,所以我们根据上面包车型大巴配置在两台mysql上做反而的从主配置。

[root@slave ~]# mysqladmin -uroot password '123456'

   删除客户:mysql> drop user '客户名'@'%';

主mysql上,做从陈设 

登入数据库

    A、B服务器顾客创制达成后,测量试验客商互相是不是能够远程登入mysql。

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

[root@slave ~]# mysql -uroot -p123456

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

在里面增多

在从数据库上设置同步

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

[mysqld]

MariaDB [(none)]> slave stop;

  

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

Query OK, 0 rows affected, 1 warning (0.00 sec)

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

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

MariaDB [(none)]> change master to master_host='172.25.0.11',master_user='admin',master_password='123456',master_log_file='lhb.000001',master_log_pos=537;

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

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

Query OK, 0 rows affected (0.03 sec)

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

重启服务   service  mysqld restart

MariaDB [(none)]> slave start;

    命令:mysql> show master statusG

登录mysql,   mysql   -uroot   -p123456  

Query

    如下图

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

MariaDB [(none)]> show slave statusG;

    澳门新濠3559 7

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

看样子以下两行为Yes,表示成功了

   2)在B服务器中安插连接服务器

start   slave;                       #翻开从劳动

Slave_IO_Running: Yes

    mysql> stop slave;

show slave statusG;         #显示从劳动情状

Slave_SQL_Running: Yes

    mysql> change master to

如果

比如你的Slave_IO_Running:Connecting或者No

      -> master_host='192.168.1.7',

Slave_IO_Running: Yes Slave_SQL_Running: Yes

那就是说只怕出现以下几点难题:

      -> master_user='tongbu',

两项为yes,则表示运营从劳动成功。

1.主从多个数据库不通。

      -> master_password='tongbu',

 

2.server-id装置错误。

      -> master_log_file='mysql-bin.000024',

从mysql上,做主配置

3.position设置错误

      -> master_log_pos=154;

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

4.防火墙没安歇只怕没盛放mysql端口

    mysql> start slave;

vim my.cnf

3.测试

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

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

在主数据库上新建数据库,看看是否会同步。

    澳门新濠3559 8

登录mysql,   mysql   -uroot   -p123456  

主数据库上:

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

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

MariaDB [(none)]> show databases;

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

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

--------------------

    命令:mysql> show master statusG

flush   privileges;

| Database          |

    澳门新濠3559 9

显示主服务的动静;

--------------------

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

 show   master  status;

| information_schema |

    mysql> stop slave;

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

| mysql              |

    mysql> change master to

时至明天,两台MySQL服务器的分级配备了主导,即一台既是主又是从,另一台既是从也是主。

| performance_schema |

      -> master_host='192.168.1.8',

5)mysql主主复制测量试验

| test              |

      -> master_user='tongbu',

mysql  -uroot  -p123456 率性登陆一台mysql服务器,

--------------------

      -> master_password='tongbu',

create  database  test  default  character  set  utf8;

4 rows in set (0.01 sec)

      -> master_log_file='mysql-bin.000027',

create  table  test;

从数据库上:

      -> master_log_pos=154;

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

MariaDB [(none)]> show databases;

    mysql> start slave;

显示了数据库和多少表都已经济建设好,能够见见已经联手成功

--------------------

    mysql> show slave statusG 查看Slave_IO_Running和Slave_SQL_Running的值是不是为Yes

6)配置keepalived,实现高可用

| Database          |

 

在主mysql服务器配置 

--------------------

迄今两台mysql数据库互为主导同步安顿完毕。

yum  -y install  keepalived

| information_schema |

 

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

| mysql              |

谬误排查核对:

vim  /etc/keepalived.conf

| performance_schema |

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

| test              |

 检查MySQL> show slave statusG;时,Slave_IO_Running状态为Connecting错误,出现的缘故根本分为三种,要求检查安插:

运营服务,service  keepalived  start

--------------------

 1)网络堵塞  

在从mysql服务器上配置

4 rows in set (0.01 sec)

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

yum  -y install  keepalived

主数据库上创造数据库并查阅

 3)二进制文件地方不对

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

MariaDB [(none)]> create database lhbdb;

2.主备数据冲突或差异形成的不得了

vim  /etc/keepalived.conf

Query OK, 1 row affected (0.00 sec)

 主键矛盾、表已存在等错误代码如1062,1032,1060等,能够在mysql配置文件钦定略过此类分外并持续下条sql同步,那样可以制止过多基本同步的极度中断。张开/etc/ mysql下的my.cnf文件,在[mysqld]后增多如下代码:

本处只写与主mysql服务器差别处

MariaDB [(none)]> show databases;     

 slave-skip-errors = 1062,1032,1060

 

--------------------

  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服务器
}

| Database          |

 mysql >slave stop;

别的与主mysql服务器上配备文件一律

--------------------

 mysql >SET GLOBAL sql_slave_skip_counter = 1;

起步服务,service  keepalived  start

| information_schema |

 mysql >slave start;

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

| lhbdb              |

4.测试

| mysql              |

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

| performance_schema |

同临时间查看另一台的从mysql  的ip,ip a

| test              |

能够见到有一vip ,172.16.1.199

--------------------

我们在测量检验机172.16.1.1上登入从mysql ,    mysql   -uroot   -p123456  -P 3306   -h  172.16.1.12

5 rows in set (0.00 sec)

登入成功,大家做三个 插入数据试验

从库上查看是不是同步

use test;

MariaDB [(none)]> show databases;

insert into  test   values();

--------------------

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

| Database          |

数据同步成功。

--------------------

运维  主mysql服务器上的keepalived服务,  service  keepalived  start

| information_schema |

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

| lhbdb              |

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

| mysql              |

能够看来有一vip ,172.16.1.199

| performance_schema |

做一样的操作 insert into  test   values();

| test              |

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

--------------------

数码同步成功,进而达成两台mysql数据库服务器的高可用及主主数据同步。

5 rows in set (0.01 sec)

                                           

经过能够见到在主数据库上树立数据库lhbdb,则意味成功了。^_^^_^^_^

 

编辑:操作系统 本文来源:增加 MySQL 数据库服务器,   (查看主机名 命

关键词: 澳门新濠3559