mysql的安装和主从同步配置

mysql的主从同步也是数据库中比较常见的问题。自己也动手做了下主从同步,现记录一下。

环境说明:

主节点:10.0.0.61
从节点:10.0.0.71
mysql版本:5.7.24
linux:ubuntu16.04

一.安装mysql

1.主节点上执行以下命令

    1. sudo apt-get install mysql-server

  2. apt-get install mysql-client

  3.  sudo apt-get install libmysqlclient-dev

安装完后使用如下命令查看是否安装成功

sudo netstat -tap | grep mysql

看到如下信息:

carter@bogon:~$ sudo netstat -tap | grep mysql
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN      778/mysqld      
tcp6       0      0 bogon:mysql             bogon:52514             ESTABLISHED 778/mysqld 

说明安装成功。

2.在从节点上执行相同的操作安装mysql。

二.mysql主从同步设置

MySQL的复制原理以及流程
基本原理流程,3个线程以及之间的关联:

主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中;

从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中;

从:sql执行线程——执行relay log中的语句;

主从复制配置过程:
主节点:

启用二进制日志。
为当前节点设置一个全局唯一的server_id。
创建有复制权限的用户账号 REPLIACTION SLAVE ,REPLIATION CLIENT。
从节点:

启动中继日志。
为当前节点设置一个全局唯一的server_id。
使用有复制权限的用户账号连接至主节点,并启动复制线程。

1.编辑主节点的配置文件

sudo vi /etc/mysql/my.cnf

添加如下配置

[mysqld]

log-bin = mysql-bin

server-id =1

innodb-file-per-table =ON

skip_name_resolve=ON

注意:[mysqld]这个不能漏掉,否则重启mysql服务会报错。

2.重启服务器,并连接mysql

mysql -u root -p123456

3.查看主节点日志文件是否开启

1)二进制日志是否开启

mysql> show global variables like '%log%';

看是否如下

2)查看二进制列表

mysql> show master logs;

3)查看主节点server_id

mysql> show global variables like '%server%';

4.主节点创建有复制权限用户repluser/replpass

grant replication slave on *.* to 'repluser'@'10.0.0.71' identified by 'replpass';

grant replication CLIENT on *.* to 'repluser'@'10.0.0.71' identified by 'replpass';

5.刷新权限

flush privileges

主节点的配置就完成了。

下面是从节点的配置

6.编辑从节点的配置文件

sudo vi /etc/mysql/my.cnf

添加如下配置:

[mysqld]
relay-log=relay-log
relay-log-index=relay-log.index
server-id=2
innodb_file_per_table=ON
skip_name_resolve=ON

[mysqld]不能漏掉

7.重启从节点,连接mysql

mysql -uroot -p123456

8.查看从节点配置是否生效

1)中继日志是否开启

show global variables like '%log%';

2)查看server信息

show global variables like '%server%';

9.在从节点配置访问主节点的参数信息
添加 主节点主机,访问主节点的用户名及密码,主节点二进制文件信息。
注意:主节点的二进制文件一定要是二进制列表中的最后一个二进制文件。

先切换到主节点,查看主节点上的日志文件

可以看到主节点上的最新日志文件为mysql-bin.000002,大小306

然后在从节点上执行

CHANGE MASTER TO MASTER_HOST='10.0.0.61',MASTER_USER='repluser',MASTER_PASSWORD='replpass', MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=306;

MASTER_HOST设置主节点IP,MASTER_USER为复制权限用户,MASTER_PASSWORD复制权限用户密码

MASTER_LOG_FILE为主节点最新日志文件,MASTER_LOG_POS为日志文件File_size

注意:上面截图为第一次操作截图,实际执行命令为第二次操作。

10.查看从节点状态信息

查看从节点的复制线程,IO线程 和 SQL 线程。

show slave status \G;

可以看到IO线程 和 SQL 线程状态都为NO,即关闭状态。

11.启动复制线程

start slave;

12.再次查看检查从节点的复制线程是否开启。

show slave status \G;

可以看到IO线程和SQL线程都已经开启。

主从同步配置到此就完成了,下面来测试下是否真正生效。

三.测试主从同步设置

1.在主节点上创建数据库,并查看二进制日志信息。

create database test;

show master status;

2.在从节点上查看二进制日志文件,再查看数据库是否复制成功。

show slave status \G;

show databases;

可以看到主节点创建的数据库成功复制到从节点的数据库。

四.安装过程中注意的问题

1.安装过程中出现了一个问题,就是操作到最后一步发现创建主节点创建数据库没有复制到从节点,于是分析是不是从节点连接主节点数据库失败导致无法复制,执行以下命令:

mysql -u repluser -p -h 10.0.0.61 -P3306

出现如下问题:

上面的问题与用户名密码无关,如果是密码的问题不会是上面的提示。

最后发现是主节点安装mysql的时候默认设置了绑定本地本地IP地址127.0.0.1,导致其他节点无法访问主节点mysql。

vi /etc/mysql/mysql.conf.d/mysqld.cnf

不同版本的mysql可能配置文件有所差别,发现以下配置:

将bInd-address该行注释以后,重启mysql问题解决。

参考:https://blog.csdn.net/daicooper/article/details/79905660

https://blog.csdn.net/fhxpp_27/article/details/8442555/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值