linux mysql主从同步时间_Linux下安装MySQL及MySQL主从同步配置

一.mysql安装

1.使用命令 rpm -qa|grep mariadb 查看是否存在mariadb

2. 使用 rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 命令删除mariadb,避免造成冲突

d982d94a38ed95b37724c4192aa5a376.png

4.接下来编辑yum的源,vim /etc/yum.repos.d/mysql57.repo ,复制下面内容

[mysql57]

name=MySQL 5.7 Community Server

baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

caf481fb363f9dbb1fc354021c0acd16.png

然后使用yum install mysq-community-server -y 命令进行下载mysql

下载好后使用 service mysqld status 查看mysql状态,未启动状态则使用 service mysqld start状态启动mysql

60708668b3d4586c19c53e526a1ca3fc.png

下图看到mysql的服务已经启动

046eb47c97c7430161c0420bdced6b0a.png

初始密码保存在 /var/log/mysqld.log 这个文件下面,通过vi或者vim命令可以找到,也可以通过 grep "temporary password" /var/log/mysqld.log 命令直接读出密码

02414499f3d6a81a130d9f26b78124a3.png

ecae446d33d6a52e28d7e64555916fdd.png

使用root账号登陆mysql,输入mysql -u root -p (mysql -u 用户名 -p) 命令之后回车再输入密码

ecf12e7fe5280d843bdd63e35c7eb777.png

刚安装完如果防火墙没关闭或者MySQL不允许外部链接的情况下进行外部连接会出现下面的错误,所以需要授权IP和关闭防火墙

bc97e8f9fdc37d30e14611848372b4c2.png

所以我们先重新设置下新密码和授权IP,进入了mysql不管做任何操作,都必须先重置密码,不然会出现下面错误,我们使用 SET PASSWORD = PASSWORD("新密码"); 重置密码,mysql每个语句都必须由";" 分号结尾,初始化密码不能太简单,否则修改不了,如果想用简单的密码,可以先运行 set global validate_password_policy=LOW;  命令,使密码复杂度校验降低

83118bbc7bf724e01ed50037b6ea310b.png

36369e028d4e1fd8661637b441b5f4ed.png

de3230103ab5566eb76c6d74eb17bac5.png

重置密码之后可以执行其他的MySQL命令,

1.先利用 show databases; 查看有哪些数据库

2.我们需要用到mysql这个库,则使用 use mysql; 命令进入mysql库,

3.使用show tables; 可以查看当前库下面的表

4.使用 select user,host from user;查询用户授权的地址,初始都是localhost

5.使用 update user set host="%"; 命令把所有用户授权任意IP可以连接(个人使用可以设置成%,正式环境不推荐)

6.最后需要使用  flush privileges; 来使修改后的host生效

9d31ac07f903858fae2c05b8e2967a4b.png

7f7d2468e4c4ca2e6c9100cdb5846c88.png

29fd59a065e089f028fa3729f1d165d1.png

到这里为止,Linux上安装mysql5.7就结束了

二,主从配置

主从配置的主要原理是主库每操作一条DDL或者DML语句,都会向日志写入执行果的sql,从库也不断向日志读取sql执行,下面开始配置

我的主库ip:192.168.65.128

我的从库ip:192.168.65.129

主库配置:

修改 /etc/my.cnf 文件

abdef3a4c454855cae8dc412f0cc03a6.png

[mysqld]

# 配置主从数据库(主)

log-bin=mysql-bin

server-id=2

binlog-ignore-db=information_schema     #不需要同步的配置

binlog-ignore-db=mysql                  #可以配置多个不需要同步的库

binlog-do-db=test                       #配置需要同步的库,也可以配置多个

从库配置:

修改 /etc/my.cnf 文件

30fa0e180cb1da7228e9c8b082dff191.png

[mysqld]

log-bin=mysql-bin #开启日志

server-id=3

replicate-do-db=test #需要跟从的数据

log-slave-updates

slave-skip-errors=all

slave-net-timeout=60

然后重启2个数据库 service mysqld restart

接着来登陆主库配置数据同步账号( grant授权账号)

分别执行 grant replication slave on *.* to "slave"@"%" identified by "slave@123456789"; 和 flush privileges;,再进入mysql执行 select user,host from mysql.user; 看看从库使用的账号是否创建成功

6104aa5f0eb2b5053da9edb1b6224e01.png

1fc36489ffe033eb2f6a5b8ecbac89d3.png

然后使用 show master status; 命令查询主库信息

1d665d078d219fa0233d257dbb19998e.png

再登陆从库配置数据同步账号(配置主库的IP,账号密码,pos日志文件)

执行完 change master to master_host="192.168.65.128",master_user="slave",master_password="slave@123456789",master_log_file="mysql-bin.000001",master_log_pos=726;

再执行  start slave; 开启从库线程

执行 show slave statusG; 可以查看到主库的ip,port以及是否连接成功的信息,当下图2个yes都出现的时候说明连接成功了,如果出现了  Slave_IO_Running: Connecting 这样的信息基本可以确定是密码 、pos 、 防火墙没关闭这三个原因其中的一种

165b8d9be327a8f1d154a30264e29c1b.png

上面已经成功配置了MySQL的主从关系,接下来使用工具测试下,下面的master和slave分别是我的主库和从库,我们在主库上面简单地新增一个test表,可以看到从库也新增了一个表

24395e798c7583ce9d9e8980b05ca3e5.png

61d620206ecb50ae2bb07145fae37b00.png

6316665455760f39b09e80a301d93e46.png

到目前为止MySQL的安装和主从同步配置也算完成了。主从同步的原理是 master 每执行一条sql都会向binlog文件写入执行过的DDL或者DML语句

27b63a1a040db1d61ed8b574dd947923.png,然后slave会向日志文件读取sql,再执行sql,所以这里由三个线程完成,一个是master向日志记录执行过的sql的IO线程,一个是slave向日志文件读取sql的IO线程,一个是slave读取完日志信息再执行sql的sql线程(两个IO线程,一个SQL线程)

58d90b4e71b147dcd6a6dcb94adb8a21.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 主从复制是一种非常重要且常用的数据同步方式,对于数据库管理员来说,保证主从同步的正常运行对于数据库的可靠性和稳定性都是非常重要的。当我们在使用 MySQL 主从同步时,如果发现 slave_io_running:no 的情况,那么意味着 MySQL 从服务器的 IO 线程停止了工作。 IO 线程是 MySQL 主从复制中非常重要的一个组件,它的作用是从主服务器上读取二进制数据,并将其传输到从服务器上。如果 IO 线程出现问题,那么意味着从服务器无法从主服务器获取新的数据,从而导致从服务器无法同步主服务器的数据。 在出现 slave_io_running:no 的情况时,我们需要立即查找 IO 线程出现问题的原因,并进行解决。以下是常见的 IO 线程故障原因及对应解决方案: 1. 网络问题。如果主服务器和从服务器之间的网络出现了问题,那么 IO 线程就无法正常工作。我们可以通过检查网络连接以及网络质量来解决这个问题。 2. DNS 解析错误。如果主服务器和从服务器之间使用的是主机名进行通信,那么可能出现 DNS 解析错误的情况。我们需要检查主机名是否正确,以及 DNS 解析是否正常。 3. 权限问题。如果从服务器的用户权限不正确,那么也可能会导致 IO 线程无法正常工作。我们需要检查从服务器的用户权限是否足够,以及是否正确配置了主从服务器之间的连接信息。 4. 数据库配置问题。如果从服务器的数据库配置不正确,那么也可能会导致 IO 线程无法正常工作。我们需要检查从服务器的数据库配置是否正确,并根据需要进行更改。 总的来说,当出现 slave_io_running:no 的情况时,我们需要立即对问题进行排查和解决,以便尽快恢复 MySQL 主从同步的正常运行。在排查问题过程中,我们需要充分了解 MySQL 主从复制的工作原理,熟悉常见的故障原因,并加强对 MySQL 数据库的日常维护和管理工作,以提高数据库的可靠性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值