mysql主从复制优化_MySQL性能优化:实现主从复制

1 主从复制的介绍

概念:使用两台或两台以上的数据库服务器,分别设置主服务器(master)和从服务器(slave),对主服务器的任何操作都会同步到从服务器上。

主要作用:

(1)当主服务器出现问题时,可以切换到从服务器,避免数据丢失。

(2)可以在从服务器上查询数据,降低主服务器压力。

2.实现原理

mysql会将所有修改过数据库的sql语句记录在二进制bin-log日志中。主从复制实际是将多台服务器bin日志的开启,然后主服务器(master)会把执行过的sql语句记录到bin日志中,之后从服务器(slave)读取该日志,在从服务器再把bin日志中记录的sql语句同样的执行一遍。这样从服务器(slave)上的数据就和主服务器(master)同步了。

3 实现步骤:

两台服务器:

主服务器:ip地址:192.168.2.17,系统:Centos,配置文件:my.cnf

从服务器:ip地址:192.168.2.4,系统:Windows,配置文件:my.ini

注意:因为本人是实验用,所以主服务器是虚拟机上配置的linux,从服务器使用的是windows,可以根据自身需求选择linux,配置方式大体一致。

3.1 在主服务器上修改 my.cnf 配置文件

vim /etc/my.cnf

server-id=1#这是数据库ID,此ID是唯一的,主库默认为1,其他从库以此ID进行递增,ID值不能重复,否则会同步出错;

log-bin=mysql-bin#用来设置二进制文件的存储位置和文件名称,如果不指定存储位置,则和数据库文件存储在同一位置

1e72521aff47e2e331717ffff9731cab.png

注意:在my.cnf配置文件里面,配置的区域在[mysqld]与[mysql]之间配置。

3.2 修改完成mysql的配置后,要重启mysql服务使之生效

service mysql restart

3.3 授权一个账号,让从服务器通过该账号读取log-bin日志里面的内容

grant replication slave on *.* to 'lily'@'%' identified by '123456'

93e7f061eddafc7f2c832ac255ae3ea8.png

3.4 赋予从库权限账号,允许用户在主库上读取日志,也就是Slave机器读取File权限

grant FILE on *.* to 'lily'@'%' identified by '123456';

8d65a16e8d2c202a7b655e16b0904efc.png

3.5 查看最新的log-bin日志,记录主服务器里面的最新的二进制的名称和pos位置

show master status

f8a440ae10ece02ffb343ad27c90bf33.png

注意:到这一步就禁止对主服务器执行增删改的操作,避免产生新的日志,从服务器配置成功再对主服务器进行操作。

4 配置从服务器

4.1 修改从服务器的数据库配置文件

注意:这里从服务器使用的是windows操作系统,mysql的配置文件是my.ini。server-id 该值不能和主服务器的相同

7614d2e66e8c2aad4bc6a85c091d448f.png

修改完成mysql的配置后,要重启mysql服务使之生效

net stop mysql

4.2 停止从服务器

stop slave

2890dd458fdd756fd88bb7e71b94632d.png

4.3 开始配置

在mysql命令行中输入如下指令:

CHANGE MASTER TO

MASTER_HOST='192.168.2.17',#主服务器的ip地址

MASTER_USER='lily',#主服务器授权用户的账号名

MASTER_PASSWORD='123456',#主服务器授权用户的密码

MASTER_LOG_FILE='mysql-bin.000002',#上文中记录的二进制日志文件的名称

MASTER_LOG_POS=897#上文中记录的pos位置

d5b93b0beb85b71c101032014b29ffbd.png

4.4 启动从服务器

start slave

0e780eb05e9521c9cf133efc52b1268a.png

4.4 验证配置是否成功

show slave status\G;

若下面红框处两个地方皆为yes,则配置成功!

82e50aa50f3e49c2f590890e431bbed6.png

5 测试主从复制

5.1 在主服务器创建一个数据库,并添加一张表,插入数据

create database demo_lily;

use demo_lily;

insert into user values(1, 'lily'), (2, 'cily');

5d46709e7060002f11987c73bfa97ef1.png

4023ea9da4a424ee10daaf76cc5a05d1.png

5.2 在从服务器上面查看是否有插入的数据记录

707c53a978c06266c5eb4d9d32b29f9a.png

6 常见问题

(1)执行授权账户命令grant replication slave on . to 'lily'@'%' identified by '123456' 的时候出现如下提示:

dcf34e29ef25bc6fb561da3bd30457f1.png

这时候只需要执行如下命令,刷新一下权限表:

flush privileges

之后再次执行授权命令即可。

(2)出现 Slave_IO_Running:Connecting 的情况:

90e0d6cf5a80474d04ea68498e15971e.png

造成这个提示的原因比较多,而本人是因为linux防火墙开启,直接拦截了3306端口,导致连接不上。这时候可以设置主服务器防火墙放行3306端口:

sudo firewall-cmd --list-all#查看防火墙端口开放情况

firewall-cmd --zone=public --add-port=3306/tcp --permanent#永久开放3306端口

或者直接关闭防火墙:

systemctl stop firewalld.service

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值