mysql5.7linux主从作用,linux下mysql5.7数据库主从同步复制

@TOC

1.修改master配置文件

vim /etc/my.cnf

添加以下代码:

[mysqld]#这里如果已经配置过就忽略

basedir=/usr/local/mysql

datadir=/data/mysqldata

socket=/tmp/mysql.sock

user=mysql

port=3306

# master的配置

server-id=1             # 服务器id (设置唯一标识)

binlog-do-db=employees  # 要给从机同步的库

binlog-ignore-db=mysql  # 不给从机同步的库(多个写多行)

binlog-ignore-db=information_schema

binlog-ignore-db=performance_schema

binlog-ignore-db=sys

log-bin=mysql-bin           # 打开日志(主机需要打开),可以指定绝对路径;

expire_logs_days=90     # 自动清理 90 天前的log文件,可根据需要修改

2.重启mysql服务,查看是否生效

重启mysql服务:

cd /usr/local/mysql/bin  #先切换到mysql的bin目录下

因为我们之前并没有将mysql服务添加到系统服务之中,所以必须要要到mysql的bin目录下启动服务

service mysql restart

服务重启过后,我们登陆mysql,并且查看log_bin是否成功开启:

./mysql -uroot -p密码

show variables like '%log_bin%';

在这里插入图片描述

显示为  on  则表示已经成功开启

3.master数据库上创建主从同步账户:

grant replication slave on *.* to '账户名'@'从机ip' identified by '密码';

flush privileges;

select Host,User,authentication_string from mysql.user;

出现下面的数据就说明账户已经建立:

a516a0840f854a158718db751d05df32.jpg

在这里插入图片描述

4.master锁表

flush table with read lock;     # 主库锁表;默认28800秒,即8小时自动解锁;

show master status G

125faa353aaa4c4d806af4fd1c961cee.jpg

在这里插入图片描述

要和上面那一段一致.

5.拷贝数据库至从库

/usr/local/mysql/bin/mysqldump -uroot -p密码 数据库名称 > /opt/数据库名称.sql (这里代表数据库脚本文件存在的位置)

yum install openssh-clients -y   #相当开启ssh权限

scp /opt/数据库名称.sql root@从机ip地址 :/opt/

e21b20a722104f2e8a0c703f4584b13f.jpg

在这里插入图片描述

6.配置从数据库的配置文件

vim /etc/my.cnf

添加下面的代码:

[mysqld]#如果有已经添加过的,请忽略

basedir=/usr/local/mysql    # mysql程序路径

datadir=/data/mysqldata     # mysql数据目录

socket=/tmp/mysql.sock

user=mysql

port=3306

# slave配置

server-id=2                 # MySQLid 后面2个从服务器需设置不同

skip_slave_start=1          # 复制进程不会随着数据库的启动而启动,重启数据库后需手动启动;

#加上以下参数可以避免更新不及时,SLAVE 重启后导致的主从复制出错。

read_only = 1               # 从库普通账户只读;

master_info_repository=TABLE

relay_log_info_repository=TABLE

#relay_log_recovery=1       # 从机禁止写

#super_read_only=1          # 从机禁止写

重启数据库并且登录:

service mysql restart

cd /usr/local/mysql/bin

./mysql -uroot -p密码

7.新建数据库并且合并

如果没有该数据库的话,需要新建数据库:

create database 数据库名称;

之后再/usr/local/mysql/bin路径下执行以下命令:

./mysql -uroot -p 数据库名称 

这样就已经将数据库拷贝过来了,这是我们可以去Navicat里面查看,发现的确是已经拷贝过来了:

ec19776733f5414c9619b435a7c02e00.jpg

在这里插入图片描述

8.配置主库信息,实现主从同步

定制主数据库数据,如果不是第一次设置的,设置之前需要先停掉slave服务:

stop slave;

change master to

master_host='主服务器ip',     # master的ip

master_user='同步账户',            # 备份用户名

master_password='同步账户密码',        # 密码

master_log_file='日志文件',    # 三.3,且要与master的参数一致

master_log_pos=日志文件偏移量;              # 三.3,且要与master的参数一致

#以上参数必须要和上面的参数保持一致!!!!!

之后我们启动slave服务

start slave;

show slave status G  #查看slave服务

恭喜你不出意外你会出现这样一个错误:

在这里插入图片描述

不用着急,这里我们只需要重新修改一下/etc/my.cnf文件即可,添加以下代码:

java slave-skip-errors = 1032, 1062, 1007 ¨G19G java unlock tables; ¨G20G java use 数据库名称; create table test001(id int auto_increment primary key,name varchar(20) not null); insert into test001 values(null,'will'); insert into test001 values(null,'jim'); insert into test001 values(null,'tom'); select * from 数据库名称.test001; ¨G21G java use 数据库名称; select * from 数据库名称.test001;

在这里插入图片描述

如果你的结果和上述截图一样的话,那么恭喜你,同步复制工作就已经配置好了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值