mysql 5.7 重建slave,mysql5.7主从(master/slave)同步配置实验记录

这是一篇mysql5.7主从(master/slave)同步配置实验记录。

因为需要多个mysql配合实验,所以我使用了docker来解决这个问题(docker的安装参考脚本安装docker)

实验环境:

mysql5.7+docker

1、下载mysql5.7的镜像docker pull mysql:5.7

2、启动两个mysql容器,分别当做master和slave,且端口分别为3306和3307

账号:root

密码:123456docker run --name=mysql-master -it -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

docker run --name=mysql-slave -it -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

3、进入master的容器并登录mysql(2a8是容器id)docker exec -it 2a8 bash

mysql -uroot -p123456

因为主从同步的原理是:主库将每次数据库操作都记录到一个binlog文件中,然后从库连接到主库并读取这个文件依次执行一样的操作。由此达到主从同步的效果。

所以我们要先新建一个从库用来登录主库并读取上文提到的文件的账户,并赋予他相应权限。在这里为了实验方便直接使用root账户并直接给root账户赋予所有的权限。grant all on *.* to 'root'@'%' identified by '123456';

flush privileges;

修改master的配置(有的容器没有vim,可以自行安装一下vim或者用其他文本编辑器)

在master的配置中增加以下配置[mysqld]

log-bin=mysql-bin

server-id=1

binlog-ignore-db=information_schema

binlog-ignore-db=mysql

binlog-ignore-db=performance_schema

binlog-do-db=test

server-id每个数据库必须不一样,一样会有错误

binlog-ignore-db表示不需要同步的数据库

binlog-do-do表示需要同步的数据库

注:如果不需要针对特定的数据库进行同步。则不进行binlog-ignore-db和binlog-do-do的配置,默认会对mysql中的所有数据库进行同步。

配置完了重启数据库,因为这里使用的是docker所以直接重启容器即可docker restart 2a8

重新进入master的mysql命令行并使用以下命令show master status;

会看到以下数据,这里可以将file和position的值记录下来之后有用+------------------+----------+--------------+---------------------------------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                            | Executed_Gtid_Set |

+------------------+----------+--------------+---------------------------------------------+-------------------+

| mysql-bin.000001 |      154 | test         | information_schema,mysql,performance_schema |                   |

+------------------+----------+--------------+---------------------------------------------+-------------------+

1 row in set (0.00 sec)

到这一步master的数据库就配置完毕了

4、配置从库,有些命令跟主库命令基本差不多,这里不多赘述,只记录不同的部分

修改slave数据库的配置[mysqld]

log-bin=mysql-bin

server-id=2

binlog-ignore-db=information_schema

binlog-ignore-db=mysql

binlog-ignore-db=performance_schema

replicate-do-db=test

replicate-ignore-db=mysql

log-slave-updates

slave-skip-errors=all

slave-net-timeout=60

注意:binlog-ignore-db和replicate-do-db以及replicate-ignore-db和主库差不多意思。如果需要全库同步的话不进行配置

然后重启数据库

之后再登录数据库的命令行界面执行stop slave;

change master to master_host='192.168.5.131',master_user='root',master_password='123456',master_port=3306, master_log_file ='mysql-bin.000001', master_log_pos=154;

start slave;

master_host是主库所在的ip

master_user是上头设置的登录账号,这里使用root

master_password是密码

master_port是主库的端口,不配置此项默认3306。注意这里不能加引号,纯数字。

master_log_file和master_log_pos是上头说需要记住的两个数据。

然后可以使用show slave status;

查看从库的配置。

5、至此主从同步设置完毕,可以自行测试一下结果。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值